はじめに
性能試験で遅延が発生した場合、原因の一つにCPUの負荷が考えられる。この場合、mpstat
が有用である。mpstat
はLinuxのsysstat
パッケージに含まれるツールで、CPUごとの使用率や負荷状況を詳細に表示する。マルチコア環境での負荷偏りやI/O待ちによる遅延を特定するのに適している。本記事では、mpstat
の使用方法、ログの見方、解析例を解説し、性能試験時の分析に活用できるようになることが目的です。
基本コマンドと使い方
mpstat
の基本的な使用方法は以下の通りである。
- 基本構文: mpstat [オプション] [間隔(秒)] [回数]
例: mpstat 1 10
→ 1秒間隔で10回、CPU統計を表示。
- 主要オプション:
-P ALL
: 全CPUコアの個別統計を表示。-u
: CPU使用率の詳細(デフォルト)。- なし: 全体統計のみを表示。
例えば、mpstat -P ALL 2
を実行すると、2秒ごとに全コアの使用率が表示される。性能試験では、負荷のかかるタイミングで実行すると効果的である。
補足: -P ALL
を使用すると、各コアの負荷状況を個別に確認できる。
ログの見方: 主要項目の解説
mpstat
の出力から、CPUの負荷状況を把握できる。以下はmpstat -P ALL
の出力例である。
10:00:00 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:00:02 AM all 25.00 0.00 10.00 5.00 0.00 0.50 0.00 0.00 0.00 59.50
10:00:02 AM 0 40.00 0.00 15.00 2.00 0.00 0.00 0.00 0.00 0.00 43.00
10:00:02 AM 1 10.00 0.00 5.00 8.00 0.00 1.00 0.00 0.00 0.00 76.00
主要項目:
%usr
: ユーザー空間でのCPU使用率(アプリケーション処理)。%sys
: カーネル空間でのCPU使用率(システム処理)。%iowait
: I/O待ちによるCPUアイドル時間。%idle
: CPUが何もしていない時間。
ログを見ると、以下が確認できる。
%usr
や%sys
が高い場合、CPU負荷がアプリケーションやシステムに起因する。%iowait
が高い場合、ディスクやネットワークI/Oがボトルネックである可能性がある。- 特定コアの
%idle
が低い場合、負荷が偏っている可能性がある。
補足: I/O待ちは、データ読み書きの遅延がCPUの稼働を妨げている状態を表す。
実践例: ログから問題を特定する
性能試験中にWebサーバーのレスポンスが遅延した。mpstat -P ALL 1
で取得したログは以下の通りである。
10:10:00 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:10:01 AM all 35.00 0.00 15.00 2.00 0.00 0.50 0.00 0.00 0.00 47.50
10:10:01 AM 0 90.00 0.00 10.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:10:01 AM 1 10.00 0.00 5.00 3.00 0.00 1.00 0.00 0.00 0.00 81.00
分析ステップ:
%usr
35% +%sys
15%を合計すると全体で50%の使用率。一見すると、%idle
が約47.5%あり、CPUにはまだ余力があるように見える。- コア別に見るとCPU 0の%usrが90%、%idleが0%となっており、完全に使い切られている。CPU 1はほとんどアイドル状態で、負荷が分散されていない。
- 負荷がCPU 0に極端に集中しており、アプリケーションがマルチスレッド処理に対応していない、またはスレッドが特定コアに固定されている可能性が高い。
対処案:
- アプリケーションのスレッド設定を確認する。
taskset
でプロセスを全コアに割り当てる(例:taskset -c 0-3 <pid>
)。- OSのCPUアフィニティ設定を見直す。
補足: 性能試験では、コアごとの負荷分布を確認することで、処理が効率的に行われているかを評価できます。特定のコアに処理が偏っていないかをmpstatで定期的にモニタリングすることが重要です。
まとめ
mpstatを使うことで、CPUの使用状況をコア単位で詳細に把握でき、処理の偏りやI/O待ちなどのボトルネックを特定する手がかりとなります。性能試験では、こうした情報をもとにアプリケーションやシステム設定を見直すことで、効果的なパフォーマンス改善が可能です。
次回は、vmstatを用いてメモリやプロセス、I/Oの動きを含むシステム全体の状態を分析する方法を解説します。
コメント