前回 とは趣向を変えて、自力ビルドと公式ビルドの差を試す。
自力ビルドは大したオプションを与えずにコンパイルするだけ。
$ 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 さんの記事がやり方を解説してくれている(ので、自分ではやらないつもり)
0 件のコメント :
コメントを投稿