このページでは、パフォーマンス モニタリング ユニット(PMU)イベントを使用して、Google Kubernetes Engine(GKE)クラスタノードの CPU パフォーマンスを分析する方法について説明します。
このページは、パフォーマンスに敏感なワークロードがあり、開発、デバッグ、ベンチマーク、継続的なモニタリング中に GKE ノードでワークロードの CPU 実行を調べたいクラスタ管理者を対象としています。
始める前に
作業を始める前に、次のタスクが完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components updateコマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。
要件と制限事項
PMU イベントを有効にする場合は、次の要件と制限事項に注意してください。
- クラスタは Standard モードである必要があります。
- クラスタでノード自動プロビジョニングが有効になっている場合、自動プロビジョニングによって作成されたノードプールでは PMU イベントを有効にできません。PMU イベントを有効にした後にノードの自動プロビジョニングを有効にしても、既存のノードプールには影響しません。
- クラスタ ノードプールで、PMU をサポートするマシンシリーズが実行されている必要があります。サポートされているマシンタイプの詳細については、PMU の制限事項の表をご覧ください。
GKE クラスタを作成する
デフォルトのノードプールで PMU イベントを有効にしてクラスタを作成します。
gcloud container clusters create CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --performance-monitoring-unit=PMU_LEVEL \
    --machine-type=MACHINE_TYPE
次のように置き換えます。
- CLUSTER_NAME: 新しいクラスタの名前。
- COMPUTE_LOCATION: 新しいクラスタの Compute Engine のロケーション。
- PMU_LEVEL: 収集する PMU イベントのタイプ。詳細については、Compute Engine のドキュメントの PMU の仕組みをご覧ください。サポートされている値は次のとおりです。- architectural: 非ラストレベル キャッシュ(LLC)イベントに関連するアーキテクチャ PMU イベントを有効にします。
- standard: アーキテクチャ イベントを含み、L2 キャッシュ イベントなどのコア PMU イベントを有効にします。
- enhanced: 標準イベントを含み、CPU コア外のローカル イベントと LLC PMU イベントを有効にします。このオプションは、特定の数の vCPU を持つ VM でのみ使用できます。詳細については、Compute Engine のドキュメントの制限事項をご覧ください。
 
- MACHINE_TYPE: ノードの Compute Engine マシンタイプ。サポートされているマシンタイプの一覧については、Compute Engine ドキュメントの制限事項をご覧ください。
gcloud container node-pools create コマンドを使用して、既存のクラスタの新しいノードプールを作成することもできます。
クラスタに接続する
クラスタと通信を行うように kubectl を構成します。
gcloud container clusters get-credentials CLUSTER_NAME \
    --location=COMPUTE_LOCATION
PMU が有効になっていることを確認する
カーネル メッセージを調べて、クラスタノードで PMU が有効になっていることを確認します。
- クラスタ内のノードのリストを取得します。 - kubectl get nodes- 出力は次のようになります。 - NAME STATUS ROLES AGE VERSION gke-c1-default-pool-44be3e13-prr1 Ready <none> 5d23h v1.27.13-gke.1070000 gke-c1-default-pool-7abc4a17-9dlg Ready <none> 2d21h v1.27.13-gke.1070000 gke-c1-default-pool-ed969ef6-4gzp Ready <none> 5d v1.27.13-gke.1070000- いずれかのノードの名前を記録します。 
- ノードの Compute Engine のロケーションを取得します。 - gcloud compute instances list --filter=NODE_NAME- NODE_NAMEは、前の手順のノードの名前に置き換えます。- 出力は次のようになります。 - NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gke-c1-default-pool-44be3e13-prr1 us-central1-c c4-standard-4 true 10.128.0.67 34.170.44.164 RUNNING- Compute Engine - ZONEの名前を記録します。この例では- us-central1-cです。
- SSH を使用してクラスタノードに接続します。 - gcloud compute ssh NODE_NAME \ --zone=COMPUTE_ZONE- COMPUTE_ZONEは、前のステップで取得した Compute Engine ゾーンの名前に置き換えます。
- カーネル メッセージを調べます。 - sudo dmesg |grep -A10 -i "Performance"- 出力は次のようになります。 - [ 0.307634] Performance Events: generic architected perfmon, full- width counters, Intel PMU driver. # Several lines omitted- この出力は、PMU ドライバが初期化されたことを示しています。 
次のステップ
- 最小 CPU プラットフォームを選択する方法を学習する