Re: Speed up Clog Access by increasing CLOG buffers
Amit Kapila <amit.kapila16@gmail.com>
Attachments
- group_update_clog_v9_log.patch (application/octet-stream) patch v9
- group_update_clog_v9_slots.patch (application/octet-stream) patch v9
On Wed, Nov 2, 2016 at 9:01 AM, Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote: > On 11/01/2016 08:13 PM, Robert Haas wrote: >> >> On Mon, Oct 31, 2016 at 5:48 PM, Tomas Vondra >> <tomas.vondra@2ndquadrant.com> wrote: >>> > > The one remaining thing is the strange zig-zag behavior, but that might > easily be a due to scheduling in kernel, or something else. I don't consider > it a blocker for any of the patches, though. > The only reason I could think of for that zig-zag behaviour is frequent multiple clog page accesses and it could be due to below reasons: a. transaction and its subtransactions (IIRC, Dilip's case has one main transaction and two subtransactions) can't fit into same page, in which case the group_update optimization won't apply and I don't think we can do anything for it. b. In the same group, multiple clog pages are being accessed. It is not a likely scenario, but it can happen and we might be able to improve a bit if that is happening. c. The transactions at same time tries to update different clog page. I think as mentioned upthread we can handle it by using slots an allowing multiple groups to work together instead of a single group. To check if there is any impact due to (a) or (b), I have added few logs in code (patch - group_update_clog_v9_log). The log message could be "all xacts are not on same page" or "Group contains different pages". Patch group_update_clog_v9_slots tries to address (c). So if there is any problem due to (c), this patch should improve the situation. Can you please try to run the test where you saw zig-zag behaviour with both the patches separately? I think if there is anything due to postgres, then you can see either one of the new log message or performance will be improved, OTOH if we see same behaviour, then I think we can probably assume it due to scheduler activity and move on. Also one point to note here is that even when the performance is down in that curve, it is equal to or better than HEAD. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Use group updates when setting transaction status in clog.
- baaf272ac908 11.0 landed
- ccce90b39867 10.0 landed
-
Improve 64bit atomics support.
- e8fdbd58fe56 10.0 landed
-
Add ProcArrayGroupUpdate wait event.
- d4116a771925 10.0 landed
-
Make the different Unix-y semaphore implementations ABI-compatible.
- be7b2848c6d8 10.0 cited
-
Fix broken ALTER INDEX documentation
- 2143f5e12790 9.6.0 cited
-
Code and docs review for commit 3187d6de0e5a9e805b27c48437897e8c39071d45.
- d12e5bb79bb5 9.6.0 cited
-
Partition the freelist for shared dynahash tables.
- 44ca4022f3f9 9.6.0 cited
-
Correct StartupSUBTRANS for page wraparound
- 481725c0ba73 9.6.0 cited
-
Make idle backends exit if the postmaster dies.
- ac1d7945f866 9.6.0 cited
-
contrib/sslinfo: add ssl_extension_info SRF
- 49124613f134 9.6.0 cited
-
Reduce ProcArrayLock contention by removing backends in batches.
- 0e141c0fbb21 9.6.0 cited
-
Fix `make installcheck` for serializable transactions.
- 253de7e1eb9a 9.6.0 cited
-
Lockless StrategyGetBuffer clock sweep hot path.
- d72731a70450 9.5.0 cited
-
Reduce sinval synchronization overhead.
- b4fbe392f8ff 9.2.0 cited