बिजली बचत के लिए डिस्क्रीट GPU को बंद करें

यह लेख उन लोगों के लिए है जिनका डेस्कटॉप कभी बंद नहीं होता और वे अपने घर के डेस्कटॉप पर दूरस्थ रूप से काम करते हैं।

मेरा प्रमुख कार्य स्टेशन और गेमिंग मशीन एक ही मशीन है, मेरी डिस्प्ले 4K 144Hz है, और आमतौर पर मैं GPU को चालू रखता हूं, जिससे सामान्य संचालन में भी डिस्प्ले अधिक सुचारु हो जाता है, लेकिन बिजली की खपत भी स्पष्ट रूप से अधिक होती है।

नीचे के स्क्रीनशॉट में एक J4125 छोटा होस्ट भी शामिल है, जिसकी दैनिक बिजली खपत लगभग 18 वाट है, इसलिए निष्कर्ष अशुद्ध हो सकते हैं।

गेम न चलाते हुए, माउस को डेस्कटॉप पर तेजी से स्लाइड करने पर शिखर बिजली खपत 192 वाट तक पहुंच सकती है।

GPU बंद करने के बाद, रिफ्रेश दर 60Hz तक गिर जाती है, और शिखर बिजली खपत 120 वाट तक गिर जाती है।

दूरस्थ टनल के माध्यम से घर पर काम करते समय मैं टेंसेंट के एक एंट्री-लेवल होस्ट का उपयोग करता हूं, जिसकी बैंडविड्थ कम होती है, और दूरस्थ रिफ्रेश दर केवल 30Hz होती है। ऐसी स्थिति में GPU का उपयोग करने का कोई अर्थ नहीं है, और इंटीग्रेटेड GPU पर स्विच करने पर विचार किया जा सकता है।

अधिकांश समय, मैं सीधे रिमोट डेस्कटॉप का उपयोग नहीं करता, बल्कि VSCode के रिमोट डेवलपमेंट का उपयोग करता हूं, जिसके लाभ ये हैं कि यह छिपा हुआ है, बैंडविड्थ का कम उपयोग करता है, और लगभग स्थानीय विकास का अनुभव प्रदान करता है।

सामान्य कोड संपादन के दौरान लगभग 72 वाट, जो 120 वाट के मुकाबले बिजली बचत में काफी सुधार दिखाता है।

remote-ssh का उपयोग करके दूरस्थ विकास करते समय, आप स्क्रिप्ट का उपयोग करके GPU को बंद कर सकते हैं।

स्क्रिप्ट को switch_dedicate_graphic_cards.ps1 के रूप में सहेजें, उपयोग विधि: switch_dedicate_graphic_cards.ps1 off

# Usage: switch_dedicate_graphic_cards.ps1 on|off

# Get parameters
$switch = $args[0]

# exit if no parameter is passed
if ($switch -eq $null) {
    Write-Host "Usage: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
    exit
}

# Get display devices
$displayDevices =  Get-CimInstance -Namespace root\cimv2 -ClassName Win32_VideoController

# If there is no display device or only one display device, exit
if ($displayDevices.Count -le 1) {
    Write-Host "No display device found."
    exit
}

# Get dedicated graphic cards
$dedicatedGraphicCards = $displayDevices | Where-Object { $_.Description -like "*NVIDIA*" }

# If there is no dedicated graphic card, exit
if ($dedicatedGraphicCards.Count -eq 0) {
    Write-Host "No dedicated graphic card found."
    exit
}

# turn dedicated graphic cards on or off
if ($switch -eq "on") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /enable-device $_.PNPDeviceID }
    Write-Host "Dedicated graphic cards are turned on."
} elseif ($switch -eq "off") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /disable-device $_.PNPDeviceID }
    Write-Host "Dedicated graphic cards are turned off."
} else {
    Write-Host "Invalid parameter."
    Write-Host "Usage: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
}