The previous results I shared for Postgres and sysbench on 30-core server are not to be trusted. I used huge pages and a too-big value for vm.nr_hugepages. This caused some odd behavior. So I reduced the Postgres buffer pool to 150G. vm.nr_hugepages to 85000 and repeated the benchmarks.
Refer to the previous post for more details. The summary is that I ran in-memory sysbench for many versions of Postgres on a c2-standard-60 server.
The benchmarks tries to answer two questions:
- How does perf change from Postgres version 11 to version 15?
- What is the impact from compiler optimizations?
- The o3_native_lto build has the best performance as it did in the previous post. It provides ~5% more throughput.
- For perf changes from 11.19 to 15.2
- Point queries get about 3% more QPS in 15.2
- Range queries get about 8% more QPS in 15.2
- Writes get about 4% less QPS in 15.2
- The range query and write microbenchmarks have more variance. See the Results for all versions section for more details.
A description of how I run sysbench is here. The sysbench microbenchmarks were run for 20 clients, 600 seconds per microbenchmark using 4 tables with 50M rows per table. The test database was <= 64G and fits in memory.
- range queries
- range-covered-pk_range=100 - relative throughput is 1.26
- range-covered-si_range=100 - relative throughput is 1.27
- read-only.pre_range=10 - relative throughput is 1.14
- read-only_range=10 - relative throughput is 1.17
- scan_range=100 - relative throughput for is 1.12
- read-write_range=100 - relative throughput is 0.88
- update-linst_range=100 - relative throughput is 1.24
- update-one_range=100 - relative throughput is 0.80
- write-only_range=100 - relative throughput is 0.89