Re: [HACKERS] HACKERS[PROPOSAL] split ProcArrayLock into multipleparts - Mailing list pgsql-hackers

From Sokolov Yura
Subject Re: [HACKERS] HACKERS[PROPOSAL] split ProcArrayLock into multipleparts
Date
Msg-id a67985f7-c1d2-4133-96b3-978ef9aecd65@email.android.com
Whole thread Raw
In response to Re: [HACKERS] HACKERS[PROPOSAL] split ProcArrayLock into multipleparts  (Sokolov Yura <y.sokolov@postgrespro.ru>)
Responses Re: [HACKERS] HACKERS[PROPOSAL] split ProcArrayLock into multiple parts  ("Jim Van Fleet" <vanfleet@us.ibm.com>)
Re: [HACKERS] HACKERS[PROPOSAL] split ProcArrayLock into multiple parts  ("Jim Van Fleet" <vanfleet@us.ibm.com>)
List pgsql-hackers
Excuse me, Jim.

I was tired and misunderstand proposal: I thought of ProcArray sharding, but proposal is about ProcArrayLock sharding.

BTW, I just posted improvement to LWLock:

https://www.postgresql.org/message-id/2968c0be065baab8865c4c95de3f435c%40postgrespro.ru

Would you mind to test against that and together with that?

5 июня 2017 г. 11:11 PM пользователь Sokolov Yura <y.sokolov@postgrespro.ru> написал:
Hi, Jim.

How do you ensure of transaction order?

Example:
- you lock shard A and gather info. You find transaction T1 in-progress.
- Then you unlock shard A.
- T1 completes. T2, that depends on T1, also completes. But T2 was on shard B.
- you lock shard B, and gather info from.
- You didn't saw T2 as in progress, so you will lookup into clog then and will find it as commited.

Now you see T2 as commited, but T1 as in-progress - clear violation of transaction order.

Probably you've already solved this issue. If so it would be great to learn the solution.


5 июня 2017 г. 10:30 PM пользователь Jim Van Fleet <vanfleet@us.ibm.com> написал:
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




pgsql-hackers by date:

Previous
From: Sokolov Yura
Date:
Subject: Re: [HACKERS] HACKERS[PROPOSAL] split ProcArrayLock into multipleparts
Next
From: "Jim Van Fleet"
Date:
Subject: Re: [HACKERS] HACKERS[PROPOSAL] split ProcArrayLock into multiple parts