Re: Excessive CPU usage in StandbyReleaseLocks()
| От | Andres Freund | 
|---|---|
| Тема | Re: Excessive CPU usage in StandbyReleaseLocks() | 
| Дата | |
| Msg-id | 20180620222921.qyosyutyzdfozv6m@alap3.anarazel.de обсуждение исходный текст | 
| Ответ на | Re: Excessive CPU usage in StandbyReleaseLocks() (David Rowley <david.rowley@2ndquadrant.com>) | 
| Ответы | Re: Excessive CPU usage in StandbyReleaseLocks() | 
| Список | pgsql-hackers | 
Hi, On 2018-06-21 00:25:03 +1200, David Rowley wrote: > On 19 June 2018 at 17:43, Thomas Munro <thomas.munro@enterprisedb.com> wrote: > > The problem is that StandbyReleaseLocks() does a linear search of all > > known AccessExclusiveLocks when a transaction ends. Luckily, since > > v10 (commit 9b013dc2) that is skipped for transactions that haven't > > taken any AELs and aren't using 2PC, but that doesn't help all users. > > Good to see this getting fixed. My original patch [1] to fix this was > more along the lines of yours From that discussion I don't really understand why that wasn't pursued further. The revision committed, clearly was just continuing to use the wrong datastructure, and had obvious issues with complexity, just in a somewhat narrower situation? > only I partitioned the List in an array indexed by the xid mod size of > array. I had done this as I thought it would be faster than a hash > table and would likely see the locks spread evenly over the table. > IIRC Andres complained and said I should use a hashtable, which I see > you've done. It's hard to believe the hashtable is a meaningful bottleneck here. The primary also uses a hashtable, except it's partitioned & shared, and thus protected by locks. Also much larger. So it's hard to believe that we'd need a custom built datastructure to speedup replay... Greetings, Andres Freund
В списке pgsql-hackers по дате отправления: