Yes. I have a lot of connections and they maybe coming together and doing the same update statement without partition key on the partition table.
If it were waiting on a pg_locks lock, the semop should be coming from ProcSleep, not from LWLockAcquire, shouldn't it?
I'm guessing he has a lot of connections, and each connection is locking each partition in shared mode in rapid fire, generating spin-lock or cache-line contention.
Cheers,
Jeff