De discrete grafische kaart uitschakelen om stroom te besparen

Deze post deel ik met vrienden die hun desktopcomputer zelden uitzetten en vaak op afstand naar hun thuisdesktop werken.

Mijn primaire werkcomputer en gamingcomputer zijn hetzelfde apparaat. Het scherm is 4K 144Hz, ik laat de discrete grafische kaart meestal ingeschakeld, zodat de weergave in het dagelijks gebruik soepeler is, maar het verbruik is ook duidelijk hoger.

De volgende screenshots bevatten ook een J4125 mini-host met een dagelijks verbruik van ongeveer 18W, dus de conclusies kunnen enigszins onnauwkeurig zijn.

Zonder game is het piekvermogen bij snel over het bureaublad bewegen met de muis192w

Nadat de discrete grafische kaart is uitgeschakeld, daalt de vernieuwingsfrequentie tot 60Hz en het piekvermogen tot ongeveer120w.

Als ik op afstand via tunnel thuis werk, gebruik ik een instapmodel-host van Tencent met een kleinere bandbreedte. De vernieuwingsfrequentie aan de afstandskant is slechts 30Hz. In dit geval is het gebruik van een discrete grafische kaart zinloos, dus kun je overwegen over te schakelen op de geïntegreerde grafische kaart.

Meestal gebruik ik geen directe externe bureaubladverbinding, maar liever de externe ontwikkeling van VSCode. De voordelen zijn dat het onopvallend is, weinig bandbreedte gebruikt en bijna dezelfde ervaring biedt als lokaal ontwikkelen.

Tijdens gewone codebewerkingen is het verbruik ongeveer 72w, wat een zekere besparing oplevert vergeleken met het 120w voor het uitschakelen van de discrete grafische kaart.

Gebruik een script om de discrete grafische kaart uit te schakelen bij gebruik van remote ssh voor externe ontwikkeling.

Sla het script op als switch_dedicate_graphic_cards.ps1 en gebruik het als volgt: switch_dedicate_graphic_cards.ps1 off

# Gebruik: switch_dedicate_graphic_cards.ps1 on|off

# Parameters ophalen
$switch = $args[0]

# Afsluiten als er geen parameter is doorgegeven
if ($switch -eq $null) {
    Write-Host "Gebruik: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
    exit
}

# Beeldschermapparaten ophalen
$displayDevices =  Get-CimInstance -Namespace root\cimv2 -ClassName Win32_VideoController

# Als er geen beeldschermapparaat is of slechts één, afsluiten
if ($displayDevices.Count -le 1) {
    Write-Host "Geen beeldschermapparaat gevonden."
    exit
}

# Discrete grafische kaarten ophalen
$dedicatedGraphicCards = $displayDevices | Where-Object { $_.Description -like "*NVIDIA*" }

# Als er geen discrete grafische kaart is, afsluiten
if ($dedicatedGraphicCards.Count -eq 0) {
    Write-Host "Geen discrete grafische kaart gevonden."
    exit
}

# Schakel discrete grafische kaarten in of uit
if ($switch -eq "on") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /enable-device $_.PNPDeviceID }
    Write-Host "Discrete grafische kaarten zijn ingeschakeld."
} elseif ($switch -eq "off") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /disable-device $_.PNPDeviceID }
    Write-Host "Discrete grafische kaarten zijn uitgeschakeld."
} else {
    Write-Host "Ongeldige parameter."
    Write-Host "Gebruik: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
}