Re: Speed up Clog Access by increasing CLOG buffers
Jesper Pedersen <jesper.pedersen@redhat.com>
Hi, On 03/30/2016 07:09 PM, Andres Freund wrote: > Yes. That looks good. My testing shows that increasing the number of > buffers can increase both throughput and reduce latency variance. The > former is a smaller effect with one of the discussed patches applied, > the latter seems to actually increase in scale (with increased > throughput). > > > I've attached patches to: > 0001: Increase the max number of clog buffers > 0002: Implement 64bit atomics fallback and optimize read/write > 0003: Edited version of Simon's clog scalability patch > > WRT 0003 - still clearly WIP - I've: > - made group_lsn pg_atomic_u64*, to allow for tear-free reads > - split content from IO lock > - made SimpleLruReadPage_optShared always return with only share lock > held > - Implement a different, experimental, concurrency model for > SetStatusBit using cmpxchg. A define USE_CONTENT_LOCK controls which > bit is used. > > I've tested this and saw this outperform Amit's approach. Especially so > when using a read/write mix, rather then only reads. I saw over 30% > increase on a large EC2 instance with -btpcb-like@1 -bselect-only@3. But > that's in a virtualized environment, not very good for reproducability. > > Amit, could you run benchmarks on your bigger hardware? Both with > USE_CONTENT_LOCK commented out and in? > > I think we should go for 1) and 2) unconditionally. And then evaluate > whether to go with your, or 3) from above. If the latter, we've to do > some cleanup :) > I have been testing Amit's patch in various setups and work loads, with up to 400 connections on a 2 x Xeon E5-2683 (28C/56T @ 2 GHz), not seeing an improvement, but no regression either. Testing with 0001 and 0002 do show up to a 5% improvement when using a HDD for data + wal - about 1% when using 2 x RAID10 SSD - unlogged. I can do a USE_CONTENT_LOCK run on 0003 if it is something for 9.6. Thanks for your work on this ! Best regards, Jesper
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