mpstatでCPU負荷を分析する方法

ソフトウェアテスト
スポンサーリンク
google.com, pub-5238665064291805, DIRECT, f08c47fec0942fa0

はじめに

性能試験で遅延が発生した場合、原因の一つに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

分析ステップ:

  1. %usr 35% + %sys 15%を合計すると全体で50%の使用率。一見すると、%idleが約47.5%あり、CPUにはまだ余力があるように見える。
  2. コア別に見るとCPU 0の%usrが90%、%idleが0%となっており、完全に使い切られている。CPU 1はほとんどアイドル状態で、負荷が分散されていない。
  3. 負荷がCPU 0に極端に集中しており、アプリケーションがマルチスレッド処理に対応していない、またはスレッドが特定コアに固定されている可能性が高い。

対処案:

  • アプリケーションのスレッド設定を確認する。
  • tasksetでプロセスを全コアに割り当てる(例: taskset -c 0-3 <pid>)。
  • OSのCPUアフィニティ設定を見直す。
    補足: 性能試験では、コアごとの負荷分布を確認することで、処理が効率的に行われているかを評価できます。特定のコアに処理が偏っていないかをmpstatで定期的にモニタリングすることが重要です。

まとめ

mpstatを使うことで、CPUの使用状況をコア単位で詳細に把握でき、処理の偏りやI/O待ちなどのボトルネックを特定する手がかりとなります。性能試験では、こうした情報をもとにアプリケーションやシステム設定を見直すことで、効果的なパフォーマンス改善が可能です。

次回は、vmstatを用いてメモリやプロセス、I/Oの動きを含むシステム全体の状態を分析する方法を解説します。

コメント

タイトルとURLをコピーしました