このドキュメントでは、実行中の Compute Engine インスタンスのトポロジを表示する方法について説明します。コンピューティング インスタンスを作成して起動すると、ゾーン内の物理的な場所を確認して、クラスタのトポロジを把握できます。この情報は、次の操作に役立ちます。
ジョブを整理する: ワークロード設計を調整して、たとえば、通信量の多いタスクを物理的に最も近いコンピューティング インスタンスに配置できます。
問題のトラブルシューティング: 特定のコンピューティング インスタンスが予期せず離れた場所に配置されている場合は、ネットワーク レイテンシやパフォーマンスの問題を調査できます。
プロジェクトで実行されているコンピューティング インスタンスを確認するには、コンピューティング インスタンスのリストを表示します。
制限事項
次の要件の 1 つ以上を満たすコンピューティング インスタンスのトポロジのみを表示できます。
コンピューティング インスタンスは、次のいずれかのマシンタイプを使用します。
A4X Max
A4X
A4
A3 Ultra
A3 Mega
8 個の GPU を搭載した A3 High
H4D
コンピューティング インスタンスでコンパクト プレースメント ポリシーが指定されている。
コンピューティング インスタンスは、高スループット(
HIGH_THROUGHPUT)タイプのワークロード ポリシーを指定するマネージド インスタンス グループ(MIG)の一部です。
コンピューティング インスタンスのトポロジについて
各コンピューティング インスタンスは、サーバー ブロックにある物理サーバー(ホスト)で実行されます。各ブロックはクラスタに属し、クラスタはGoogle Cloud ゾーン内のデータセンターに存在します。特定の要件を満たすコンピューティング インスタンスを表示すると、同じ要件を満たす他のコンピューティング インスタンスとの関係でトポロジを把握できます。具体的には、各コンピューティング インスタンスの physicalHostTopology フィールドで次のサブフィールドを確認することで、コンピューティング インスタンスの物理的な位置を把握できます。
クラスタ(
cluster): コンピューティング インスタンスが存在するクラスタのグローバル名。クラスタは、複数のホストの論理グループをまとめたもので、複数のブロックにまたがることがあります。クラスタは、リソースの単一プールとして連携します。ブロック(
block): コンピューティング インスタンスが存在するブロックの組織固有の ID。ブロックは、グループ化された複数のホストの集合です。同じブロック内のコンピューティング インスタンスでは、ネットワーク レイテンシが低くなります。サブブロック(
subBlock): コンピューティング インスタンスが存在するサブブロックの組織固有の ID。サブブロックは、ブロック内の物理的なサブディビジョンであり、単一の物理エンクロージャ内のホストをグループ化します。同じサブブロック内のコンピューティング インスタンスでは、同じブロック内のコンピューティング インスタンスよりもネットワーク レイテンシが低くなります。ホスト(
host): コンピューティング インスタンスが存在するホストの組織固有の ID。ホストは、コンピューティング インスタンスが実行される単一の物理サーバーです。各ホストには、独自の物理 vCPU、メモリ、ストレージ、ネットワーク インターフェース カード(NIC)があります。隣接するホストのコンピューティング インスタンスでは、ネットワーク レイテンシが可能な限り低くなります。
実行中の 2 つのコンピューティング インスタンスが共有するサブフィールドが多いほど、物理的に近い場所に配置されます。この情報は、ネットワーク レイテンシを最小限に抑えるようにジョブを整理したり、より復元力の高いシステムを設計したりすることで、ワークロードを最適化するのに役立ちます。
始める前に
-
まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Google Cloud CLI をインストールします。インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
コンピューティング インスタンスのトポロジを確認するために必要な権限を取得するには、プロジェクトに対する Compute 閲覧者 (roles/compute.viewer)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、コンピューティング インスタンスのトポロジを確認するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
コンピューティング インスタンスのトポロジを確認するには、次の権限が必要です。
-
コンピューティング インスタンスの詳細を表示する: プロジェクトに対する
compute.instances.get -
コンピューティング インスタンスのリストを表示する: プロジェクトに対する
compute.instances.list
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
コンピューティング インスタンスのトポロジを確認する
実行中のコンピューティング インスタンスのトポロジを確認するには、次のいずれかの方法を使用します。
Google Cloud コンソール、gcloud CLI、または REST を使用してコンピューティング インスタンスのトポロジを確認する
複数のコンピューティング インスタンスのトポロジを同時に表示するには、REST API を使用します。または、次のオプションのいずれかを選択します。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[名前] 列で、詳細を表示するコンピューティング インスタンスの名前をクリックします。インスタンスの詳細を示すページが表示され、[詳細] タブが選択されています。
[基本情報] セクションで、[物理ホスト] フィールドの値を確認します。
gcloud
実行中のコンピューティング インスタンスのトポロジを表示するには、--flatten=resourceStatus.physicalHostTopology フラグを指定して gcloud compute instances describe コマンドを使用します。
gcloud compute instances describe INSTANCE_NAME \
--flatten=resourceStatus.physicalHostTopology \
--zone=ZONE
次のように置き換えます。
INSTANCE_NAME: コンピューティング インスタンス名。ZONE: コンピューティング インスタンスが存在するゾーン。
出力は次のようになります。
---
block: 3e3056e23cf91a5cb4a8621b6a52c100
cluster: europe-west1-cluster-jfhb
host: 1215168a4ecdfb434fd4d28056589059
subBlock: 0fc09525cbd5abd734342893ca1c083f
REST
実行中のコンピューティング インスタンスのトポロジを表示するには、次のいずれかの GET リクエストを行います。リクエストを行う場合は、fields クエリ パラメータを含め、コンピューティング インスタンスの name、machineType、physicalHostTopology フィールドのみを表示するように指定する必要があります。また、filter クエリ パラメータを含めて、実行中のコンピューティング インスタンスのみを一覧表示するように指定する必要があります。
すべてのゾーンのインスタンスのリストを表示するには:
instances.aggregatedListメソッドGET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING特定のゾーンのインスタンスのリストを表示するには:
instances.listメソッドGET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
次のように置き換えます。
PROJECT_ID: コンピューティング インスタンスが存在するプロジェクトの ID。ZONE: コンピューティング インスタンスが存在するゾーン。
出力は次のようになります。次の例では、コンピューティング インスタンス vm-01 と vm-02 が同じブロックにあります。
{
"items": [
{
"name": "vm-01",
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
"resourceStatus": {
"physicalHostTopology": {
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"cluster": "europe-west1-cluster-jfhb",
"host": "1215168a4ecdfb434fd4d28056589059",
"subBlock": "0fc09525cbd5abd734342893ca1c083f"
}
}
},
{
"name": "vm-02",
"machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
"resourceStatus": {
"physicalHostTopology": {
"block": "3e3056e23cf91a5cb4a8621b6a52c100",
"cluster": "europe-west1-cluster-jfhb",
"host": "2326279b5ecdfc545fd5e39167698168",
"subBlock": "1fc18636cbd4abd623553784ca2c174e"
}
}
},
...
]
}
コンピューティング インスタンスのリストを絞り込む場合は、filter クエリ パラメータでフィルタ式を編集します。
メタデータキーをクエリしてコンピューティング インスタンスのトポロジを確認する
physical_host_topology メタデータキーにクエリを実行して実行中のコンピューティング インスタンスのトポロジを表示するには、次のいずれかのオプションを選択します。
Linux インスタンス
Linux インスタンスに接続します。
curlを使用してphysical_host_topologyメタデータキーをクエリします。user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology出力は次のようになります。
{ "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": "1fc18636cbd4abd623553784ca2c174e" }
Windows インスタンス
Windows インスタンスに接続します。
Invoke-RestMethodコマンドを使用して、physical_host_topologyメタデータキーをクエリします。PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology") $value出力は次のようになります。
{ "block": "3e3056e23cf91a5cb4a8621b6a52c100", "cluster": "europe-west1-cluster-jfhb", "host": "2326279b5ecdfc545fd5e39167698168", "subBlock": "1fc18636cbd4abd623553784ca2c174e" }
次のステップ
コンピューティング インスタンスのホストイベントの詳細を確認する。
コンピューティング インスタンスをモニタリングする方法を学習する。