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コマンドの結果は瞬間的な状況を反映しているため、長時間にわたる観察が必要です。sarやiostatは定期的に実行し、ログファイルとして保存することで、長期的な傾向を把握できます。- ディスクI/Oが高頻度で発生するプロセスを特定するために
topとiostatの組み合わせを使うことが重要です。
まとめ
1. top: 全プロセスのCPU/I/O利用状況を瞬時に把握します。
2. sar: 系統的なI/O使用状況を記録し、長期的な傾向を分析できます。
3. iostat: 特定のディスクの具体的なI/O利用状況を詳細に確認できます。
関連記事: