benchmark_v3.txt

text/plain

Filename: benchmark_v3.txt
Type: text/plain
Part: 0
Message: Re: Improve pg_stat_statements scalability
Machine:
  CPUs: 16 (8 cores, 2 threads/core, 1 socket)
  CPU model: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
  RAM: 29Gi

Build configurations:
  release:        buildtype=release, cassert=false, ndebug=true

Benchmark:
  For each test: pg_stat_statements_reset(), then pgbench (see per-test command below).
  While pgbench is running:
    - sample pg_stat_activity wait events (WHERE state = 'active') every 1s
    - query pg_stat_statements (entries, hot/cold calls) every 20s
      hot_calls = sum(calls) FILTER (WHERE query LIKE '%hot%')
      cold_calls = sum(calls) FILTER (WHERE query NOT LIKE '%hot%' AND query IS NOT NULL)


=== churn (release, simple) ===
  pgbench -f bench_churn.sql -c 64 -j 16 -T 300 -M simple
+---------------+-------------------------+----------------------------------+----------+
|               | patch                   | upstream                         | delta    |
+---------------+-------------------------+----------------------------------+----------+
| TPS           |                  206959 |                           165830 |   +24.8% |
| entries       |                    4968 |                             4947 |          |
| hot_ent(avg)  |                    1000 |                             1000 |          |
| cold_ent(avg) |                    3878 |                             3883 |          |
| hot_cal(avg)  |                25601611 |                         19872536 |          |
| cold_cal(avg) |                     805 |                             4458 |          |
| deallocs      |                11935433 |                            38501 |          |
| top_wait      | LWLock:PgStatsDSA (502) | LWLock:pg_stat_statements (7757) |          |
+---------------+-------------------------+----------------------------------+----------+

=== light_churn (release, simple) ===
  pgbench -f bench_light_churn.sql -c 64 -j 16 -T 300 -M simple
+---------------+--------------+---------------------------------+----------+
|               | patch        | upstream                        | delta    |
+---------------+--------------+---------------------------------+----------+
| TPS           |       242167 |                          238139 |    +1.6% |
| entries       |         4992 |                            4839 |          |
| hot_ent(avg)  |         1000 |                            1000 |          |
| cold_ent(avg) |         3988 |                            3900 |          |
| hot_cal(avg)  |     36228974 |                        36942948 |          |
| cold_cal(avg) |         9545 |                           56178 |          |
| deallocs      |       215079 |                             864 |          |
| top_wait      | none         | LWLock:pg_stat_statements (320) |          |
+---------------+--------------+---------------------------------+----------+

=== multi_stmt (release, simple) ===
  pgbench -f bench_multi_stmt.sql -c 64 -j 16 -T 300 -M simple
+---------------+--------------+--------------+----------+
|               | patch        | upstream     | delta    |
+---------------+--------------+--------------+----------+
| TPS           |        18186 |        17815 |    +2.0% |
| entries       |            6 |            6 |          |
| deallocs      |            0 |            0 |          |
| top_wait      | none         | none         |          |
+---------------+--------------+--------------+----------+

=== select1 (release, simple) ===
  pgbench -f bench_select1.sql -c 64 -j 16 -T 300 -M simple
+---------------+--------------+--------------+----------+
|               | patch        | upstream     | delta    |
+---------------+--------------+--------------+----------+
| TPS           |       286444 |       289616 |    -1.0% |
| entries       |            4 |            4 |          |
| deallocs      |            0 |            0 |          |
| top_wait      | none         | none         |          |
+---------------+--------------+--------------+----------+