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 の状態をリアルタイム監視してみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。