Hi, On 2020-01-27 15:42:06 +0000, Floris Van Nee wrote: > > > He reported that the problem went away with the patches applied. The > > following pgbench SELECT-only result was sent to me privately: > > > > before: > > single: tps = 30300.202363 (excluding connections establishing) > > all cores: tps = 1026853.447047 (excluding connections establishing) > > > > after: > > single: tps = 31120.452919 (excluding connections establishing) > > all cores: tps = 1032376.361006 (excluding connections establishing) > > > > (Actually, he tested something slightly different -- he inlined > > _bt_compare() in his own way instead of using my 0002-*, and didn't use the > > 0003-* optimization at all.) > > > > Apparently this was a large multi-socket machine. Those are hard to > > come by.
I'd not say "large multi socket", 2 x XeonGold 5215, 192GB RAM. > I could do some tests with the patch on some larger machines. What > exact tests do you propose? Are there some specific postgresql.conf > settings and pgbench initialization you recommend for this? And was > the test above just running 'pgbench -S' select-only with specific -T, > -j and -c parameters? The above test was IIRC: PGOPTIONS='-c vacuum_freeze_min_age=0' pgbench -i -q -s 300 with a restart here, and a SELECT SUM(pg_prewarm(oid, 'buffer')) FROM pg_class WHERE relkind IN ('r', 'i', 't'); after starting, and then PGOPTIONS='-c default_transaction_isolation=repeatable\ read' pgbench -n -M prepared -P1 -c100 -j72 -T1000 -S The freeze, restart & prewarm are to have fairer comparisons between tests, without needing to recreate the database from scratch. Greetings, Andres Freund