(0)目次&概説
(1) 記事の目的
(1-1) 目的
(1-2) メモリやディスクの解説について
(2) CPUの監視
(2-1) CPUの主な監視項目
(2-2) CPUのカウンタ追加について
(3) CPUの主な用語について
(3-1) ソケット
(3-2) コア
(3-3) 論理プロセッサ数(≒スレッド数)
(3-4) クロック数
(3-5) キャッシュ
(4) パフォーマンスモニタのスケールについて
(1) 記事の目的
(1-1) 目的
パフォーマンスモニタを余り使い慣れていない人向けにCPUのリソース監視で注目すべきポイントや、CPUに関する用語の解説などを行います。
(1-2) メモリやディスクの解説について
・当記事は「メモリ」関連のカウンターが対象ですが、「CPU」や「ディスク」も別記事(下記リンク)に纏めていますので、よければご参照下さい。
CPU関連の主要カウンター解説 | →当記事 |
メモリ関連の主要カウンター解説 | https://rainbow-engine.com/perfmon-memory-important-counters/ |
ディスク関連の主要カウンター解説 | https://rainbow-engine.com/perfmon-disk-important-counters/ |
(2) CPUの監視
(2-1) CPUの主な監視項目
パフォーマンスモニタにおけるCPU関連の主な監視項目は以下になります。
(表1)
頻出 | カテゴリ | カウンター名 | 説明 |
Process | % Processer Time | プロセス単位でCPU使用率を%表示したもの。どのアプリがCPUを消費しているか?を切り分ける際や、特定のアプリケーションを対象にリソース監視をする場合に利用できます。 | |
Processer | % Processer Time | CPU使用率を%表示したもの。タスクマネージャのCPU欄に表示される値と同じもの。 | |
★ | Process | % User Time | ・CPU使用率のうち、ユーザーモードで消費した割合を「プロセス単位」で%で表示したものです。 ・どのプロセスを対象に取得するかはカウンタの追加時に選択可能。 |
★ | Processer | % User Time | ・CPU使用率のうち、ユーザーモードで消費した割合を%で表示したもの。 ・ユーザーモードでの消費とは、アプリケーションでの処理を意味しており、もし「% Processer Time」に占める割合が高い場合はアプリを落とす等の対処が必要となります。 |
Processer | % Privileged Time | ・CPU使用率のうち、カーネルモードで消費した割合を%で示したもの。 ・カーネルモードでの消費とはOSの動作による使用等であり、もし「% Processer Time」に占める割合が高い場合はサービスを落とす等の対処がある。 |
|
Processer | Interrupt/Sec | ・ハードウェアの割り込みをプロセッサが毎秒に処理した回数です。 ・基本的に周辺機器の速度はCPUに比べて非常に遅いため、通常は周辺機器が処理している間にCPUは別の処理をしています。 ・周辺機器の処理が完了した事を通知する方法の一つに「ポーリング」(CPUが定期的に周辺機器の完了をチェックする処理)がありますが、他の処理に影響を与えるため、逆に周辺機器の処理が完了したらCPUに割り込みで完了通知を送る方法が主流になっています。 |
|
Processer | % C1 Time | プロセッサーがC1低電力アイドル状態にある時間を%表示。 プロセッサーC-Stateと呼ばれる低電力アイドル状態になっている時間を%で示す項目。C1,C2,C3の順番で復帰時間が短く、特にC3の場合はキャッシュの一貫性が保証されない。 |
|
Processer | % C2 Time | プロセッサーがC2低電力アイドル状態にある時間を%表示。 | |
Processer | % C3 Time | プロセッサーがC3低電力アイドル状態にある時間を%表示。 |
例えば「Processer」の「% Processer Time」についてタスクマネージャのCPU欄と同じ値と書かれていますが、実際に比較した画像が以下になります。
(図2)
(2-2) CPUのカウンタ追加について
(2-2-1) カウンターの選択
上記の(表1)の通りですが、基本は「Processor」のカウンターを見つつ、必要に応じて「Process」で特定のプロセスのCPUリソース状況を監視します。
(2-2-2) 選択したオブジェクトのインスタンス
Processer系のカウンタはコア毎に計測対象に指定する事ができます。「0」が1つ目のコア、「1」が2つ目のコアという具合に、各コアに番号が振られており、コア単位を対象に測定もできますし、「_Total」で合計を対象にもできます。
(例)2コアの場合
_Total | 全インスタンスの合計値 |
<全てのインスタンス> | 自身以外の全ての対象を追加します(本例では「_Total」「0」「1」の3項目が追加されます)。 |
0 | CPUの1つ目のコア |
1 | CPUの2つ目のコア |
(図1)
(3) CPUの主な用語について
(3-1) ソケット
CPUを何個搭載できるか?の値です。通常のPCでは1だが、サーバー等では2以上もあります。一般的にはPCのマザーボード(電子回路基板)の部品の一つとしてCPUソケットが付いています。
(3-2) コア
CPUで実際の処理を担う中核部分を「コア」と呼んでいます。インテルさんの動画等でコックに例えて説明してましたが以下のイメージです。
(3-3) 論理プロセッサ数(≒スレッド数)
(3-4) クロック数
PCは電気を動力に動くため、情報はOFF(0)かON(1)かで処理されています。なのでON/OFFの切り替えが早いほど性能が高いことと同義になります。このON/OFFの切り替えのスピードが「クロック周波数」と呼びます。
クロック周波数の単位はHz(ヘルツ)を使っており、イメージとしては1秒間に何回ON/OFFの切り替えが出来るか?を示しています。
(3-5) キャッシュ
(図3)
(4) パフォーマンスモニタのスケールについて
パフォーマンスモニタのスケール(縦方向の目盛り)は0~100で表現されていますが、カウンタの値によってはこの範囲に収まらない場合も当然でてきます。例えばスケール「1.0」で値が「500」の場合は上限をはみ出していますが、スケールを「0.1」に変更する事で値が「50」となりメモリの範囲内で表示できるようになります。この値を「何倍にして表示するか?」の指標がスケールです。
(図4)
(例)Available MBytes(緑)
スケール:0.000001
値:約82
↓
82バイト×1,000,000
= 82,000,000 byte
=78.2 MB