これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド sysbench です。
プログラム:
NAME
sysbench - モジュール式、クロスプラットフォーム、マルチスレッドのベンチマーク ツールです。
SYNOPSIS
シスベンチ [共通オプション] --テスト=名前 [テストオプション] command
シスベンチ [{-h | - 助けて} | {{-v | - バージョン}]
DESCRIPTION
SysBench は、OS を評価するためのモジュール式、クロスプラットフォーム、マルチスレッドのベンチマーク ツールです
集中的な負荷の下でデータベースを実行するシステムにとって重要なパラメータ。
このベンチマーク スイートの目的は、システムのパフォーマンスに関する印象をすぐに得ることです。
複雑なデータベース ベンチマークを設定したり、データベースをインストールしたりする必要はありません。
すべて。
現在の機能では、次のシステム パラメータをテストできます。
・ファイルI/O性能
· スケジューラのパフォーマンス
・メモリ割り当てと転送速度
· POSIX スレッドの実装パフォーマンス
· データベースサーバーのパフォーマンス
デザインはとてもシンプルです。 SysBench は指定された数のスレッドを実行します。
リクエストを並行して実行します。 リクエストによって生成される実際のワークロードは、
指定されたテストモード。 リクエストの合計数または合計時間を制限できます。
ベンチマーク、またはその両方。
利用可能なテスト モードはコンパイル済みモジュールによって実装され、SysBench は次のように設計されています。
新しいテストモードの追加が簡単になります。 各テスト モードには追加の (または
ワークロード固有) オプション。
OPTIONS
--スレッド数
作成するワーカー スレッドの総数 (デフォルト: 1)
--最大リクエスト数
リクエストの合計数の制限。 0 は無制限を意味します (デフォルト: 10000)
--最大時間
合計実行時間の制限 (秒単位)。 0 (デフォルト: 0)
--スレッドスタックサイズ
各スレッドのスタックのサイズ (デフォルト: 32K)
--init-rnd
テスト前に乱数ジェネレータをタイマーから初期化するかどうかを指定します
開始 (デフォルト: オフ)
- テスト
実行するテストモードの名前 必須
- デバッグ
より多くのデバッグ情報を出力します (デフォルト: オフ)
- 検証
可能な場合はテスト結果の検証を実行します (デフォルト: オフ)
- 助けて
一般的な構文または --test で指定されたテスト モードに関するヘルプを出力し、終了します
- バージョン
プログラムのバージョンを表示します。
-パーセンタイル
SysBench は、処理されたすべてのリクエストの実行時間を測定して統計を表示します
最小実行時間、平均実行時間、最大実行時間などの情報。 ほとんどのベンチマークでは、
また、あるパーセンタイルに一致するリクエストの実行時間の値を知るのにも役立ちます (例:
95% パーセンタイルは、最も長いリクエストの 5% をドロップし、
残りの最大値)。
このオプションを使用すると、カウントするクエリ実行時間のパーセンタイル ランクを指定できます。
(デフォルト:95)
- バッチ
現在の結果を定期的にダンプします (デフォルト: オフ - 「バッチ」セクションも参照してください)
モード")
--バッチ遅延
バッチダンプ間の遅延 (秒単位) (デフォルト: 300 - 「バッチ」セクションも参照してください)
モード")
すべての数値に注意してください。 サイズ オプション( --スレッドスタックサイズ この表では)
対応する乗法接尾辞 (K はキロバイト、M はキロバイト) を追加することで指定できます。
メガバイトは G、ギガバイトは G、テラバイトは T)。
バッチ モード
場合によっては、最終的なベンチマーク統計だけでなく、
現在の統計を定期的にダンプして、テスト実行中に統計がどのように変化するかを確認します。 このため
目的 SysBench にはバッチ実行モードがあり、 - バッチ オプション。 あなた
結果のダンプ間の遅延を秒単位で指定できます。 --バッチ遅延
オプションを選択します。
例:
sysbench --batch --batch-lay=5 --test=スレッドの実行
これにより、現在の値が最小値で、スレッド テスト モードで SysBench が実行されます。
リクエスト実行時間の平均、最大、パーセンタイルが 5 秒ごとに出力されます。
ホイール試乗 モード
このセクションでは、SysBench で使用できる各テスト モードについて詳しく説明します。
CPU
当学校区の CPU SysBench の最も単純なベンチマークの XNUMX つです。 このモードでは、各リクエスト
で指定された値までの素数の計算で構成されます。
--cpu-max-primes オプション。 すべての計算は 64 ビット整数を使用して実行されます。
各スレッドは、次のいずれかの合計数に達するまで、リクエストを同時に実行します。
リクエストまたは合計実行時間が共通で指定された制限を超えています
コマンドラインオプション。
例:
sysbench --test = cpu --cpu-max-prime = 20000 run
スレッド
このテスト モードは、スケジューラのパフォーマンス、より具体的には、
スケジューラに、あるセットを巡って競合する多数のスレッドがある場合。
ミューテックス。
SysBench は、指定された数のスレッドと指定された数のミューテックスを作成します。 それから
各スレッドはミューテックスのロックからなるリクエストの実行を開始し、
CPU により、スレッドはスケジューラによって実行キューに配置され、ロックが解除されます。
スレッドが再スケジュールされて実行に戻されるときの mutex。 それぞれのリクエストに対して、上記
アクションはループ内で複数回実行されるため、反復が実行されるほど、より多くの処理が実行されます。
同時実行性は各ミューテックスに配置されます。
このテスト モードでは次のオプションを使用できます。
--スレッド-利回り
数 ロック/降伏/ロック解除 各リクエストごとに実行するループ数 (デフォルト: 1000)
--スレッドロック
作成するミューテックスの数 (デフォルト: 8)
例:
sysbench --num-threads=64 --test=threads --thread-yields=100 --thread-locks=2 実行
ミューテックス
このテスト モードは、すべてのスレッドが同時に実行される状況をエミュレートするために作成されました。
ほとんどの場合、ミューテックス ロックを取得できるのは短期間だけです
(グローバル変数をインクリメントします)。 したがって、このベンチマークの目的は、
ミューテックス実装のパフォーマンス。
このテスト モードでは次のオプションを使用できます。
--mutex-num
ミューテックスの数。 ロックする実際のミューテックスは、各ロックの前にランダムに選択されます。
(デフォルト:4096)
--メモリスコープ
可能な値: 全体的な, ローカル。 各スレッドがグローバルに使用するかどうかを指定します。
割り当てられたメモリ ブロック、またはローカルのメモリ ブロック。 (デフォルト: グローバル)
-- メモリの合計サイズ
転送するデータの合計サイズ (デフォルト: 100G)
-- メモリーオペラ
メモリ操作のタイプ。 可能な値: read, 書きます
ファイル
このテスト モードは、さまざまな種類のファイル I/O ワークロードを生成するために使用できます。 で
prepare stage SysBench は、指定された合計数で指定された数のファイルを作成します
サイズ、次に ラン ステージでは、各スレッドがこのセットに対して指定された I/O 操作を実行します。
ファイルの。
グローバルなとき - 検証 オプションは、 ファイル テストモード、SysBench が実行
ディスクから読み取られたすべてのデータのチェックサム検証。 書き込み操作ごとにブロック
ランダムな値が入力され、チェックサムが計算されてブロックに保存されます。
ファイル内のこのブロックのオフセットとともに。 読み取り操作ごとに、ブロックは次のようになります。
保存されたオフセットと実際のオフセット、および保存されたチェックサムを比較することによって検証されます。
実際に計算されたチェックサムを使用します。
次の I/O 操作がサポートされています。
シーケンス
シーケンシャル書き込み
シークワー
シーケンシャルリライト
第二
シーケンシャルリード
rdrd
ランダム読み取り
ランドル
ランダム書き込み
rdrw
ランダム読み取り/書き込みを組み合わせた
また、基盤となるプラットフォームの場合、次のファイル アクセス モードを指定できます。
彼らをサポートします:
非同期I/Oモード
現時点では、Linux AIO 実装のみがサポートされています。 走り込むとき
非同期モードでは、SysBench は Linux を使用して指定された数の I/O リクエストをキューに入れます。
AIO API は、送信されたリクエストの少なくとも XNUMX つが完了するまで待機します。 その後
新しい一連の I/O リクエストが送信されます。
遅く mmap() モード
このモードでは、SysBench は使用します mmap'ed I/O。 ただし、別途、 mmap 使用されます
32 ビット アーキテクチャの制限により、各 I/O リクエストに対して
mmap() ファイル全体。そのサイズは最大 2 GB を超える可能性があります。
プロセスのアドレス空間)。
尊大 mmap() モード
64 ビット アーキテクチャでは、次のことが可能です。 mmap() ファイル全体をプロセスに追加する
アドレス空間を確保し、2 ビット プラットフォームでの 32 GB の制限を回避します。
使い方 fdatasync() fsync()
データ バッファのみをフラッシュし、メタデータはフラッシュしません。
追加のフラグ 開いた(2)
SysBench は追加のフラグを使用して、 開いた(2)、 といった O_SYNC, O_DSYNC
O_DIRECT.
以下は、テスト固有のオプションのリストです。 ファイル モード:
--ファイル番号
作成するファイルの数 (デフォルト: 128)
--ファイルブロックサイズ
すべての I/O 操作で使用するブロック サイズ (デフォルト: 16K)
--ファイルの合計サイズ
ファイルの合計サイズ (デフォルト: 2G)
--ファイルテストモード
生成するワークロードのタイプ。 可能な値: シーケンス, シークワー, 第二, rdrd, ランドル,
ランドル (上記を参照)
--file-io-mode
I/Oモード。 可能な値: sync, 非同期, ファストマップ, スローマップ (サポートされている場合のみ)
プラットフォームについては上記を参照してください)。 (デフォルト: 同期)
--ファイル-非同期-バックログ
スレッドごとにキューに入れる非同期操作の数 (
--file-io-mode=async、上記を参照) (デフォルト: 128)
--file-extra-flags
使用する追加のフラグ 開いた(2)
--file-fsync-freq
Do fsync() この数のリクエストの後 (デフォルト: 0 - 使用しない) fsync())
--file-fsync-all
Do fsync() 各書き込み操作の後 i (デフォルト: no)
--file-fsync-end
Do fsync() テストの終了時 (デフォルト: はい)
--file-fsync-mode
同期に使用する方法。 可能な値: fsync, fdatasync
(デフォルト: fsync)
--file-merged-requests
可能であれば、最大でこの数の I/O リクエストをマージします (デフォルト: 0 - マージしません)
--file-rw-ratio
複合ランダム読み取り/書き込みテストの読み取り/書き込み比率 (デフォルト: 1.5)
使用例
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw 準備
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw 実行
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw クリーンアップ
上記の例では、最初のコマンドは合計サイズが 128 GB の 3 個のファイルを作成します。
現在のディレクトリで XNUMX 番目のコマンドは実際のベンチマークを実行し、次のメッセージが表示されます。
XNUMX 番目の例では、テストに使用されたファイルが削除されます。
オルトプ
このテスト モードは、実際のデータベースのパフォーマンスをベンチマークするために作成されました。 で prepare
ステージでは、次のテーブルが指定されたデータベースに作成されます (sbテスト デフォルトでは):
CREATE TABLE `sbtest` (
「id」 int型(10) unsigned NOT NULL auto_increment、
「k」 int型(10) 符号なし NOT NULL デフォルト '0'、
`c` チャリオット(120) NOT NULL デフォルト ''、
「パッド」 チャリオット(60) NOT NULL デフォルト ''、
主キー( `id`)、
キー `k` (`k`);
次に、このテーブルに指定された数の行が入力されます。
次の実行モードが利用可能です。 ラン ステージ:
簡単な拡張で
このモードでは、各スレッドは次の形式の単純なクエリを実行します。
SELECT c FROM sbtest WHERE id=N
コラボレー N 範囲 1 のランダムな値を受け取ります。<テーブル サイズ>
高度なトランザクション
各スレッドはテスト テーブル上でトランザクションを実行します。 テストテーブルと
データベース サポート トランザクション (例: MySQL の InnoDB エンジン)、 ベギン/コミット
ステートメントはトランザクションの開始/停止に使用されます。 それ以外の場合、SysBench は
LOCK TABLES/UNLOCK TABLES ステートメント (例: MySQL の MyISAM エンジン)。 多少なら
トランザクション内で行が削除されると、同じ行が同じトランザクション内に挿入されます。
トランザクションなので、このテスト モードはテスト テーブル内のデータを破壊しません。
同じテーブル上で複数回実行できます。
コマンド ライン オプションに応じて、各トランザクションには次のものが含まれる場合があります。
文:
· ポイントクエリ:
SELECT c FROM sbtest WHERE id=N
· 範囲クエリ:
sbtest WHERE id BETWEEN から c を選択します N そして M
· 範囲 SUM() クエリ:
sbtest WHERE id BETWEEN から SUM(K) を選択します N M
· 範囲の ORDER BY クエリ:
SELECT c FROM sbtest WHERE ID 間の N M cで注文
· 範囲 DISTINCT クエリ:
DISTINCT c FROM sbtest WHERE id BETWEEN を選択 N M cで注文
· インデックス列の UPDATE:
UPDATE sbtest SET k=k+1 WHERE id=N
· 非インデックス列の UPDATE:
UPDATE sbtest SET c=N WHERE ID=M
· クエリの削除:
sbtest WHERE id= から削除N
· INSERT クエリ:
sbtest 値に挿入 (...)
非トランザクション
このモードは次のようなものです 簡単な拡張でですが、実行するクエリを選択することもできます。 ノート
それとは異なります 高機能 トランザクションの モード、これはテストを保存しません
リクエスト間でテーブルを作成するため、適切な値を使用してテーブルを再作成する必要があります。
クリーンアップ/prepare 連続するベンチマーク間のコマンド。
以下は考えられるクエリのリストです。
· ポイントクエリ:
sbtest WHERE id= からパッドを選択しますN
· インデックス列の UPDATE:
UPDATE sbtest SET k=k+1 WHERE id=N
· 非インデックス列の UPDATE:
UPDATE sbtest SET c=N WHERE ID=M
· クエリの削除:
sbtest WHERE id= から削除N
生成された行 ID はテスト実行ごとに一意であるため、行は削除されません
二度。
· INSERT クエリ:
INSERT INTO sbtest (k、c、pad) VALUES(N, M, S)
--oltp-テストモード
実行モード (上記を参照)。 可能な値: シンペ (単純)、 複雑な (高度
トランザクション)および ノントラックス (非トランザクション) (デフォルト: 複合)
--oltp-読み取り専用
読み取り専用モード。 いいえ UPDATE, DELETE or INSERT クエリが実行されます。 (デフォルト:
オフ)
--oltp-範囲サイズ
範囲クエリの範囲サイズ (デフォルト: 100)
--oltp-point-selects
単一トランザクション内のポイント選択クエリの数 (デフォルト: 10)
--oltp-単純な範囲
単一トランザクション内の単純な範囲クエリの数 (デフォルト: 1)
--oltp-合計範囲
単一トランザクション内の SUM 範囲クエリの数 (デフォルト: 1)
--oltp-order-ranges
単一トランザクション内の ORDER 範囲クエリの数 (デフォルト: 1)
--oltp-個別の範囲
単一トランザクション内の DISTINCT 範囲クエリの数 (デフォルト: 1)
--oltp-index-updates
単一トランザクション内のインデックス UPDATE クエリの数 (デフォルト: 1)
--oltp-非インデックス更新
単一トランザクション内の非インデックス UPDATE クエリの数 (デフォルト: 1)
--oltp-nontrx-mode
非トランザクション実行モードのクエリのタイプ (上記を参照)。 可能な値:
select, 更新キー, update_nokey, insert, 削除。 (デフォルト: 選択)
--oltp-接続遅延
データベースに接続するたびにスリープするまでの時間 (デフォルト: 10000)
--oltp-ユーザー遅延-分
各リクエスト後にスリープするまでの最小時間 (デフォルト: 0)
--oltp-user-遅延-最大
各リクエスト後にスリープするまでの最大時間 (マイクロ秒単位) (デフォルト: 0)
--oltp テーブル名
テストテーブルの名前 (デフォルト: sbtest)
--oltp-テーブルサイズ
テストテーブルの行数 (デフォルト: 10000)
--oltp-dist-type
乱数の配布。 可能な値: 制服 (一様分布)、
ガウス (ガウス分布) と 特別。 (デフォルト: 特殊)
特別な分布を使用すると、指定された割合の数値が生成されます。
指定された割合のケース (以下のオプションを参照)。
--oltp-dist-pct
「特別」として扱われる値の割合 (特別な分布の場合)
(デフォルト:1)
--oltp-dist-res
「特別な」値が生成されるケースの割合 (特別な分布の場合)
(デフォルト:75)
--db-ps-mode
データベース ドライバーが Prepared Statements API をサポートしている場合、SysBench は
可能な場合は、すべてのクエリに対してサーバー側で準備されたステートメントを使用します。 さもないと、
クライアント側 (またはエミュレートされた) の準備されたステートメントが使用されます。 このオプションにより、次のことが可能になります
PS API が利用可能な場合でもエミュレーションの使用を強制します。 可能な値: disable,
オート。 (デフォルト: 自動)
また、各データベース ドライバーが独自のオプションを提供する場合もあります。 現在のところ、MySQL ドライバーのみが
利用可能。 以下は MySQL 固有のオプションのリストです。
--mysql ホスト
MySQLサーバーホスト。 (デフォルト: ローカルホスト)
バージョン 0.4.5 以降では、カンマで区切られたホストのリストを指定できます。
この場合、SysBench は、指定された MySQL ホスト間の接続を分散します。
ラウンドロビン方式。 すべての接続ポートとパスワードは同じである必要があることに注意してください
すべてのホスト上で。 また、データベースとテーブルは各ホスト上で明示的に準備する必要があります。
ベンチマークを実行する前に。
--mysql-ポート
MySQL サーバー ポート (TCP/IP 接続を使用する必要がある場合) (デフォルト: 3306)
--mysql-ソケット
MySQL サーバーと通信するための Unix ソケット ファイル
--mysql-user
MySQL ユーザー (デフォルト: ユーザー)
--mysql-パスワード
MySQLのパスワード
--mysql-db
MySQL データベース名。 注: SysBench はこのデータベースを自動的に作成しません。
手動で作成し、ユーザーに適切な権限を付与する必要があります。
テストテーブルにアクセスするために使用されます。 (デフォルト: sbtest)
--mysql-テーブルエンジン
テストテーブルのタイプ。 可能な値: マイサム, 無邪気な, ヒープ, ndbcluster, bdb,
マリア, ファルコン, pbxt (デフォルト: innodb)
--mysql-ssl
SSL接続を使用します。 (デフォルト: いいえ)
--myisam-max-rows
MyISAM テーブルの MAX_ROWS オプション (大きなテーブルに必要) (デフォルト: 1000000)
--mysql-create-options
CREATE TABLE に渡される追加オプション。
使用例:
$ sysbench --test=oltp --mysql-table-type=myisam --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock prepare
$ sysbench --num-threads=16 --max-requests=100000 --test=oltp --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock --oltp-read-only run
最初のコマンドは、MyISAM テーブル 'sbtest' をデータベース 'sbtest' に作成します。
MySQLサーバーを使用して /tmp/mysql.sock ソケットに接続し、このテーブルに 1M レコードを入力します。 の
16 番目のコマンドは、XNUMX クライアント スレッドで実際のベンチマークを実行し、
リクエストの総数は 100,000 です。
onworks.net サービスを使用してオンラインで sysbench を使用する
