Wyłączanie karty graficznej w celu oszczędzania energii
Categories:
Ten artykuł jest przeznaczony dla osób, które rzadko wyłączają swój komputer stacjonarny i często pracują zdalnie na swoim domowym PC.
Mój główny komputer roboczy i gamingowy to ta sama maszyna, monitor to 4K 144Hz, codziennie pracuję z włączoną kartą graficzną, co sprawia, że operacje są bardziej płynne, ale również znacznie zwiększa zużycie energii.
Wykresy mocy zawierają również mały komputer J4125, którego codzienne zużycie energii wynosi około 18W, więc wnioski mogą być nieco niedokładne.
Bez gry, szczytowe zużycie mocy podczas szybkiego przesuwania myszą na pulpicie może wynieść 192W

Po wyłączeniu karty graficznej odświeżenie spada do 60Hz, a szczytowe zużycie mocy spada do około 120W.

Pracując zdalnie przez tunel zewnętrzny, używam wejścia do niskiego poziomu Tencent, pasmo jest małe, a odświeżenie po stronie zdalnej wynosi tylko 30Hz. W takim przypadku używanie karty graficznej nie ma sensu, można rozważyć przełączenie się na grafikę zintegrowaną.
W większości przypadków nie używam bezpośrednio pulpitu zdalnego, ale raczej zdalnego programowania w VSCode, co ma zalety dyskrecji, małego zużycia pasma i praktycznie takiego samego doświadczenia jak programowanie lokalne.

Podczas zwykłego edytowania kodu zużycie mocy wynosi około 72W, w porównaniu z 120W przed wyłączeniem karty graficznej, co daje pewne efekty oszczędzania energii.

Używając remote ssh do zdalnego programowania, można użyć skryptu do wyłączenia karty graficznej.
Skrypt zapisany jako switch_dedicate_graphic_cards.ps1, użyj go jako switch_dedicate_graphic_cards.ps1 off
# Użycie: switch_dedicate_graphic_cards.ps1 on|off
# Pobierz parametry
$switch = $args[0]
# wyjdź, jeśli nie przekazano parametru
if ($switch -eq $null) {
Write-Host "Użycie: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
exit
}
# Pobierz urządzenia wyświetlacza
$displayDevices = Get-CimInstance -Namespace root\cimv2 -ClassName Win32_VideoController
# Jeśli nie ma urządzenia wyświetlającego lub jest tylko jedno urządzenie wyświetlające, wyjdź
if ($displayDevices.Count -le 1) {
Write-Host "Nie znaleziono urządzenia wyświetlającego."
exit
}
# Pobierz dedykowane karty graficzne
$dedicatedGraphicCards = $displayDevices | Where-Object { $_.Description -like "*NVIDIA*" }
# Jeśli nie ma dedykowanej karty graficznej, wyjdź
if ($dedicatedGraphicCards.Count -eq 0) {
Write-Host "Nie znaleziono dedykowanej karty graficznej."
exit
}
# Włącz lub wyłącz dedykowane karty graficzne
if ($switch -eq "on") {
$dedicatedGraphicCards | ForEach-Object { pnputil /enable-device $_.PNPDeviceID }
Write-Host "Dedykowane karty graficzne są włączone."
} elseif ($switch -eq "off") {
$dedicatedGraphicCards | ForEach-Object { pnputil /disable-device $_.PNPDeviceID }
Write-Host "Dedykowane karty graficzne są wyłączone."
} else {
Write-Host "Nieprawidłowy parametr."
Write-Host "Użycie: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
}