CPU の可観測性ツール
理解のために小咄形式でまとめました。
システムパフォーマンス関連記事の目次
登場人物
- 太郎(後輩):入社1年目の若手エンジニア。
- 花子(先輩):システムエンジニア歴3年の先輩。
場面:オフィスの開発ルーム
太郎が CPU の可観測性ツール
に関する資料を見ながら、花子に質問する。
太郎:「花子先輩、 CPU の状態をリアルタイムで監視
するには、どんなツール
を使えばいいんでしょうか?」
花子:「いい質問ね! 可観測性ツール
を使うと、 CPU の負荷、スレッドのスケジューリング、キャッシュの利用状況
などをリアルタイムで把握できるわ。」
CPU の可観測性ツール
花子:「CPU のパフォーマンスを分析するツール
は、 目的別に 7 つのカテゴリー
に分けられるわ。」
- システム全体の負荷を測るツール
- CPU の詳細な使用状況を確認するツール
- プロセスごとの CPU 使用率を調べるツール
- CPU の電力管理と周波数を監視するツール
- カーネルレベルの CPU スケジューリングを分析するツール
- パフォーマンスカウンターを活用したツール
- 高度なプロファイリングツール
1. システム全体の負荷を測るツール
花子:「まず、 システム全体の負荷
を確認するのに役立つツールね。」
-
uptime →
ロードアベレージを表示(1分、5分、15分の平均負荷を確認)
-
vmstat →
CPU、メモリ、I/O の基本的な統計情報をリアルタイムで取得
-
mpstat →
各 CPU の使用率を詳細に表示
-
sar →
システムリソースの長期的な変化を記録
花子:「これは レストランの来店人数カウント
みたいなもので、 混雑具合を確認する指標
になるのよ。」
太郎:「なるほど! vmstat
や sar
を使えば、 長期的な CPU 使用傾向
も分かるんですね!」
2. CPU の詳細な使用状況を確認するツール
花子:「CPU の負荷がどこに集中しているか
を調べるツールね。」
-
top →
リアルタイムで CPU 使用率の高いプロセスを表示
-
pidstat →
特定のプロセスの CPU 使用率を分析
-
time, ptime →
特定のコマンドの実行時間を計測
花子:「これは どのシェフが忙しく働いているかを確認する
みたいなものね。」
太郎:「top
はよく使いますが、 pidstat
なら 特定のプロセスの詳細な CPU 使用率
まで分かるんですね!」
3. プロセスごとの CPU 使用率を調べるツール
花子:「プロセスの CPU 消費の内訳
を詳しく知りたいなら、 ps
や pidstat
が便利よ。」
-
ps →
プロセスごとの CPU 使用率を表示
-
pidstat -u →
プロセスの CPU 使用率を詳細に監視
-
pidstat -d →
プロセスの I/O 使用状況を分析
花子:「これは レストランの注文ごとの調理時間を分析する
みたいなものね。」
太郎:「ps
だけでなく、pidstat
を活用すれば、 どのプロセスが CPU を食っているか細かく分析できる
んですね!」
4. CPU の電力管理と周波数を監視するツール
花子:「最近の CPU は 動的にクロック周波数を変更
して、 電力効率を最適化
するわ。その状態を調べるツールね。」
-
turbostat →
CPU のクロック周波数、温度、電力使用量をリアルタイム監視
-
showboost →
Intel ターボブーストの状態を確認
-
cpufreq-info →
CPU の電力制御ポリシーを取得
花子:「これは 車の燃費モニター
みたいなもので、 CPU の動作状態を最適化するためのデータを提供
するのよ。」
太郎:「turbostat
なら CPU の発熱や消費電力もチェックできる
んですね!」
5. カーネルレベルの CPU スケジューリングを分析するツール
花子:「CPU のスケジューリングが適切かどうかを分析するツールよ。」
-
runqlat →
CPU のランキュー待ち時間を測定
-
runqlen →
ランキューの長さ(CPU の負荷)を分析
-
softirqs, hardirqs →
ソフトウェア割り込み、ハードウェア割り込みを監視
「これは 調理場でシェフがどれくらい注文を待たされているかを調べる
のと同じね。」
太郎:「CPU のスケジューリングのボトルネック
も runqlat
で分かるんですね!」
6. パフォーマンスカウンターを活用したツール
花子:「CPU の パフォーマンスカウンター(PMC)
を使って、 ハードウェアレベルでの分析
もできるわ。」
-
pmcarch →
CPU サイクルや分岐予測ミスを測定
-
tlbstat →
TLB(仮想メモリ管理)の状態を監視
-
perf →
高度なプロファイリングとイベント測定
「これは 車のエンジンの内部診断ツール
みたいなものね。」
太郎:「perf
を使えば ハードウェアレベルの最適化ポイント
まで見つけられそうですね!」
7. 高度なプロファイリングツール
花子:「プログラムのどこで CPU が多く使われているか
を特定するツールね。」
-
profile →
関数単位の CPU 負荷を分析
-
cpudist →
CPU 使用率の分布を表示
-
bpftrace →
BPF(eBPF) を使った詳細なプロファイリング
「これは レストランの注文履歴を分析して、どの料理が人気か調べる
みたいなものね。」
太郎:「bpftrace
で リアルタイムの詳細な解析
もできるんですね!」
まとめ
花子:「CPU の可観測性ツール
を使えば、 システム全体の負荷、プロセス単位の CPU 使用率、スケジューリングの最適化ポイント
まで、細かく分析できるのよ。」
太郎:「ありがとうございます! `まずは uptime, vmstat, mpstat, top を試して、CPU の状態をリアルタイム監視してみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。