GA

2026/03/29

今度こそ自力ビルドのMySQL 9.7.0-erと公式ビルドMySQL 9.7.0-erの測り比べ

前回 とは趣向を変えて、自力ビルドと公式ビルドの差を試す。

自力ビルドは大したオプションを与えずにコンパイルするだけ。

$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ../mysql-9.7.0-er
$ make -j4
$ sudo make install
$ cd /usr/local/mysql

$ bin/mysqld --no-defaults --initialize-insecure --lower_case_table_names=1
$ bin/mysqld --no-defaults --lower_case_table_names=1 --innodb-dedicated-server=1 --log-error-verbosity=3 --innodb-monitor-enable=all --daemonize

前回と同じoltp_read_writeで比較。

$ sysbench --mysql-host=10.0.0.177 --mysql-user=sbtest oltp_read_write --table_size=1000000 --tables=10 --time=60 --report-interval=1 --threads=8 prepare

$ sysbench --mysql-host=10.0.0.177 --mysql-user=sbtest oltp_read_write --table_size=1000000 --tables=10 --time=300 --report-interval=1 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 1
Report intermediate results every 1 second(s)
Initializing random number generator from current time

Initializing worker threads...

Threads started!

[ 1s ] thds: 1 tps: 91.91 qps: 1855.27 (r/w/o: 1300.79/369.66/184.83) lat (ms,95%): 12.52 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 1 tps: 95.05 qps: 1898.92 (r/w/o: 1330.65/378.18/190.09) lat (ms,95%): 12.30 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 1 tps: 92.00 qps: 1844.01 (r/w/o: 1288.01/372.00/184.00) lat (ms,95%): 12.52 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 1 tps: 85.00 qps: 1698.98 (r/w/o: 1189.98/339.00/170.00) lat (ms,95%): 25.74 err/s: 0.00 reconn/s: 0.00
[ 5s ] thds: 1 tps: 89.00 qps: 1777.02 (r/w/o: 1246.02/353.00/178.00) lat (ms,95%): 25.28 err/s: 0.00 reconn/s: 0.00
[ 6s ] thds: 1 tps: 98.00 qps: 1959.99 (r/w/o: 1372.00/392.00/196.00) lat (ms,95%): 11.87 err/s: 0.00 reconn/s: 0.00
[ 7s ] thds: 1 tps: 97.00 qps: 1937.00 (r/w/o: 1355.00/388.00/194.00) lat (ms,95%): 11.87 err/s: 0.00 reconn/s: 0.00
[ 8s ] thds: 1 tps: 97.00 qps: 1947.02 (r/w/o: 1361.01/392.00/194.00) lat (ms,95%): 11.65 err/s: 0.00 reconn/s: 0.00
[ 9s ] thds: 1 tps: 97.00 qps: 1936.00 (r/w/o: 1358.00/384.00/194.00) lat (ms,95%): 11.87 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 1 tps: 98.00 qps: 1962.99 (r/w/o: 1371.99/395.00/196.00) lat (ms,95%): 11.87 err/s: 0.00 reconn/s: 0.00

..
[ 295s ] thds: 1 tps: 110.00 qps: 2196.00 (r/w/o: 1536.00/440.00/220.00) lat (ms,95%): 9.73 err/s: 0.00 reconn/s: 0.00
[ 296s ] thds: 1 tps: 107.00 qps: 2158.01 (r/w/o: 1512.01/432.00/214.00) lat (ms,95%): 9.91 err/s: 0.00 reconn/s: 0.00
[ 297s ] thds: 1 tps: 109.00 qps: 2179.98 (r/w/o: 1525.99/436.00/218.00) lat (ms,95%): 9.73 err/s: 0.00 reconn/s: 0.00
[ 298s ] thds: 1 tps: 108.00 qps: 2159.99 (r/w/o: 1511.99/432.00/216.00) lat (ms,95%): 9.91 err/s: 0.00 reconn/s: 0.00
[ 299s ] thds: 1 tps: 108.00 qps: 2155.02 (r/w/o: 1511.01/428.00/216.00) lat (ms,95%): 9.73 err/s: 0.00 reconn/s: 0.00
[ 300s ] thds: 1 tps: 107.00 qps: 2145.00 (r/w/o: 1499.00/432.00/214.00) lat (ms,95%): 9.73 err/s: 0.00 reconn/s: 0.00
SQL statistics:
    queries performed:
        read:                            448252
        write:                           128072
        other:                           64036
        total:                           640360
    transactions:                        32018  (106.73 per sec.)
    queries:                             640360 (2134.52 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0011s
    total number of events:              32018

Latency (ms):
         min:                                    8.39
         avg:                                    9.37
         max:                                   68.71
         95th percentile:                       10.46
         sum:                               299966.56

Threads fairness:
    events (avg/stddev):           32018.0000/0.00
    execution time (avg/stddev):   299.9666/0.00

前回 とはベンチマーククライアントマシンが(論理スレッド数とメモリサイズは同じはずなのに)変わっていて結果が盛大に乖離したので、9.7公式ビルド版も測り直してまとめ。ついでに9.6.0の自前ビルドも測った。

9.6.0(公式バイナリ) 9.7.0-er(公式バイナリ) 9.7.0-er(自力ビルド) 9.6.0(自力ビルド)
min 7.65 7.41 8.39 8.00
avg 8.46 8.29 9.37 8.91
max 91.45 46.73 68.71 346.42
95%ile 9.73 10.09 10.46 10.46
QPS 2363.80 2412.58 2134.52 2244.01

5.5の頃に測った感じの「公式バイナリの方が自力ビルドよりも数%レイテンシが良い」(gccの最新版とかiccとか使ってようやくトントンくらいまで行くくらい)は今も健在で、それがPGOによって数%から10%以上に差が開いた感じかしらん。

なお自前ビルドでもPGOを有効にしたいなら @i_rethi さんの記事がやり方を解説してくれている(ので、自分ではやらないつもり)

MySQL 8.0.36でPGOを使ってビルド、性能比較してみる - hiroi10のブログ

0 件のコメント :

コメントを投稿