Desligando a GPU dedicada para economizar energia

Este artigo é compartilhado com amigos que raramente desligam seus computadores desktop e frequentemente trabalham remotamente em seus computadores desktop em casa.

Este artigo é compartilhado com amigos que raramente desligam seus computadores desktop e frequentemente trabalham remotamente em seus computadores desktop em casa.

Meu computador principal de trabalho e de jogos é a mesma máquina, o monitor é 4K 144Hz, diariamente costumo deixar a GPU dedicada ligada, o que deixa as operações mais suaves, mas também aumenta claramente o consumo de energia.

Os valores de potência nas capturas de tela abaixo incluem um mini PC J4125, cujo consumo diário é de aproximadamente 18W, portanto, as conclusões podem não ser totalmente precisas.

Sem jogos, o pico de potência ao mover rapidamente o mouse na área de trabalho pode chegar a 192W

Após desligar a GPU dedicada, a taxa de atualização cai para 60Hz e o pico de potência cai para cerca de 120W.

Ao trabalhar remotamente em casa através de um túnel, uso um computador de entrada da Tencent, com largura de banda pequena, e a taxa de atualização remota é de apenas 30Hz. Nesse caso, usar a GPU dedicada não faz sentido e pode-se considerar alternar para a GPU integrada.

Na maioria das vezes, não uso o desktop remoto diretamente, mas sim o desenvolvimento remoto do vscode, cuja vantagem é ser discreto, usar pouca largura de banda e proporcionar quase a mesma experiência de desenvolvimento local.

Durante a edição normal de código, o consumo é de aproximadamente 72W, comparado com 120W antes de desligar a GPU dedicada, o que representa uma certa economia de energia.

Ao usar o remote ssh para desenvolvimento remoto, pode-se usar um script para desligar a GPU dedicada.

Salve o script como switch_dedicate_graphic_cards.ps1 e use-o da seguinte forma: switch_dedicate_graphic_cards.ps1 off

# Uso: switch_dedicate_graphic_cards.ps1 on|off

# Obter parâmetros
$switch = $args[0]

# sair se nenhum parâmetro for passado
if ($switch -eq $null) {
    Write-Host "Uso: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
    exit
}

# Obter dispositivos de exibição
$displayDevices =  Get-CimInstance -Namespace root\cimv2 -ClassName Win32_VideoController

# Se não houver dispositivo de exibição ou houver apenas um, sair
if ($displayDevices.Count -le 1) {
    Write-Host "Nenhum dispositivo de exibição encontrado."
    exit
}

# Obter GPUs dedicadas
$dedicatedGraphicCards = $displayDevices | Where-Object { $_.Description -like "*NVIDIA*" }

# Se não houver GPU dedicada, sair
if ($dedicatedGraphicCards.Count -eq 0) {
    Write-Host "Nenhuma GPU dedicada encontrada."
    exit
}

# ligar ou desligar as GPUs dedicadas
if ($switch -eq "on") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /enable-device $_.PNPDeviceID }
    Write-Host "As GPUs dedicadas foram ligadas."
} elseif ($switch -eq "off") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /disable-device $_.PNPDeviceID }
    Write-Host "As GPUs dedicadas foram desligadas."
} else {
    Write-Host "Parâmetro inválido."
    Write-Host "Uso: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
}