0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】ディスク I/O のベンチマーク【5分で読める】

Last updated at Posted at 2025-02-17

ディスク I/O のベンチマーク

理解のために小咄形式でまとめました。

登場人物

  • 太郎(後輩):入社1年目の若手エンジニア。
  • 花子(先輩):システムエンジニア歴3年の先輩。

場面:オフィスのテスト環境
太郎が fio を使ってディスク I/O のテストをしながら、花子に質問する。

太郎:「花子先輩、ディスク I/O について、 実際にどのようにテストすればいいのか 迷っています。」

花子:「なるほど。 実験 を行うことで、 ディスクのパフォーマンス特性 を数値化できるのよ。 実験 にはいくつかの手法があるから、それを説明するわね。」


実験(ベンチマーク)の解説

花子:「ディスク I/O の 実験(ベンチマークテスト) には、次の 7 つの手法があるわ。」

  1. アドホックテスト
  2. カスタムロードジェネレータ
  3. マイクロベンチマークツール
  4. ランダム読み出しの例
  5. ioping
  6. fio
  7. blkreplay

1. アドホックテスト

花子:「アドホックテスト は、 簡単なコマンドを使って すぐに I/O の基本的な動作を確認する方法よ。」

  • dd if=/dev/zero of=testfile bs=1M count=1000 oflag=direct
    • ディスクへの書き込み速度 を計測。
  • dd if=testfile of=/dev/null bs=1M count=1000
    • ディスクからの読み出し速度 を計測。

太郎:「dd はシンプルだから、 すぐにディスクのスループットを確認 するのに良さそうですね!」


2. カスタムロードジェネレータ

花子:「カスタムロードジェネレータ を使うと、 特定のワークロードシミュレーション できるの。」

  • 自作スクリプトで 複数のプロセスが同時に I/O を発生させるシナリオ を再現。
  • Linux の stress コマンド で負荷をかける例:
    stress --io 8 --timeout 30s
    
    • 8つの並列 I/O を 30秒間発生させる。

太郎:「ってことは、 実際の運用環境に近い負荷テスト ができるってことですね!」


3. マイクロベンチマークツール

花子:「マイクロベンチマーク では、 ディスクの特定の動作を細かく分析 できるの。」

  • 例えば ランダム I/O のレイテンシシーケンシャル I/O のスループット を調べるのに使う。

太郎:「たとえば、 512バイトのランダムリード みたいに 細かいパラメータでテスト できるんですね!」


4. ランダム読み出しの例

花子:「ランダム読み出し のテストをすることで、 ディスクのランダムアクセス性能 を評価できるわ。」

  • 例えば fio を使って、4KB のランダムリード I/O32 並列スレッド で発生させる:
    fio --name=random-read --rw=randread --bs=4k --numjobs=32 --size=1G --runtime=30s
    

太郎:「ランダム I/O に弱い HDD と、ランダム I/O に強い SSD の違いを確認できそうですね!」


5. ioping

花子:「iopingping コマンドの I/O 版 で、 ディスクのレイテンシ(遅延) を測定できるの。」

  • 1秒間に1回 I/O を発生させて レイテンシを測る
    ioping -c 10 /dev/sda
    

太郎:「ネットワークの ping みたいに、 ディスクの応答速度 を測れるんですね!」


6. fio

花子:「fio最も汎用的な I/O ベンチマークツール で、 あらゆる I/O パターン をテストできるわ。」

  • 例えば 1MB のシーケンシャル書き込みテスト

    fio --name=seq-write --rw=write --bs=1M --numjobs=1 --size=1G --runtime=30s
    
  • 4KB のランダムリード/ライトテスト(32 並列)

    fio --name=random-readwrite --rw=randrw --bs=4k --numjobs=32 --size=1G --runtime=30s
    

太郎:「fio なら、 様々なパターンの I/O テスト を実行できるんですね!」


7. blkreplay

花子:「blkreplay を使えば、 実際のシステムで発生した I/O パターンを再現 できるの。」

  • 本番環境の I/O を記録して、テスト環境で再現できる。
  • リアルなワークロードをシミュレーションするのに最適!

太郎:「なるほど、 テスト環境本番のディスク負荷を再現 できるんですね!」


花子:「ディスクの 実験手法自動車の性能テスト に例えると、こんな感じね。」

  1. アドホックテスト簡単なスピードテスト(エンジンの基本性能をチェック)
  2. カスタムロードジェネレータ実際の走行条件を再現したテスト走行
  3. マイクロベンチマークブレーキ性能や加速性能の細かいテスト
  4. ランダム読み出しの例カーブでの操縦安定性テスト
  5. iopingレスポンスの早さ(アクセルの応答速度)
  6. fio多様な運転条件での総合評価
  7. blkreplayレースのシミュレーションテスト

太郎:「なるほど! fio総合的なテスト で、 ioping反応速度のテスト みたいな違いですね!」


まとめ

花子:「ディスク I/O の パフォーマンスを評価するには、適切な実験を選ぶことが重要fioioping を活用すれば、 どこにボトルネックがあるのか を数値で確認できるわよ。」

太郎:「ありがとうございます! fio実際の I/O 負荷テスト をやってみます!」

参考リンク

システムパフォーマンス関連記事の目次

システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?