Linuxパフォーマンスの最適化(2)-sysbenchストレステストツール

1.sysbenchの概要

1.sysbenchの概要

sysBenchは、モジュール式のクロスプラットフォームのマルチスレッドベンチマークテストツールであり、主にさまざまなシステムパラメータでデータベースの負荷を評価およびテストするために使用されます。sysbenchは、次のテストを提供します。
(1)CPUパフォーマンス
(2)ディスクIOパフォーマンス
(3)スケジューラーパフォーマンス
(4)メモリ割り当てと伝送速度 
(5)POSIXスレッドパフォーマンス
(6)データベースパフォーマンス(OLTPベンチマークテスト)      
sysbenchはMySQLをサポートします。 PostgreSQL、Oracleデータベース。

2.sysbenchのインストール

ビルドビルド依存関係のインストール:

yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel openssl-devel
yum -y install postgresql-devel

ソースコードのダウンロード:
git clone https://github.com/akopytov/sysbench.git
構成ツールの生成:
autogen.sh
構成オプション:
-with-pgsql:PostgreSQLのサポート
--with-oracle:Oracleのサポート
--without-mysql:MySQLのサポートなし
configure [options]
コンパイル:
make -j
インストール:
make install

3.sysbenchコマンド

sysbench [options]... [testname] [command]
testnameは、sysbenchによって実行されるテストのタイプです。オプションには、fileio、cpu、memory、threads、mutexが含まれ、-testパラメーターで指定できます。
コマンドは、準備、実行、クリーンアップなど、sysbenchによって実行されるコマンドです。準備はテスト用のデータを準備し、実行は正式なテストを実行し、クリーンアップはテストの完了後にデータベースをクリーンアップします。sysbench
の一般的なパラメータオプションは次のとおりです
。--threads:スレッドの数。2に設定すると、sysbenchは2つのスレッドを開始し、それぞれ素数の計算を実行します。デフォルト値は1です。
--time:実行時間(秒単位)。5に設定されている場合、sysbenchは5秒以内に素数の計算を循環し、各ラウンドはイベントであり、デフォルト値は10です。
--events:イベントの最大数。100に設定すると、100のイベントが完了すると、時間があっても実行が停止することを意味します。デフォルト値は0です。これは、イベントの数に制限がないことを意味します。
--forced-shutdown = STRING:タイムアウト強制割り込み。デフォルトはオフです。--thread-stack-size = SIZE:スレッドスタックサイズ、デフォルトは64K
--thread-init-timeout = N:スレッド初期化待機時間、デフォルトは30秒
--rate = N:平均トランザクションレート、0は制限なしを意味します。デフォルトは0です。
--report-interval = N:テスト進捗レポート出力の時間間隔。0はオフを意味し、デフォルトは0です。
--report-checkpoints = [LIST、...]:完全な統計をダンプし、指定した時点ですべてのカウンターをリセットします。パラメーターは、レポートチェックポイントを実行する必要があるテストの開始からの経過時間を示す、コンマ区切りの値のリストです。 (すぐに)。デフォルトでは、レポートチェックポイントはオフ[オフ]になっています。
--debug [= on | off]:デバッグ情報を出力します。デフォルトはオフです
。--validate [= on | off]:検証チェックを可能な限り実行します。デフォルトはオフです。
--help [= on | off]:ヘルプ情報を出力して終了します。デフォルトはオフです
。--version [= on | off]:バージョン情報を出力して終了します。デフォルトはオフです
。--config-file = FILENAME:コマンドラインオプションファイル
--luajit-cmd = STRING:LuaJIT制御コマンドを実行します

2、CPUパフォーマンスベンチマークテスト

1.コマンドオプション

sysbench --test=cpu help
--cpu-max-prime:生成されるプライム数の上限。3に設定すると、2、3、5(1〜5を計算するために5回)を意味し、デフォルト値は10000です。

2.CPUパフォーマンステスト

sysbench cpu --cpu-max-prime=20000 --threads=8 --time=30 run
Linuxパフォーマンスの最適化(2)-sysbenchストレステストツール
プライム番号の制限:20000、各スレッドによって生成されるプライム番号の上限は
1秒あたり2000イベント:650.7、すべてのスレッドは1秒あたり650.74イベントを完了します
合計時間:10.0017s、10秒かかり
ますイベントの合計数:6510,10秒単位で、すべてのスレッドが合計6510イベント
を完了しました最小:3.03、1つのイベントを完了するために必要な最小時間は3.03秒
平均:3.07、すべてのイベントに必要な平均時間は
最大3.07ミリ秒:3.27、1つのイベントを完了するために必要な最大時間は3.27ミリ秒でした
95パーセンタイル:3.13、イベントの95%は3.13秒とミリ秒以内に完了します
合計:19999.91、各スレッドは10秒かかり、2スレッドのスタック時間は20秒です
イベント(avg / stddev):3255.0000 / 44.00 //平均ごと各スレッドは3255イベントを完了し、標準偏差は44
実行時間(avg / stddev):10.0000 / 0.00 //各スレッドは平均10秒かかり、標準偏差は0です。

3、メモリ負荷テスト

 1.コマンドオプション

sysbench  --test=memory help
--memory-block-size = SIZE:テストメモリブロックのサイズ。デフォルトは1Kです。
--memory-total-size = SIZE:データ送信の合計サイズ。デフォルトは100Gです。
--memory-scope = STRING:グローバルスコープとローカルスコープを含むメモリアクセスのスコープ。デフォルトはグローバルです。
--memory-hugetlb = [on | off]:HugeTLBプールからメモリを割り当てるかどうか、デフォルトはオフです。
--memory-oper = STRING:読み取り、書き込み、なしを含むメモリ操作のタイプ。デフォルトは書き込みです
。--memory-access-mode = STRING:seqとrndを含むメモリアクセスモード。デフォルトはseqです。

2.メモリ負荷テスト

sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=seq run
12スレッドを開始し、メモリブロックサイズは8Kで、読み取りと書き込みを順番に実行します
Linuxパフォーマンスの最適化(2)-sysbenchストレステストツール
sysbench memory --threads=12 --memory-block-size=8K --memory-total-size=100G --memory-access-mode=rnd run
Linuxパフォーマンスの最適化(2)-sysbenchストレステストツール

第4に、ディスクIOパフォーマンスベンチマークテスト

1.コマンドオプション

 sysbench --test=fileio help
--file-num = N:生成されたテストファイルの数。デフォルトは128です。
--file-block-size = N:テストで使用されるファイルブロックのサイズ。ディスクをInnoDBストレージエンジンに対してテストする場合は、16384(InnoDBストレージエンジンページのサイズ)に設定できます。デフォルトは16384です。
--file-total-size = SIZE:作成されたテストファイルの合計サイズ。デフォルトは2Gです。
--file-test-mode = STRING:ファイルテストモード、seqwr(シーケンシャル書き込み)、seqrewr(シーケンシャル読み取りおよび書き込み)、seqrd(シーケンシャル読み取り)、rndrd(ランダム読み取り)、rndwr(ランダム書き込み)、rndrw(ランダム読み取りおよび書き込み) )。
--file-io-mode = STRING:ファイル操作モード、同期(同期)、非同期(非同期)、fastmmap(高速mmap)、slowmmap(低速mmap)、デフォルトは同期です。
--file-async-backlog = N:各スレッドキューに対応する非同期操作の数。デフォルトは128です。
--file-extra-flags = STRING:ファイルを開くときのオプション、およびAPI関連のパラメーター。
--file-fsync-freq = N:fsync関数を実行する頻度。fsyncは主にディスクファイルを同期します。0はfsync関数が使用されないことを意味し、デフォルト値は100です。
--file-fsync-all = [on | off]:書き込み操作が実行されるたびにfsyncを実行します。デフォルトはオフです。
--file-fsync-end = [on | off]:テストの最後にfsync関数を実行します。デフォルトはオンです。
--file-fsync-mode = STRING:ファイル同期関数の選択とAPI関連のパラメーター。複数のオペレーティングシステムが異なるfdatasyncをサポートしているため、fdatasyncは推奨されず、デフォルトはfsyncです。
--file-merged-requests = N:ほとんどの場合、マージできるIO要求の数。デフォルトは0です。
--file-rw-ratio = N:テスト中の読み取りと書き込みの比率。デフォルトは1.5、つまり3:2です。

2.データの準備

sysbench fileio --file-num=16 --file-total-size=2G prepare

3.テストを実行します

sysbench fileio --file-total-size=2G --file-test-mode=rndrd --time=180 --threads=16 --file-num=16 --file-extra-flags=direct --file-fsync-freq=0 --file-block-size=16384 run
Linuxパフォーマンスの最適化(2)-sysbenchストレステストツール

4.データをクリーンアップします

sysbench fileio --file-num=16 --file-total-size=2G cleanup
テストデータをクリーンアップします

5つのマルチスレッドスケジューリングベンチマークテスト

1.コマンドオプション

sysbench  --test=mutex help 
--mutex-num = N:配列の相互除外の合計サイズ。デフォルトは4096です。
--mutex-locks = N:各スレッドのミューテックスロックの数。デフォルトは50000です。
--mutex-loops = N:内部ミューテックスの空のループの数。デフォルトは10000です。

2.マルチスレッドスケジューリングテスト

sysbench mutex --threads=8 --mutex-num=2000 --mutex-locks=10000 --mutex-loops=5000 run
Linuxパフォーマンスの最適化(2)-sysbenchストレステストツール

6、POSTマルチスレッドベンチマークテスト

 1.コマンドオプション

 sysbench  --test=threads help
--thread-yields = N:各リクエストの圧力を指定します。デフォルトは1000です
。--thread-locks = N:各スレッドのロック数を指定します。デフォルトは8です。

2.マルチスレッドテスト

sysbench threads --threads=8 --thread-yields=100 --thread-locks=2 run
Linuxパフォーマンスの最適化(2)-sysbenchストレステストツール

7、OLTPベンチマークテスト

1.コマンドオプション

sysbench --test=oltp help
--oltp-test-mode = STRING:テストモード、simple、complex、nontrx、sp、デフォルトはcomplexです。
--oltp-reconnect-mode = STRING:再接続モード、セッションは再接続を使用しません、トランザクションは各トランザクション後に再接続し、クエリは各SQLステートメントの実行後に再接続し、ランダムに各トランザクションの再接続を選択しますモード、デフォルトはセッションです。
--oltp-sp-name = STRING:デフォルトで空のストアドプロシージャの名前
--oltp-read-only = [on | off]:読み取り専用モード。更新、削除、および挿入ステートメントは実行できず、デフォルトはオフです
--oltp-skip-trx = [on | off]:begin / commitステートメントを省略し、デフォルトはオフです。
--oltp-range-size = N:クエリ範囲。デフォルトは100です。--oltp-point-selects = N:ポイント選択の数[10]
--oltp-simple-ranges = N単純範囲の数[1]
-oltp-sum-ranges = N合計範囲の数[1]
- -oltp-order-ranges = N個の順序付けられた範囲[1]
-oltp-distinct-ranges = N個の個別の範囲[1]
-oltp-index-updates = N個のインデックス更新[1]
--oltp-non-index-updates = N個の非インデックス更新[1]
-oltp-nontrx-mode =非トランザクション実行モードのSTRINGクエリタイプ{select、update_key、update_nokey、insert、delete} [select]
--oltp-auto-inc = [on | off] AUTO_INCREMENTがオンになっているかどうか。デフォルトはオンです
。--oltp-connect-delay = Nデータベースに接続するマイクロ秒数。デフォルトは10000です
。--oltp-user-delay-min = N各リクエストの最小待機時間。単位はmsです。デフォルトは0です
。--oltp-user-delay-max = N各リクエストの最大待機時間。単位はmsです。デフォルトは0です
。--oltp-table-name = STRINGテストで使用されるテーブル名。デフォルトはsbtest--
oltp-table-size = Nテストテーブルのレコード数です。デフォルトは10000--
oltp-dist-type = STRINGランダム番号{均一(均一分布)、ガウス(ガウス分布)、特殊(空間分布)}です。デフォルトは特別です
--oltp-dist-iter = N生成された数の反復数。デフォルトは12です
。--oltp-dist-pct = N値のパーセンテージは「特別」と見なされます(特別な配布の場合)。デフォルトは1
-oltp-dist-res = N'special 'パーセンテージ値です。デフォルトは75です

2.Luaスクリプト

/usr/share/sysbench/bulk_insert.lua
/usr/share/sysbench/oltp_common.lua
/usr/share/sysbench/oltp_delete.lua
/usr/share/sysbench/oltp_insert.lua
/usr/share/sysbench/oltp_point_select.lua
/usr/share/sysbench/oltp_read_only.lua
/usr/share/sysbench/oltp_read_write.lua
/usr/share/sysbench/oltp_update_index.lua
/usr/share/sysbench/oltp_update_non_index.lua
/usr/share/sysbench/oltp_write_only.lua
/usr/share/sysbench/select_random_points.lua
/usr/share/sysbench/select_random_ranges.lua

3.データを準備します

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare
実行モードは複雑で、10個のテーブルが使用され、各テーブルには100,000個のデータがあり、クライアントの同時スレッド数は10、実行時間は120秒、レポートは10秒ごとに生成されます。

4.テストを実行します

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

5.データをクリーンアップします

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 cleanup

おすすめ

転載: blog.51cto.com/9291927/2593580
おすすめ