Re: Improve catcache/syscache performance.

tushar <tushar.ahuja@enterprisedb.com>

From: tushar <tushar.ahuja@enterprisedb.com>
To: Andres Freund <andres@anarazel.de>, pgsql-hackers@postgresql.org
Date: 2017-09-26T10:41:58Z
Lists: pgsql-hackers
On 09/22/2017 11:45 AM, Andres Freund wrote:
> Here's a variant that cleans up the previous changes a bit, and adds
> some further improvements:

I tested with different pgbench options with  master v/s patch and found an improvement.  I have applied 001 and 003 patch on PG Head ,patch 0002 was already committed.

Virtual Machine configuration - Centos 6.5 x64 / 16 GB RAM / 8 VCPU core processor

Scaling factor=30

pgbench -M prepared -T 200 postgres

PG Head       -  tps = 902.225954 (excluding connections establishing).
PG HEAD+patch -  tps = 1001.896381 (10.97+% vs. head)


pgbench -M prepared -T 300 postgres

PG Head       -  tps = 920.108333 (excluding connections establishing).
PG HEAD+patch -  tps = 1023.89542 (11.19+% vs. head)

pgbench -M prepared -T 500 postgres

PG Head       -  tps = 995.178227 (excluding connections establishing)
PG HEAD+patch -  tps = 1078.32222 (+8.34% vs. head)


Later I modified the create_many_cols.sql file (previously attached) and instead of
only using int  , I mixed it with varchar/int4/numeric/float and run pgbench
with different time duration


pgbench -M prepared -f /tmp/pgbench-many-cols.sql -T 300  postgres

PG Head       -  tps =  5540.143877 (excluding connections establishing).
PG HEAD+patch -  tps =  5679.713493 (2.50+% vs. head)


pgbench -M prepared -f /tmp/pgbench-many-cols.sql -T 500  postgres

PG Head       -  tps = 5519.212709 (excluding connections establishing).
PG HEAD+patch -  tps = 5967.059155 (8.11+% vs. head)


pgbench -M prepared -f /tmp/pgbench-many-cols.sql -T 700  postgres

PG Head       -  tps = 5640.314495(excluding connections establishing).
PG HEAD+patch -  tps = 6012.223147 (6.59+% vs. head)

-- regards,tushar
EnterpriseDBhttps://www.enterprisedb.com/
The Enterprise PostgreSQL Company





Commits

  1. Improve sys/catcache performance.

  2. Add pg_noinline macro to c.h.

  3. Add inline murmurhash32(uint32) function.