performance_schemaによる秒間接続数の性能差

前回はperformance_schema(以下p_s)の無効、有効、有効でsetup_instrumentsテーブルのENABLED列を全てNOにした場合の性能測定を行いました。こちらは結果としてsetup_instrumentsテーブルのENABLED列を全てNOにするとp_sをOFFにした場合とあまり性能が変わらない所まで改善する事が確認出来ました。

p_sが有効にすると性能が下がるというのは松信さんのブログでも書かれているのでご存知の方も多いかと思います。今回はsetup_instrumentsテーブルの設定のより秒間接続数に差が出るか確認を行いました。

ベンチマーク環境は基本前回と同じです。但し、リモートからTCPにより接続する一般的なWEB・DBサーバの環境となるようにしています。今回はNICの情報等も追記しました。

今回も同様に設定ファイルのperformance_schema=ON/OFFを切り替えてテストしています。sysbenchのバージョンは松信さんが実行しているであろうものと同じ0.4.12を使用し、オプションも基本同じ設定としています。oltp-table-sizeのみ変更していますがoltp-dist-type=specialなのであまり意味は無いかもしれません。

ベンチマークのオプション

今回は1パターンしか行っていないので以下内容を設定変更後、MySQLを再起動し、特にバッファに載せる処理は行わず、即時実行としています。

$ /usr/local/sysbench-0.4.12/bin/sysbench \
  --test=oltp \
  --oltp-table-size=4500000 \
  --max-requests=1000000 \
  --mysql-table-engine=innodb \
  --db-ps-mode=disable \
  --mysql-engine-trx=yes \
  --oltp-read-only \
  --oltp-skip-trx \
  --oltp-dist-type=special \
  --oltp-connect-delay=0 \
  --oltp-reconnect-mode=query \
  --db-driver=mysql \
  --mysql-user=sbtest \
  --mysql-password=パスワード \
  --mysql-db=sbtest \
  --mysql-host=サーバIPアドレス \
  --mysql-port=3306 \
  --num-threads=100 \
  run

ベンチマークパターン

今回は以下4パターンで取得しています。接続数関連なのでthread_cache_size=0にしたパターンも行っています。

  • ケース1: p_s OFF
  • ケース2: p_s OFF(thread_cache_size=0)
  • ケース3: p_s ON (setup_instrumentsテーブルのENABLEDが全てOFF)
  • ケース4: p_s ON (setup_instrumentsテーブルのENABLEDが全てOFF, thread_cache_size=0)

ベンチマーク結果

秒間接続数
ケース1 19428
ケース2 15971
ケース3 16575
ケース4 14718

まとめ

残念ながら秒間接続数はsetup_instrumentsテーブルに関わらず減少することが分かりました。thread_cache_sizeが十分に大きければthread_cache_size=0でp_s OFFよりは速いようです。

上記のスコアはtpsにすると1000〜1300程度になります。使用しているサーバに対してsysbench 0.5でUNIX ドメインソケット経由でかつ接続を維持する場合は5600〜6000tpsぐらい出るのでネットワーク越しだとだいぶ接続の負荷により性能が落ちる事が分かります(persistentは可能なら使うべき)。

TCP経由でリモートから、接続維持(--oltp-reconnect-modeがデフォ)だとどのぐらい出るのか気になる方もいるかもしれませんが、1GbpsのNICだと帯域を先に使い切ってしまい正確な値は分かっていません。帯域を使い切っている状態であっても4000tpsぐらいは出ていたと記憶しています。

秒間で10kを超える接続/切断が行われる環境はそう多くないとは思いますがこういった所まで気を配る必要がある環境であればp_sはOFFにした方が良いでしょう。

おまけ

ベンチマーク中にmpstat -P ALLすると以下のようになります。

サーバ側
03:46:03 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
03:46:06 AM  all   28.67    0.00    8.97    0.08    0.00    6.19    0.00    0.00   56.09
03:46:06 AM    0   52.20    0.00   13.56    0.00    0.00   19.32    0.00    0.00   14.92
03:46:06 AM    1   52.38    0.00   13.27    0.34    0.00   17.69    0.00    0.00   16.33
03:46:06 AM    2   50.17    0.00   13.22    0.00    0.00   18.98    0.00    0.00   17.63
03:46:06 AM    3   48.79    0.00   14.88    0.00    0.00    0.00    0.00    0.00   36.33
03:46:06 AM    4   51.19    0.00   11.86    0.00    0.00   20.00    0.00    0.00   16.95
03:46:06 AM    5   50.51    0.00   11.95    0.00    0.00   18.43    0.00    0.00   19.11
03:46:06 AM    6   29.11    0.00   12.67    0.00    0.00    0.00    0.00    0.00   58.22
03:46:06 AM    7   23.21    0.00   10.58    0.00    0.00    0.00    0.00    0.00   66.21
03:46:06 AM    8   17.75    0.00    6.48    0.00    0.00    0.00    0.00    0.00   75.77
03:46:06 AM    9   11.74    0.00    4.70    0.00    0.00    0.00    0.00    0.00   83.56
03:46:06 AM   10    7.43    0.00    3.72    0.00    0.00    0.00    0.00    0.00   88.85
03:46:06 AM   11    4.71    0.00    2.69    0.00    0.00    0.00    0.00    0.00   92.59
03:46:06 AM   12   41.55    0.00   12.16    0.34    0.00    0.00    0.00    0.00   45.95
03:46:06 AM   13   37.97    0.00   11.19    0.00    0.00    0.00    0.00    0.00   50.85
03:46:06 AM   14   35.27    0.00    9.59    0.34    0.00    0.00    0.00    0.00   54.79
03:46:06 AM   15   45.08    0.00   10.51    0.34    0.00   18.64    0.00    0.00   25.42
03:46:06 AM   16   50.17    0.00   10.51    0.00    0.00   17.29    0.00    0.00   22.03
03:46:06 AM   17   47.62    0.00   11.22    0.00    0.00   18.71    0.00    0.00   22.45
03:46:06 AM   18   10.51    0.00    8.81    0.00    0.00    0.00    0.00    0.00   80.68
03:46:06 AM   19   11.19    0.00   11.86    0.00    0.00    0.00    0.00    0.00   76.95
03:46:06 AM   20    1.34    0.00    0.67    0.00    0.00    0.00    0.00    0.00   97.99
03:46:06 AM   21    5.32    0.00    4.98    0.00    0.00    0.00    0.00    0.00   89.70
03:46:06 AM   22    4.70    0.00    5.37    0.00    0.00    0.00    0.00    0.00   89.93
03:46:06 AM   23    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

クライアント側
03:45:57 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
03:46:00 AM  all   16.18    0.00   31.05    0.04    0.00   20.08    0.00    0.59   32.06
03:46:00 AM    0   13.04    0.00   24.41    0.00    0.00   42.47    0.00    1.00   19.06
03:46:00 AM    1   15.59    0.00   30.17    0.00    0.00   27.46    0.00    0.34   26.44
03:46:00 AM    2   14.63    0.00   28.91    0.00    0.00   26.53    0.00    1.36   28.57
03:46:00 AM    3   16.39    0.00   29.43    0.00    0.00   25.08    0.00    0.00   29.10
03:46:00 AM    4   18.58    0.00   36.49    0.00    0.00    8.78    0.00    0.68   35.47
03:46:00 AM    5   17.73    0.00   35.79    0.00    0.00    7.36    0.00    0.33   38.80
03:46:00 AM    6   17.51    0.00   33.00    0.00    0.00    6.40    0.00    0.67   42.42
03:46:00 AM    7   15.67    0.00   29.67    0.33    0.00   17.00    0.00    0.67   36.67