Windows VM での GPU パフォーマンスのモニタリング


リソースの利用効率を高めるために、仮想マシン(VM)インスタンスの GPU 使用率を追跡できます。

GPU の使用率がわかったら、リソースの自動スケーリングを可能にするマネージド インスタンス グループの設定などのタスクを実行できます。

Cloud Monitoring を使用して GPU 指標を確認するには、次の手順を行います。

  1. 各 VM で、GPU 指標レポート スクリプトを設定します。このスクリプトは、GPU 指標レポート エージェントをインストールします。このエージェントは、VM で一定の間隔を置いて実行され、収集した GPU データを Cloud Monitoring に送信します。
  2. 各 VM でスクリプトを実行します。
  3. 各 VM で、GPU 指標レポート エージェントを起動時に自動的に開始するように設定します。
  4. Google Cloud の Cloud Monitoring でログを表示します。

GPU 指標レポート スクリプトを設定する

要件

各 VM で次の要件を満たしていることを確認します。

スクリプトをダウンロードする

管理者として PowerShell ターミナルを開き、Invoke-WebRequest コマンドを使用してスクリプトをダウンロードします。

Invoke-WebRequest は PowerShell 3.0 以降で使用できます。Google Cloud では、コピーしたコードブロックを貼り付ける場合は ctrl+v の使用をおすすめします。

mkdir c:\google-scripts
cd c:\google-scripts
Invoke-Webrequest -uri https://raw.githubusercontent.com/GoogleCloudPlatform/compute-gpu-monitoring/main/windows/gce-gpu-monitoring-cuda.ps1 -outfile gce-gpu-monitoring-cuda.ps1

スクリプトを実行する

cd c:\google-scripts
.\gce-gpu-monitoring-cuda.ps1

起動時に自動的に開始するようにエージェントを構成する

GPU 指標レポート エージェントがシステム起動時に実行されるように設定するには、次のコマンドを使用してエージェントを Windows タスク スケジューラに追加します。

$Trigger= New-ScheduledTaskTrigger -AtStartup
$Trigger.ExecutionTimeLimit = "PT0S"
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\google-scripts\gce-gpu-monitoring-cuda.ps1"
$settingsSet = New-ScheduledTaskSettingsSet
# Set the Execution Time Limit to unlimited on all versions of Windows Server
$settingsSet.ExecutionTimeLimit = 'PT0S'
Register-ScheduledTask -TaskName "MonitoringGPUs" -Trigger $Trigger -User $User -Action $Action -Force -Settings $settingsSet

Cloud Monitoring で指標を確認する

  1. Google Cloud コンソールで、[Metrics Explorer] ページに移動します。

    [Monitoring] に移動

  2. [指標を選択] メニューを開きます。

  3. [リソース] メニューで、[VM インスタンス] を選択します。

  4. [指標カテゴリ] メニューで、[カスタム] を選択します。

  5. [指標] メニューで、グラフにする指標を選択します。例: custom/instance/gpu/utilization

  6. [適用] をクリックします。

    GPU 使用率は次の出力のようになります。

    Cloud Monitoring の開始。

利用可能な指標

指標名 説明

instance/gpu/utilization

過去のサンプル期間に対して、1 つ以上のカーネルが GPU で実行されていた時間の割合。

instance/gpu/memory_utilization

過去のサンプル期間に対して、グローバル(デバイス)メモリの読み書きが実行された時間の割合。

instance/gpu/memory_total

インストールされている GPU メモリの合計。

instance/gpu/memory_used

アクティブなコンテキストによって割り当てられた合計メモリ。

instance/gpu/memory_used_percent

アクティブなコンテキストによって割り当てられた合計メモリの割合。値の範囲は 0~100 です。

instance/gpu/memory_free

空きメモリの合計。

instance/gpu/temperature

コア GPU の温度(°C)。

次のステップ