I use benchmarksql with more than 200 clients on pg 9.3.3. when the test is going on, I collect all the process stack.
Ifound about 100 processes are blocked by btree insert. Another 100 are blocked by xloginsert.
Does btree has bad performance in concurrency scenarios?
Sum:66
#0 0x00007f8273a77627 in semop () from /lib64/libc.so.6
#1 0x000000000060cda7 in PGSemaphoreLock ()
#2 0x00000000006511a9 in LWLockAcquire ()
#3 0x00000000004987f7 in _bt_relandgetbuf ()
#4 0x000000000049c116 in _bt_search ()
#5 0x0000000000497e13 in _bt_doinsert ()
#6 0x000000000049af52 in btinsert ()
#7 0x000000000072dce4 in FunctionCall6Coll ()
#8 0x000000000049592e in index_insert ()
#9 0x0000000000590ac5 in ExecInsertIndexTuples ()
Sum:36
#0 0x00007f8273a77627 in semop () from /lib64/libc.so.6
#1 0x000000000060cda7 in PGSemaphoreLock ()
#2 0x00000000006511a9 in LWLockAcquire ()
#3 0x0000000000497e31 in _bt_doinsert ()
#4 0x000000000049af52 in btinsert ()
#5 0x000000000072dce4 in FunctionCall6Coll ()
#6 0x000000000049592e in index_insert ()
#7 0x0000000000590ac5 in ExecInsertIndexTuples ()