2026年5月25日

2026年5月25日

topとsar・iostatでI/Oボトルネックを特定する方法

ステップ1: topで全プロセスのCPU/I/O利用状況を把握する

プロセスごとのI/O使用状況を確認するためにtopコマンドを使う

# topコマンドを利用して全プロセスの実行状態とI/O利用状況を確認します。
top -b -n 1 | grep '^[0-9]' > /tmp/top_output.txt

# `grep '^[0-9]'`は数字で始まる行だけを抽出し、/tmp/top_output.txtに保存

ステップ2: sarでシステム全体のI/O利用状況を記録・分析する

# 1分間隔で5回のデータを収集します。
sar -d 1 5 > /tmp/sar_disk_io.txt

# 構成要素:iowait, read, write, avgrq-sz, avgqu-sz, await, svctm

ステップ3: iostatで具体的なディスクのI/O利用状況を把握する

# /dev/sdaのI/O利用状況を1秒間隔で5回測定します。
iostat -dx 1 5 > /tmp/iostat_sda.txt

# 構成要素:tps, rd_sec/s, wr_sec/s, avgrq-sz, await, svctm

ステップ4: 実践/トラブルシュート/監視

# topコマンドの出力を定期的に確認します。
watch -n 10 'top -b -n 1 | grep "^[0-9]"'

# sarとiostatの結果を定期的に記録・分析します。
while true; do date >> /tmp/sar_iostat_log.txt; sar -d 1 5 >> /tmp/sar_iostat_log.txt; iostat -dx 1 5 >> /tmp/sar_iostat_log.txt; done

注意事項

  • topコマンドの結果は瞬間的な状況を反映しているため、長時間にわたる観察が必要です。
  • sariostatは定期的に実行し、ログファイルとして保存することで、長期的な傾向を把握できます。
  • ディスクI/Oが高頻度で発生するプロセスを特定するためにtopiostatの組み合わせを使うことが重要です。

まとめ

1. top: 全プロセスのCPU/I/O利用状況を瞬時に把握します。

2. sar: 系統的なI/O使用状況を記録し、長期的な傾向を分析できます。

3. iostat: 特定のディスクの具体的なI/O利用状況を詳細に確認できます。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ