ディスク I/O の可観測性ツール
理解のために小咄形式でまとめました。
システムパフォーマンス関連記事の目次
登場人物
- 太郎(後輩):入社1年目の若手エンジニア。
- 花子(先輩):システムエンジニア歴3年の先輩。
場面:オフィスのデバッグルーム
太郎が iostat
コマンドを試しながら、花子に質問する。
太郎:「花子先輩、今 iostat
を試してみたんですけど、 可観測性ツール
っていろいろ種類があるんですね。どれをどう使えばいいのか、正直混乱しています。」
花子:「そうね。可観測性ツールには、それぞれ 目的
があるの。大きく分けると 全体を監視するツール
と 詳細な分析をするツール
の2種類に分類できるわ。」
ディスク I/O 可観測性ツールの解説
花子:「可観測性ツールは、 ディスク I/O のパフォーマンスやボトルネックを特定
するためのツール群よ。主なものを紹介するわね。」
1. iostat - ディスク I/O の全体状況を見る
花子:「iostat
は ディスクごとの I/O 統計
を表示するツールよ。」
-
iostat
コマンドを実行すると、CPU 使用率とディスク I/O の統計が表示される。 -
iostat -x
を使うと、より詳細なデータ(使用率、I/O キューの長さなど)が見られる。
太郎:「つまり、iostat
は ディスク全体のパフォーマンス傾向
を確認するのに使うんですね。」
2. sar - 経時的な I/O 統計を取得
花子:「sar
は 時間ごとの I/O の傾向
を確認するのに便利よ。」
- 例えば
sar -d 1 10
と実行すると、1秒ごとのディスク I/O の統計が10回記録される。 -
過去のログ
も取得できるので、負荷が高かった時間帯
を特定できる。
太郎:「じゃあ、昨日の夜に何が起こっていたのか?
みたいな調査に使えそうですね!」
3. PSI(Pressure Stall Information) - 負荷のスタール
花子:「PSI
は ディスクの負荷がシステム全体に与える影響
を見るツールよ。」
-
cat /proc/pressure/io
を実行すると、I/O による負荷の影響が分かる。 -
高い値が出ている場合
は、I/O によるボトルネック
が発生している可能性が高い。
太郎:「負荷がシステム全体に及ぼす影響
を知りたいときに使うんですね。」
4. pidstat - プロセスごとの I/O 使用状況
花子:「pidstat -d 1
を実行すると、どのプロセスがどれだけディスク I/O を使っているか
が分かるわ。」
-
ディスク負荷の原因となっているプロセス
を特定できる。 -
pidstat -d -p 1234
のように使えば、特定のプロセス
の I/O を監視できる。
太郎:「負荷の原因を プロセス単位
で調べるのに便利そうですね。」
5. perf - 詳細な I/O 分析
花子:「perf
は カーネルレベルの I/O トレース
を記録するツールよ。」
-
perf record -e block:block_rq_issue
のように使うと、どのプロセスが I/O を発行しているか
を分析できる。 -
perf report
を実行すると、記録されたデータを解析できる。
太郎:「カーネルレベルの 深い分析
をしたいときに使うんですね!」
6. biolatency - I/O レイテンシ分析
花子:「biolatency
は I/O の応答時間(レイテンシ)
を ヒストグラム
で表示できるツールよ。」
-
sudo biolatency
を実行すると、I/O の処理時間の分布
が見られる。 - 例えば
一部の I/O が異常に遅い
ことを発見できる。
太郎:「レイテンシの外れ値
を探すのに便利そうですね!」
7. biosnoop - 個々の I/O のトレース
花子:「biosnoop
を使うと、I/O の詳細なトレース
ができるの。」
-
sudo biosnoop
を実行すると、I/O の開始時間、終了時間、プロセスID
などが記録される。 -
遅い I/O を特定する
のに便利。
太郎:「遅延のある I/O がどこで発生しているか
を調べられるんですね!」
8. iotop, biotop - プロセス別のディスク I/O 使用量
花子:「iotop
や biotop
は top コマンドのディスク I/O 版
よ。」
-
sudo iotop
を実行すると、どのプロセスがディスク I/O を多く使っているか
がリアルタイムで見られる。 -
iotop -o
を使えばディスク I/O が発生しているプロセス
のみを表示できる。
太郎:「リアルタイムで どのプロセスが I/O を大量に使っているのか
が分かるんですね!」
9. blktrace - ディスク I/O の詳細なイベントトレース
花子:「blktrace
は ディスク I/O のイベント
を 超詳細
に記録するツールよ。」
-
sudo blktrace -d /dev/sda
を実行すると、ディスク上で発生した I/O イベント
を記録できる。 -
ディスク I/O の詳細なフロー
を分析するのに役立つ。
太郎:「かなり 専門的な調査
に向いているツールですね。」
花子:「可観測性ツールを 健康診断
に例えると、こんな感じかしら。」
-
iostat, sar →
血圧や体温の測定
(全体の健康状態のチェック) -
PSI →
ストレス測定
(システムが I/O 負荷で苦しんでいるか) -
pidstat, iotop →
特定の臓器の検査
(どのプロセスが負荷をかけているか) -
biolatency, biosnoop →
MRI 検査
(詳細な応答時間を解析) -
perf, blktrace →
DNA 検査
(I/O の根本的な原因を分析)
太郎:「なるほど! 大まかな診断
から 詳細な分析
まで、ツールを適切に使い分けることが大事なんですね!」
まとめ
花子:「そうね。全体の監視
から 細かい分析
まで、状況に応じて 適切なツール
を使うのが大事よ。」
太郎:「ありがとうございます!早速、iotop
や biolatency
を試してみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。