Disattiva la scheda grafica dedicata per risparmiare energia
Categories:
Questo articolo è dedicato a chi lascia raramente spento il PC desktop e spesso accede in remoto al proprio computer di casa.
Il mio PC principale per lavoro e giochi è la stessa macchina. Il monitor è 4K a 144Hz e di solito tengo attiva la scheda grafica dedicata, in modo che le normali operazioni siano più fluide. Tuttavia, il consumo energetico è decisamente maggiore.
Le letture di potenza negli screenshot includono anche un mini PC J4125, il cui consumo medio è di circa 18W, quindi le conclusioni potrebbero non essere del tutto accurate.
Senza avviare giochi, il picco di consumo durante il movimento rapido del mouse sul desktop può raggiungere i 192W.

Dopo aver disattivato la scheda grafica dedicata, il refresh rate scende a 60Hz e il picco di consumo si riduce a circa 120W.

Quando lavoro da remoto, utilizzo un PC di base di Tencent con larghezza di banda ridotta. Il refresh rate remoto è solo di 30Hz, quindi non ha senso utilizzare la scheda grafica dedicata; è meglio passare alla grafica integrata.
Nella maggior parte dei casi non uso direttamente il desktop remoto, ma preferisco lo sviluppo remoto di VS Code. I vantaggi sono la discrezione, l’uso ridotto della larghezza di banda e un’esperienza quasi paragonabile a quella locale.

Durante la normale modifica del codice, il consumo è di circa 72W, rispetto ai 120W prima di disattivare la scheda grafica dedicata. Si nota un certo effetto di risparmio energetico.

Quando si utilizza remote ssh per lo sviluppo remoto, è possibile disattivare la scheda grafica con uno script.
Salvare lo script come switch_dedicate_graphic_cards.ps1 e utilizzarlo con switch_dedicate_graphic_cards.ps1 off.
# Uso: switch_dedicate_graphic_cards.ps1 on|off
# Ottieni i parametri
$switch = $args[0]
# Esci se non viene passato alcun parametro
if ($switch -eq $null) {
Write-Host "Uso: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
exit
}
# Ottieni i dispositivi display
$displayDevices = Get-CimInstance -Namespace root\cimv2 -ClassName Win32_VideoController
# Se non ci sono dispositivi display o solo uno, esci
if ($displayDevices.Count -le 1) {
Write-Host "Nessun dispositivo display trovato."
exit
}
# Ottieni le schede grafiche dedicate
$dedicatedGraphicCards = $displayDevices | Where-Object { $_.Description -like "*NVIDIA*" }
# Se non ci sono schede grafiche dedicate, esci
if ($dedicatedGraphicCards.Count -eq 0) {
Write-Host "Nessuna scheda grafica dedicata trovata."
exit
}
# Attiva o disattiva le schede grafiche dedicate
if ($switch -eq "on") {
$dedicatedGraphicCards | ForEach-Object { pnputil /enable-device $_.PNPDeviceID }
Write-Host "Le schede grafiche dedicate sono state attivate."
} elseif ($switch -eq "off") {
$dedicatedGraphicCards | ForEach-Object { pnputil /disable-device $_.PNPDeviceID }
Write-Host "Le schede grafiche dedicate sono state disattivate."
} else {
Write-Host "Parametro non valido."
Write-Host "Uso: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
}