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

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

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

قد تكون النتائج في لقطات الشاشة التالية غير دقيقة حيث يرافقها جهاز صغير 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
}