web-dev-qa-db-ja.com

LinuxのI / Oパフォーマンスベンチマーク

貧しい人々のセットアップを終了したばかりSANをベンチマークしたいと思います。Linuxの他にいくつかの優れたI/Oパフォーマンスベンチマークは何ですか。

hdparm -tT /dev/sda1

IOPS測定を取得するにはどうすればよいですか?

ありがとう。

6
Justin

ディスクパフォ​​ーマンスのテストには bonnie ++ の使用をお勧めします。それはそのようなことをするために特別に作られました。

4
tylerl

少なくともLinuxでは、すべての合成ベンチマークの回答で fio に言及する必要があります。これは、実際にはスイスアーミーナイフI/Oジェネレーターです。

その機能の概要:

  • デバイスまたはファイルへのI/Oを生成できます
  • さまざまな方法でI/Oを送信する
    • 同期、psync、vsync
    • ネイティブ/ posix aio、mmap、splice
  • 指定された深さまでのI/Oのキューイング
  • I/Oが送信されるサイズの指定
  • I/Oタイプの指定
    • 順次/ランダム
      • I/Oがランダムである場合、より現実的になるようにそれをゆがめる分布を指定できます。
    • 読み取り/書き込みまたは2つの混合
    • blktraceで記録されたI/Oは再生できます

それがあなたに与える統計

  • Mバイトで生成されたI/Oの量
  • 平均帯域幅
  • 最小値、最大値、平均値、標準偏差を含む提出/完了の待ち時間
  • IOPS
  • 平均キュー深度

機能と出力のリスト は何度も繰り返されます。

最後にすべてを表す1つの統一された数値は生成されませんが、ストレージのパフォーマンスを理解することに真剣に取り組んでいる場合、単一の数値では必要な情報のすべてを説明できないことがわかります。 Linus Torvaldsでさえ、fioは良いと考えています。

[G] et JensのFIOコード。それは正しく動作します[...]何か他のことが疑われます-ボニーや他の従来のツールについては忘れてください。

Brendan Gregg(Netflixパフォーマンスエンジニア)もfioについて積極的に言及しています

私の他のお気に入りのベンチマークは @ axboe によるfioです[...]

PS:fioを使用して行ったベンチマークをウェブサイトや論文などで公開しようとしていますか?フォローすることを忘れないでください https://github.com/axboe/fio/blob/master/MORAL-LICENSE

12
Anon

これら2つの投稿/記事を読むことをお勧めします。

http://www.linuxinsight.com/how_fast_is_your_disk.htmlhttp://www.linuxforums.org/forum/red-hat-Fedora-linux/153927-iscsi-raid1- lvm-setup-poor-write-performance.html

特に:

まず、より正確で制御可能なツールを使用してパフォーマンスをテストすることをお勧めします。 hdparmは、IDEデバイスパラメータを変更するように設計されており、それが行うテストは非常に基本的です。LVMとiSCSIの複合デバイスでhdparmを使用しているときに何が起こっているかもわかりません。また、hdparm両方に異なる最適化があるため(書き込みバックキャッシュ、先読み、プリフェッチアルゴリズムなど)、書き込み速度をテストしません。これは読み取り速度とは関係ありません。

私は、ブロックサイズ、テストの長さ、およびバッファキャッシュの使用を細かく制御できるold&good ddコマンドを使用することを好みます。また、転送速度に関する素敵で短いレポートも提供します。バッファキャッシュのパフォーマンスをテストすることもできます。

また、ファイルシステムを含む、ここに含まれるいくつかの層があることを理解してください。 hdparmは、RAWデバイスへのアクセスのみをテストします。

テストコマンドテストには次のコマンドを使用することをお勧めします。

a)rawデバイス、パーティション、LVMボリューム、ソフトウェアRAID、iSCSI LUN(イニシエーター側)。最新のほとんどのデバイスのバルク転送速度をテストするには、ブロックサイズ1Mで問題ありません。 TPSテストの場合は、4kなどの小さいサイズを使用してください。カウントを変更して、より現実的なテストを作成します(一時的な干渉に対して持続的なレートをテストするには、長いテストをお勧めします)。 「odirect」フラグはバッファキャッシュの使用を回避するため、テスト結果は繰り返し可能でなければなりません。

読み取りテスト:dd if =/dev/zero of =/dev/bs = 1M count = 1024 oflag = direct書き込みテスト:dd if =/dev/of =/dev/null bs = 1M count = 1024 iflag = direct

512x1Mブロックのddの出力例:536870912バイト(537 MB)コピー、10.1154秒、53.1 MB /秒

書き込みテストは破壊的です!!!!!!デバイス上にファイルシステムを作成する前にそれを行う必要があります!!!! rawデバイスでは、パーティションテーブルが消去されることに注意してください。 (fdiskでの)問題を回避するには、その場合はカーネルにパーティションテーブルを強制的に再読み込みさせる必要があります。ただし、デバイス全体と単一パーティションのパフォーマンスは同じである必要があります。

b)ファイルシステムの場合、デバイスをマウントポイントの下のファイル名に変更するだけです。読み取りテスト:dd if =/dev/zero of =/mount-point/test.dat bs = 1M count = 1024 oflag = direct書き込みテスト:dd if =/mount-point/test.dat of =/dev/null bs = 1Mカウント= 1024 iflag = direct

ファイルにアクセスする場合でも、バッファキャッシュを使用していないことに注意してください。

c)ネットワークの場合、サーバー間で双方向にraw TCPソケットをテストします。ファイアウォールブロッキングTCPポート5001に注意してください。

server1#dd if =/dev/zero bs = 1M count = 1024 | netcat 5001 server2#netcat -l -p 5001 | dd of =/dev/null

レイヤーのテストこれで、各レイヤーのディスクパフォ​​ーマンスをテストするツールがあります。このシーケンスに従ってください:

a)iSCSIサーバーでローカルディスクのパフォーマンスをテストします。 b)ネットワークのテストTCPパフォーマンス。c)iSCSIイニシエーターのiSCSI LUNのディスクパフォ​​ーマンスをテストします(これはiSCSIプロトコルの最終的な生のパフォーマンスです)。 d)LVM論理ボリュームのパフォーマンスをテストします。 e)ファイルシステムの上にある大きなファイルのパフォーマンスをテストします。

損失の原因となっているレイヤーと次のレイヤーとの間には、大きなパフォーマンスのギャップがあるはずです。しかし、これはLVMではないと思います。私はファイルシステム層を疑っています。

考えられる問題のいくつかのヒント:

a)iSCSI LUNでストリップLVMボリュームを定義したかどうかは説明しませんでした。 iSCSIターゲットで同期書き込みが使用されている場合、ストリッピングによりボトルネックが発生する可能性があります(以下のatimeの問題を参照)。デフォルトのiSCSIターゲットの動作は同期書き込みであることを思い出してください(RAMキャッシング)。b)ファイルへのアクセスパターンの種類については説明しませんでした:-大量のデータの長時間の連続転送(数百MB)? -小さなブロックのランダムアクセスのシーケンス? -多くの小さなファイル?

私は間違っているかもしれませんが、あなたのシステムが「ATIME」問題の影響を受けている可能性があると思います。 「atime」の問題は、「Linuxカーネル設計に関する独自のアイデア」の結果です。これは、パフォーマンスと設計決定の影響に精通していないOSの設計に参加したいという人々のために、ここ数年苦しんでいます。

一言で言えば。 UNIXでは、ほぼ40年間、ファイルに対して単一の読み取り/書き込み操作が行われるたびに、iノードの「最終アクセス時刻」を更新してきました。バッファキャッシュは、しばらくディスクに伝播しないデータ更新を保持します。ただし、Linux設計では、inodeのATIMEを更新するたびに、ディスクに同期的かつ即時に更新する必要があります。インターリーブ同期の意味を理解してください。 iSCSIプロトコル上で操作のストリームで転送します。

これが当てはまるかどうかを確認するには、次のテストを実行します。-キャッシュを使用せずに長いファイル(少なくとも30秒)を読み取ります。もちろんDDで!!! -同時に、 "iostat -k 5"を使用してI/Oを監視します。

データの読み取り中に書き込み操作の小さいが継続的なフローを観察する場合、それはiノードの更新である可能性があります。

解決策:Linuxでは非常に奇妙になり、一部のファイルシステム(XFS、EXT3など)にマウントオプションを追加して、atimeの更新を無効にしています。もちろん、ファイルシステムのセマンティクスはPOSIX標準とは異なります。ファイルの最終アクセス時刻を監視する一部のアプリケーションが失敗する可能性があります(主に、電子メールリーダーや松、エルム、サイラスなどのサーバー)。オプション「noatime、nodiratime」を使用してファイルシステムを再マウントするだけです。また、最近のディストリビューションには、inodeの「atime」の陳腐化を減らす「norelatime」があります。

これらのテストの結果と調査の結果についてメモをとってください。

2
tmow

ディスクの目的によって異なります。 tmowが述べたように、最も速くて最も簡単な方法は「dd」ですが、iozoneおよびorion

  1. IOzone 私の意見では、ファイルシステムのベンチマークではbonnie ++よりも正確です
  2. Orion( "Oracle IO Numbers" from Oracle)は非常にスケーラブルであり、非常に大規模で強力なストレージでも適切にベンチマークでき、データベースのストレージのスケーリングに非常に役立ちます。異なるディスクアレイ、ディスクコントローラー、およびRAID構成からのorion、そしてそれらを比較します)
1
pitr

ディスクのベンチマーク:

$ dd if=/dev/zero of=/tmp/zero bs=1k count=100k

ネットワークベンチマーク:

$ yes | pv | ssh $Host "cat > /dev/null"
1
Jakob

他に加えて、消印ベンチマークを使用することもできます

0