サーバーの性能が低下したとき、CPUやメモリだけでなくディスクI/Oのボトルネックが原因となるケースは少なくありません。特にデータベースサーバーやファイルサーバーでは、I/O性能の把握と監視は必須です。
本記事では、Linux環境でI/O負荷をモニタリングし、ボトルネックを特定するための代表的なコマンド iostat / sar / atop の使い方と解析方法をまとめます。
1. I/O負荷監視の重要性
- I/O待ち(I/O Wait)が高いとレスポンス低下につながる
- CPUやメモリに余裕があっても、ディスクの読み書き速度が追いつかないとシステム全体が遅くなる
- SSDやNVMeでも、並列処理や大量アクセス時に性能劣化が起きる
→ そのため、定期的なモニタリングとボトルネック解析が重要です。
2. iostatでディスクI/Oを確認
iostat
は sysstatパッケージに含まれるツールで、CPU負荷とディスクI/Oを簡単に確認できます。
インストール
# Debian / Ubuntu
sudo apt install sysstat
# RHEL / CentOS / Rocky Linux
sudo yum install sysstat
基本コマンド
iostat -x 1 5
-x
: 拡張表示(詳細なI/O統計)1 5
: 1秒ごとに5回出力
主な指標
- %util : ディスク使用率(100%に近いとボトルネック)
- await : I/O要求の平均待ち時間(ms)
- svctm : 平均サービス時間(短いほど良い)
- r/s, w/s : 読み取り/書き込み要求数
→ 例えば %util
が常に 90%以上なら、ディスクI/Oが性能低下の原因です。
3. sarで長期間のI/Oを解析
sar
も sysstat に含まれており、過去のI/O統計を確認できるのが強みです。
記録の有効化(例: Ubuntu)
sudo systemctl enable sysstat
sudo systemctl start sysstat
I/O統計の確認
# ディスクI/Oの履歴表示
sar -d 1 5
# CPUのI/O待ち時間を確認
sar -u 1 5
活用ポイント
- 深夜やピーク時間帯の I/O 負荷を確認できる
- 原因が一時的か継続的かを把握できる
4. atopでリアルタイム監視
atop
は CPU・メモリ・ネットワーク・ディスクを統合的に監視できるツールです。
インストール
# Debian / Ubuntu
sudo apt install atop
# RHEL / CentOS
sudo yum install atop
実行例
sudo atop
特徴
- 色分け表示でボトルネックが直感的に分かる
d
キーでディスクI/Oにフォーカスできる- I/O待ちでブロックしているプロセスを特定可能
5. ボトルネック解析の流れ
- iostatで即時確認
%util
とawait
を見て、ディスクが飽和していないか判断
- sarで履歴を確認
- 一時的か継続的な問題かを切り分け
- atopでプロセス特定
- どのアプリケーションがI/O負荷をかけているかを特定
6. I/O改善の具体策
- 不要なログ出力を減らす
- データベースのインデックス最適化
- キャッシュ(memcached / Redis)の導入
- SSD / NVMe への移行
- RAID / LVM のチューニング
- cgroups でI/O制御
まとめ
Linuxでシステム性能が低下したとき、I/O負荷の見える化と解析は不可欠です。
- iostat : 即時のI/O統計を確認
- sar : 過去の履歴を解析
- atop : リアルタイムにボトルネックとプロセス特定
これらを組み合わせれば、「どの時間帯に」「どのアプリケーションが」「どのディスクに負荷を与えているか」を明確にでき、改善に直結します。
✅ 次のステップとして、「ログ監視やアラート通知の仕組み(Zabbix / Prometheus / Grafana連携)」も組み合わせると、運用監視がさらに強化できます。