إيقاف تشغيل بطاقة الرسومات المخصصة لتوفير الطاقة

هذه المقالة مخصصة لأصدقائي الذين نادرًا ما يطفئون أجهزة الكمبيوتر المكتبية، وغالبًا ما يعملون عن بُعد على أجهزة الكمبيوتر المكتبية في منازلهم.

جهازي الرئيسي للعمل وجهازي للألعاب هو نفس الجهاز، شاشتي بدقة 4K وبمعدل تحديث 144 هرتز، وأستخدم عادةً بطاقة الرسومات المخصصة، مما يجعل تشغيل العمليات العادية أكثر سلاسة، لكن الاستهلاك أيضًا أكبر بشكل ملحوظ.

قد تكون النتائج في لقطات الشاشة التالية غير دقيقة لأنها تتضمن جهازًا صغيرًا J4125، حيث يكون الاستهلاك اليومي حوالي 18 واط

عند عدم تشغيل الألعاب، يمكن أن يصل استهلاك الطاقة إلى ذروته عند 192 واط عند التمرير السريع بالماوس على سطح المكتب

بعد إيقاف تشغيل بطاقة الرسومات المخصصة، ينخفض معدل التحديث إلى 60 هرتز، ويقل استهلاك الطاقة إلى حوالي 120 واط.

عند العودة للعمل من الخارج عبر النفق، أستخدم جهازًا مبتدئًا من Tencent، مع نطاق ترددي صغير، ومعدل تحديث البعيد 30 هرتز فقط، وفي هذه الحالة لا فائدة من استخدام بطاقة الرسومات المخصصة، ويمكن التفكير في التبديل إلى بطاقة الرسومات المدمجة.

في معظم الأوقات، لا أستخدم سطح المكتب البعيد مباشرة، بل أستخدم تطوير Visual Studio Code عن بعد، والميزة هي أنه خفي، ويستهلك نطاقًا تردديًا صغيرًا، وتقريبًا يوفر تجربة تطوير محلية.

عند تحرير الكود العادي، يكون الاستهلاك حوالي 72 واط، مقارنة بـ 120 واط قبل إيقاف تشغيل بطاقة الرسومات المخصصة، مما يوفر بعض الطاقة.

عند استخدام remote ssh للتطوير عن بعد، يمكن استخدام نص برمجي لإيقاف تشغيل بطاقة الرسومات المخصصة.

احفظ النص البرمجي كـ switch_dedicate_graphic_cards.ps1، واستخدمه كالتالي: switch_dedicate_graphic_cards.ps1 off

# الاستخدام: switch_dedicate_graphic_cards.ps1 on|off

# الحصول على المعلمات
$switch = $args[0]

# الخروج إذا لم يتم تمرير أي معلمة
if ($switch -eq $null) {
    Write-Host "الاستخدام: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
    exit
}

# الحصول على أجهزة العرض
$displayDevices =  Get-CimInstance -Namespace root\cimv2 -ClassName Win32_VideoController

# إذا لم يكن هناك جهاز عرض أو كان هناك جهاز عرض واحد فقط، اخرج
if ($displayDevices.Count -le 1) {
    Write-Host "لا يوجد جهاز عرض."
    exit
}

# الحصول على بطاقات الرسومات المخصصة
$dedicatedGraphicCards = $displayDevices | Where-Object { $_.Description -like "*NVIDIA*" }

# إذا لم تكن هناك بطاقة رسومات مخصصة، اخرج
if ($dedicatedGraphicCards.Count -eq 0) {
    Write-Host "لا توجد بطاقة رسومات مخصصة."
    exit
}

# تشغيل أو إيقاف بطاقات الرسومات المخصصة
if ($switch -eq "on") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /enable-device $_.PNPDeviceID }
    Write-Host "تم تشغيل بطاقات الرسومات المخصصة."
} elseif ($switch -eq "off") {
    $dedicatedGraphicCards | ForEach-Object { pnputil /disable-device $_.PNPDeviceID }
    Write-Host "تم إيقاف بطاقات الرسومات المخصصة."
} else {
    Write-Host "معلمة غير صالحة."
    Write-Host "الاستخدام: switch_dedicate_graphic_cards.ps1 on|off" -ForegroundColor Yellow
}