HACKERS[PROPOSAL] split ProcArrayLock into multiple parts

From: "Jim Van Fleet" <vanfleet(at)us(dot)ibm(dot)com>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: HACKERS[PROPOSAL] split ProcArrayLock into multiple parts
Date: 2017-06-05 19:30:47
Message-ID: OFBAB24999.8DB8C8DE-ON86258136.006AEB24-86258136.006B30C8@notes.na.collabserv.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I have been experimenting with splitting the ProcArrayLock into parts.
That is, to Acquire the ProcArrayLock in shared mode, it is only necessary
to acquire one of the parts in shared mode; to acquire the lock in
exclusive mode, all of the parts must be acquired in exclusive mode. For
those interested, I have attached a design description of the change.

This approach has been quite successful on large systems with the hammerdb
benchmark. With a prototype based on 10 master source and running on
power8 (model 8335-GCA with 2sockets, 20 core)
hammerdb improved by 16%; On intel (Intel(R) Xeon(R) CPU E5-2699 v4 @
2.20GHz, 2 socket, 44 core) with 9.6 base and prototype hammerdb improved
by 4%. (attached is a set of spreadsheets for power8.

The down side is that on smaller configurations (single socket) where
there is less "lock thrashing" in the storage subsystem and there are
multiple Lwlocks to take for an exclusive acquire, there is a decided
downturn in performance. On hammerdb, the prototype was 6% worse than the
base on a single socket power configuration.

If there is interest in this approach, I will submit a patch.

Jim Van Fleet

Attachment Content-Type Size
compare_10base_toPrototype.ods application/octet-stream 39.5 KB
patchDescription.odt application/octet-stream 25.1 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Petr Jelinek 2017-06-05 19:32:06 Re: Why does logical replication launcher set application_name?
Previous Message Andres Freund 2017-06-05 19:10:05 Re: shm_toc_lookup API