Скрипт Windows PowerPlan Switcher за Nvidia ComputerBase Forum

Зашеметяване

Капитан

Написах скрипт, който автоматично променя плана за захранване на Windows в зависимост от натоварването на графичния процесор на Nvidia и P-State (Съвместим само с графични карти Nvidia). Така че аз комбинирам енергоспестяващия план "Балансиран" за неигриване с енергоспестяващ план "Висока производителност", докато графичната карта е заредена, така че играя.

nvidia

Веднага щом графичната карта се промени на P0 (Performance State) и има над 25% използване на графичния процесор: висока производителност
Докато графичната карта е в енергоспестяващ режим или има по-малко от 25% използване на графичния процесор: Балансирано
Всички параметри могат да се конфигурират свободно в блока ## To Fill ##

Особено при игрите, процесорът има много колебаещо се натоварване, така че с балансирания план за икономия на енергия в лимита на графичния процесор могат да възникнат значителни латентности и забавяния, тъй като ядрата на процесора се забавят, когато натоварването е ниско и след това трябва да заработят отново, когато има пиково натоварване. В зависимост от играта ефектите са несъществуващи (Quantum Break) или изключително разрушителни (Overwatch или Nioh).

  • Скриптът не води до значително натоварване
  • Когато сърфирате, енергията се пести, докато при игри латентността е сведена до минимум
  • Превключването се извършва автоматично и параметрите могат да бъдат конфигурирани в скрипта

1: Копирайте кода на скрипта в текстов файл на вашия компютър и го преименувайте от .txt на .ps1 (в моя пример C: \ Install \ Scripts \ Nvidia_PowerPlanSwitcher \ Nvidia_PowerPlanSwitcher.ps1)

2: Отваря диспечера на задачите (Task Scheduler in eng) и отива на „Create New Task“. Сега следвайте снимките.

След тези настройки можете да запазите задачата с OK и трябва само да въведете паролата си.

От следващото стартиране на Windows скриптът се изпълнява с 1 минута закъснение и проверява натоварването на графичния процесор на всеки 10 секунди, за да настрои съответно плана за захранване на Windows. След това скриптът се изпълнява като "powershell.exe" в диспечера на задачите. Така че докато пиша тези редове тук в Edge, балансираният енергиен план е активен, но веднага щом започна игра, след няколко секунди енергийният план с висока производителност се превключва на.

Тествано под Windows 10 с GTX 1080 и стандартен драйвер за Nvidia без Geforce Experience.

Отстраняване на неизправности
Възможно е ExecutionPolicy да бъде зададено на Unrestricted, за да позволи изпълнението на скриптове. С потребителя @Pizza! по този начин скриптът може да се използва успешно.
1: Стартирайте Powershell като администратор
2: Въведете следния ред в отворената PowerShell

глупав123

Лейтенант Командир

компютър
Еврото е силно; но по-силни цените

Зашеметяване

Капитан
Кадет 4-та година

Използвах NVidia Inspector с неговата функция Multi Display Power Saver за това:

Но беше преди няколко години, не знам дали все още работи така добре, както тогава.

Зашеметяване

Капитан

глупав123

Лейтенант Командир

компютър
Еврото е силно; но по-силни цените

Зашеметяване

Капитан

[Актуализация]
Модифицирах скрипта минимално:
Досега скриптът е активирал желания план за захранване всеки път, когато е бил изпълнен, в зависимост от натоварването на графичния процесор, дори ако вече е бил активиран. Сега интегрирах заявка, която първо чете текущия енергоспестяващ план и само ако желаният енергоспестяващ план не е вече активен, той се превключва.

Преди това: открито използване на 3D: Активирайте GamingPowerPlan
Ново: Открито 3D натоварване: Активирайте GamingPowerPlan, ако в момента е активен друг PowerPlan. Ако GamingPowerPlan вече е активен, не правете нищо

На всичкото отгоре създадох „олекотен вариант“ без филтъра за PState, ако някой не се нуждае от този филтър и предпочита да спести няколко килограма изчислително време.

Консумация на производителност на скрипта
Проведох тест за ефективност за варианта без P-State и оставих цикъла да работи на всеки 100 ms, т.е. 10x в секунда, вместо веднъж на всеки x секунди (бих препоръчал 10-60). Цялото нещо за период от една минута с постоянно изключване и включване на теста за визуализация на GPU-Z, за да се генерира натоварване на GPU и да се генерира промяна на плана за пестене на енергия.

The Началото на скрипта има точно 484ms Изчислително време, необходимо на ядрото (Powershell зарежда относително голям брой модули автоматично при стартиране) и след това за около 600 проверки (10 в секунда в продължение на 1 минута) изчислителното време се е увеличило от 484ms (старт) до 578ms (старт + 600 проверки) Така че 600 проверки имат общо около 94ms Необходимо изчислително време.

Това съответства на натоварване на процесора от 0,16 ms на проверка от една нишка. С процесор от 4 Ghz, една проверка използва 0,64 MHz от една нишка. Вариантът Lite отнема 0,12ms, което би съответствало на 0,48Mhz. Така че наистина не трябва да се притеснявате за натоварването, което генерира самият скрипт

Актуализацията на кода може да бъде намерена в пост 1

@ doof123 Може би новата версия е интересна за вас