このドキュメントでは、Compute Engine のパフォーマンス モニタリング ユニット(PMU)の動作、課金、制限について説明します。PMU は C4 仮想マシン(VM)インスタンスでのみ使用できます。
PMU は、プロセッサがコードを実行する方法をモニタリングする CPU コア内のハードウェア コンポーネントです。C4 VM で PMU を有効にすると、VM でパフォーマンス モニタリング ソフトウェアを使用して PMU のパフォーマンス カウンタにアクセスできます。これらのカウンタは、VM で実行されているソフトウェア内のパフォーマンスの問題を特定して対処するのに役立ちます。この情報は、ハイ パフォーマンス コンピューティング(HPC)ワークロードや ML ワークロードなど、パフォーマンスの影響が大きいワークロードを最適化する際に役立ちます。
PMU の仕組み
PMU は、パフォーマンス モニタリング カウンタ(PMC)と呼ばれる一連のハードウェア カウンタで構成されています。これらのカウンタは、CPU 内で低レベルのプロセッサ イベント(分岐ミスやキャッシュミスなど)が発生するたびにカウントするモデル固有のレジスタです。PMU の PMC を読み取って構成するには、Intel VTune Profiler などのパフォーマンス モニタリング ソフトウェアを使用します。
デフォルトでは、VM 内で PMU は無効になっています。これを有効にするには、次のいずれかの PMU タイプを有効にして、追跡する低レベルの CPU イベントのタイプを指定します。
アーキテクチャ(
ARCHITECTURAL
): 次のアーキテクチャ パフォーマンス イベントを測定できます。分岐命令の破棄: 破棄された分岐命令の数。このイベントを使用して、コードの実行を測定し、潜在的なパフォーマンスのボトルネックを特定します。
ブランチミス: 予測が誤って、プロセッサが停止し、フェッチされた命令が破棄された分岐命令の数。このイベントの数値が高い場合は、CPU パフォーマンスを最適化できます。
Instructions retired: CPU が正常に処理した命令の数。このイベントは、CPU の命令スループットを測定するために使用します。
トップダウン スロット: 命令の同時実行に使用される、プロセッサのパイプライン内の使用可能なスロットの数。このイベントを使用して、コードがプロセッサのリソースをどれだけ効率的に使用しているかを把握します。
停止していないコアサイクル: 電力管理や割り込みなどによりスレッドが停止していないコアサイクルの数。このイベントを使用して、プロセッサの全体的な使用状況を評価します。
停止していない参照サイクル: コアが停止していないときの参照サイクル数(データや命令のフェッチ時など)。コアは、
HLT
またはMWAIT
命令を実行すると停止します。リファレンス サイクルは固定周波数で動作し、電力を節約するためにプロセッサの速度が変化しても安定した時間基準を提供します。このイベントを使用して、タスクに費やした時間を測定し、コードのパフォーマンスのボトルネックを特定します。
標準(
STANDARD
): アーキテクチャ PMU タイプのすべてのイベントと、レベル 2(L2)キャッシュ イベントなど、CPU コア内のローカル イベントを測定できます。拡張(
ENHANCED
): 標準 PMU タイプのすべてのイベント、レベル 3(L3)キャッシュ イベントなど、CPU コア外のローカル イベントを測定できます。
VM で PMU を有効にすると、PMU はバックグラウンドで実行され、PMC を使用してパフォーマンス イベントを継続的にモニタリングします。必要に応じて、任意のパフォーマンス モニタリング ソフトウェアを使用して、特定の PMC のしきい値を構成できます。PMC が指定されたしきい値を超えると、PMU はソフトウェアに通知します。
制限事項
PMU には次の制限が適用されます。
PMU を有効にできるのは、第 5 世代の Intel Xeon スケーラブル プロセッサ(Emerald Rapids)を指定する C4 VM のみです。これは、C4 VM でデフォルトで指定されます。この CPU プラットフォームでサポートされているパフォーマンス イベントの一覧については、emeraldrapids_core.json をご覧ください。
拡張 PMU タイプを有効にできるのは、96 個または 192 個の vCPU を持つ C4 マシンタイプでのみです。
料金
VM で PMU を有効または無効にしても、費用は発生しません。
次のステップ
- VM で PMU を有効にする方法を学習する。