Как получить информацию об использовании графического процессора и памяти графического процессора для процесса с помощью powershell7

Как получить информацию об использовании графического процессора и памяти графического процессора для процесса с помощью powershell7

Я пытался Get-Processполучить Get-CimInstance Win32_Processданные об использовании графического процессора и памяти графического процессора, но ни один из них не может предоставить эту информацию.

В диспетчере задач Windows может отображаться память графического процессора.

Итак, есть ли способ получить их в PowerShell?

решение1

Windows используетСчетчики производительностидля отслеживания такого рода вещей. Вы можете получить значения в powershell через Get-Counter. В зависимости от вашего графического процессора и драйверов, у вас могут быть доступны более конкретные счетчики, но эти примеры всегда должны быть доступны:

# Example to get GPU usage counters for a specific process:
$p = Get-Process dwm
((Get-Counter "\GPU Process Memory(pid_$($p.id)*)\Local Usage").CounterSamples | where CookedValue).CookedValue | 
    foreach {Write-Output "Process $($P.Name) GPU Process Memory $([math]::Round($_/1MB,2)) MB"}
((Get-Counter "\GPU Engine(pid_$($p.id)*engtype_3D)\Utilization Percentage").CounterSamples | where CookedValue).CookedValue |
    foreach {Write-Output "Process $($P.Name) GPU Engine Usage $([math]::Round($_,2))%"}

# Outputs:
Process dwm GPU Process Memory 259.36 MB
Process dwm GPU Engine Usage 0.47%


# Example to get total GPU usage counters:
$GpuMemTotal = (((Get-Counter "\GPU Process Memory(*)\Local Usage").CounterSamples | where CookedValue).CookedValue | measure -sum).sum
    Write-Output "Total GPU Process Memory Local Usage: $([math]::Round($GpuMemTotal/1MB,2)) MB"
$GpuUseTotal = (((Get-Counter "\GPU Engine(*engtype_3D)\Utilization Percentage").CounterSamples | where CookedValue).CookedValue | measure -sum).sum
    Write-Output "Total GPU Engine Usage: $([math]::Round($GpuUseTotal,2))%"

# Outputs:
Total GPU Process Memory Local Usage: 511.36 MB
Total GPU Engine Usage: 0.77%

Я нашел эти имена счетчиков, запустив Get-Counter -ListSet 'GPU*'и взяв Counterзначения оттуда. Похоже, что использование движка GPU делится на 4 типа:

engtype_3D
engtype_VideoDecode
engtype_Copy
engtype_VideoProcessing

Я просто суммирую engtype_3Dпример, так как это единственный пример использования в моей системе. Все эти значения совпадают с тем, что отображается в диспетчере задач Windows, так что они должны быть достаточно точными.

Связанный контент