Script Windows PowerPlan Switcher pentru Nvidia ComputerBase Forum

Stunrise

Căpitan

Am scris un script care schimbă automat planul de alimentare Windows în funcție de încărcarea GPU-ului Nvidia și de starea P (Compatibil numai cu plăcile grafice Nvidia). Așadar, combin planul de economisire a energiei „echilibrat” pentru non-jocuri cu planul de economisire a energiei „de înaltă performanță” în timp ce placa grafică este încărcată, așa că joc.

powerplan

De îndată ce placa grafică se schimbă în P0 (Stare de performanță) și are mai mult de 25% utilizare a GPU: performanță ridicată
În timp ce placa grafică se află într-un mod de economisire a energiei sau are o utilizare a GPU mai mică de 25%: echilibrat
Toți parametrii sunt configurabili în mod liber în blocul ## To Fill ##

În special în jocuri, procesorul are o sarcină foarte fluctuantă, astfel încât, cu un plan echilibrat de economisire a energiei în limita GPU-ului, pot apărea latențe semnificative și creșteri ale întârzierii, deoarece nucleele procesorului încetinesc atunci când sarcina este scăzută și apoi trebuie să se întoarcă din nou când există o sarcină maximă. În funcție de joc, efectele sunt inexistente (Quantum Break) sau extrem de perturbatoare (Overwatch sau Nioh).

  • Scriptul nu cauzează nicio sarcină de lucru semnificativă
  • Când navigați, energia este economisită, în timp ce jocurile, latențele sunt reduse la minimum
  • Comutarea are loc automat și parametrii pot fi configurați în script

1: Copiați codul scriptului într-un fișier text de pe computer și redenumiți-l din .txt în .ps1 (în exemplul meu C: \ Install \ Scripts \ Nvidia_PowerPlanSwitcher \ Nvidia_PowerPlanSwitcher.ps1)

2: Deschide programarea sarcinilor (Task Scheduler în eng) și merge la „Creare sarcină”. Acum urmează imaginile.

După aceste setări puteți salva sarcina cu OK și trebuie doar să introduceți parola.

De la următorul start Windows, scriptul rulează cu o întârziere de 1 minut și verifică încărcarea GPU la fiecare 10 secunde pentru a seta apoi planul de alimentare Windows în consecință. Scriptul rulează apoi ca „powershell.exe” în Managerul de activități. Deci, în timp ce scriu aceste rânduri aici în Edge, planul energetic echilibrat este activ, dar imediat ce încep jocul, după câteva secunde, planul energetic de înaltă performanță este trecut la.

Testat sub Windows 10 cu un GTX 1080 și un driver Nvidia standard fără Geforce Experience.

Depanare
Este posibil ca ExecutionPolicy să fie setat la Unrestricted pentru a permite executarea scripturilor. Cu utilizatorul @Pizza! scriptul ar putea fi astfel utilizat cu succes.
1: Rulați Powershell ca administrator
2: Introduceți următoarea linie în PowerShell deschis

tâmpit123

Lt. Comandant

calculator
Euro este puternic; dar prețurile mai puternice

Stunrise

Căpitan
Cadet Anul IV

Pentru asta am folosit NVidia Inspector cu funcția sa de economisire a energiei pe mai multe display-uri:

Dar a fost acum câțiva ani, nu știu dacă mai funcționează la fel de bine ca atunci.

Stunrise

Căpitan

tâmpit123

Lt. Comandant

calculator
Euro este puternic; dar prețurile mai puternice

Stunrise

Căpitan

[Actualizați]
Am modificat scenariul minim:
Până în prezent, scriptul a activat planul de alimentare dorit de fiecare dată când a fost executat, în funcție de încărcarea GPU, chiar dacă a fost deja activat. Am integrat acum o interogare care citește mai întâi planul actual de economisire a energiei și numai dacă planul dorit de economisire a energiei nu este deja activ este comutat.

Anterior: Utilizarea 3D detectată: activați GamingPowerPlan
Nou: încărcare 3D detectată: activați GamingPowerPlan dacă un alt PowerPlan este activ în prezent. Dacă GamingPowerPlan este deja activ, nu faceți nimic

În plus, am creat o „variantă Lite” fără filtru pentru PState, dacă cineva nu are nevoie de acest filtru și preferă să economisească câteva kilograme de timp de calcul.

Consumul de performanță al scenariului
Am efectuat un test de performanță pentru varianta fără stare P și am lăsat bucla să ruleze la fiecare 100ms, adică 10x pe secundă în loc de o dată la fiecare x secunde (aș recomanda 10-60). Totul pe o perioadă de un minut, cu oprirea și pornirea constantă a testului de redare GPU-Z pentru a genera o încărcare GPU și pentru a genera o modificare a planului de economisire a energiei.

Începutul scriptului are exact 484 ms Timp de calcul necesar unui nucleu (Powershell încarcă automat un număr relativ mare de module la pornire) și apoi pentru aproximativ 600 de verificări (10 pe secundă peste 1 minut) timpul de calcul a crescut de la 484 ms (pornire) la 578 ms (pornire + 600 verificări) Deci, 600 de controale au un total de aproximativ 94ms Timp de calcul necesar.

Aceasta corespunde unei sarcini CPU de 0,16 ms per verificare de către un fir. Cu un procesor de 4 Ghz, o verificare folosește 0,64 MHz dintr-un singur fir. Varianta Lite durează 0,12 ms, ceea ce ar corespunde la 0,48 MHz. Deci, nu trebuie să vă faceți griji cu privire la volumul de lucru pe care îl generează scriptul în sine

Actualizarea codului poate fi găsită în postarea 1

@ doof123 Poate că noua versiune este interesantă pentru tine