Upgrade to Pro — share decks privately, control downloads, hide ads and more …

sysbench-mysql-tester

tom--bo
August 19, 2019

 sysbench-mysql-tester

tom--bo

August 19, 2019
Tweet

More Decks by tom--bo

Other Decks in Technology

Transcript

  1. sysbench-mysql-tester
    ~ MySQL 8.0以降のベンチマーク ~
    tom__bo @MyNA(2019/8/19)

    View Slide

  2. はじめに
    • ベンチマークの⽬的
    • 1機能・変数に着⽬した研究
    • 内部構造・挙動の正確な理解が前提
    • 特定のワークロード・アクセスパターンに限定
    • ベンチマーク中のモニタリングや詳細なメトリクスが必須
    • 統合的な理解
    • 内部構造・ワークロードはある程度抽象化・⼀般化
    • 代表的・⼀般的なワークロードを想定
    • ベンチマーク中の詳細なメトリクスは必要があれば検証
    • ex) Version間のperformance⽐較, HW変更, PM⇔VM移⾏

    View Slide

  3. はじめに
    • ベンチマークの⽬的
    • 1機能・変数に着⽬した研究
    • 内部構造・挙動の正確な理解が前提
    • 特定のワークロード・アクセスパターンに限定
    • ベンチマーク中のモニタリングや詳細なメトリクスが必須
    • 統合的な理解
    • 内部構造・ワークロードはある程度抽象化・⼀般化
    • 代表的・⼀般的なワークロードを想定
    • ベンチマーク中の詳細なメトリクスは必要があれば検証
    • ex) Version間のperformance⽐較, HW変更, PM⇔VM移⾏
    ←今回の⽬的

    View Slide

  4. ベンチマークの⾃動化できていますか?
    • ⾃動化までの壁
    • そもそも本番環境に近い負荷を作ることが難しい
    • ⼿動でないとやりづらいことが多い
    • my.cnfの書き換え(sshアクセス)
    • 再起動
    • 結果の集計(ツールのアウトプットの整理)

    View Slide

  5. ベンチマークの⾃動化できていますか?
    • ⾃動化までの壁
    • そもそも本番環境に近い負荷を作ることが難しい
    • ⼿動でないとやりづらいことが多い
    • my.cnfの書き換え(sshアクセス)
    • 再起動
    • 結果の集計(ツールのアウトプットの整理)
    sysbenchのlua scriptで
    頑張る
    8.0の新機能で対応
    sysbenchのparser,
    sm-parserを使って
    シリアライズ

    View Slide

  6. ベンチマークの⾃動化できていますか?
    • ⾃動化までの壁
    • そもそも本番環境に近い負荷を作ることが難しい
    • ⼿動でないとやりづらいことが多い
    • my.cnfの書き換え(sshアクセス)
    • 再起動
    • 結果の集計(ツールのアウトプットの整理)
    sysbenchのlua scriptで
    頑張る
    8.0の新機能で対応
    sysbenchのparser,
    sm-parserを使って
    シリアライズ
    sysbench-mysql-tester

    View Slide

  7. MySQL 8.0の新機能
    • 8.0でcloud環境向けに⼊ったコマンド
    • SET PERSIST
    • RESET PERSIST
    • RESTART
    • ssh等のリモートアクセスを介した再起動やconfigファイルの
    書き換えが不要になる!

    View Slide

  8. ベンチマーク⾃動化ツール作りました
    • sysbench-mysql-tester
    • https://github.com/tom--bo/sysbench-mysql-tester

    View Slide

  9. sysbench-mysql-testerとは
    • sysbenchを使ったMySQLベンチマークの⾃動化ツール
    • シナリオ単位でBackendDB(MySQL)にConfigを追加すれば、
    ⾃動でベンチマークを実⾏
    • シナリオ
    • ベンチマークを実⾏する1セット
    • 実験回数, sysbenchのシナリオ, イベントごとのmysql commandを指定
    • sysbenchの結果をパースしてBackendDBに保存
    • シナリオの前後、prepare(sysbench)の後でスクリプトを実⾏
    できる
    • 詳細な検証前の網羅的な検証・集計が可能

    View Slide

  10. Target MySQL
    Overview
    sysbench-mysql-
    tester
    Backend MySQL
    confの設定, 再起動
    benchmark (sysbench)
    ベンチマークシナリオの読み込み
    結果の保存
    Target MySQL
    Target MySQL

    View Slide

  11. • 各イベントで実⾏するScriptを
    定義
    • before_senario
    • after_prepare
    • after_senario
    • Script, 実験回数(N), parameterを
    指定してsenarioを定義
    • smtの起動
    • 結果の取得
    ⼤まかな流れ
    Before Senario
    Prepare (sysbench)
    After Prepare
    Run (sysbench)
    After Senario
    Restart
    Restart
    x N
    Senario
    Set Variables
    Sleep (120sec)

    View Slide

  12. デモ
    (後⽇ブログを書くので、ブログかREADMEを⾒てください)

    View Slide

  13. collation (oltp_read_write)
    innodb_buffer_pool_size = 1G innodb_buffer_pool_size = 40G

    View Slide

  14. 今後の課題
    • UIがない (現状DBに直insert)
    • daemon化
    • set variables部分の登録が⾯倒
    • versionの変化によるparameter変化への追従が厳しい

    View Slide

  15. END

    View Slide