Software Frage Energiesparplan in Abhängigkeit von Anwendungen ändern

Dieses Thema im Forum "Tech & FAQ Forum" wurde erstellt von Grainger, 16 Mai 2020.

  1. Grainger

    Grainger Team (Mod) Mitarbeiter

    Registriert seit:
    28 April 2001
    Beiträge:
    10.609
    Ich nutze als betriebssystem Windows 10 Pro (aktuelle Version incl. aller Updates) und als Hardware u.a. einen AMD Ryzen 3950X auf einem Gigabyte X570 Pro.

    Für den ganz normalen Alltagsbetrieb (Office, Internet, usw.) liefert die CPU ja mit dem Energiesparplan Energiesparmodus mehr als genug Power, lässt sich aber im Energiesparmodus viel besser (und leiser) kühlen.

    Für leistungshungrigere Anwendungen (Handbrake, Bild-/Videobearbeitung, Renering, Gaming, usw.) ist aber natürlich der Energiesparplan AMD Ryzen Balanced viel besser geeignet.

    Mit der App PowerPlanSwitcher kann man recht komfortabel über ein Taskleistensymbol zwischen den diversen Energiesparplänen hin- und herschalten.

    Ich hätte es aber gerne noch bequemer. ;)

    Gibt es ein Programm, mit dem man automatisch Anwendungsabhängig zwischen den Energiesparplänen wechseln kann?
    Also quasi Energiesparmodus als default, wenn man aber Handbrake.exe startet wird automatisch auf AMD Ryzen Balanced umgeschaltet und nach Beendigung von Handbrake.exe wieder zurück?

    Ich habe natürlich schon selbst danach gesucht, aber entweder gibt es so etwas nicht oder ich habe einfach die falschen Suchbegriffe verwendet.
  2. GiveThatLink

    GiveThatLink Bekanntes Mitglied

    Registriert seit:
    25 Oktober 2009
    Beiträge:
    634
    Grainger sagt Danke.
  3. Grainger

    Grainger Team (Mod) Mitarbeiter

    Registriert seit:
    28 April 2001
    Beiträge:
    10.609
    Die Batchlösung bei Computerbase hatte ich auch schon gefunden, ich wollte es halt gerne noch bequemer (bin halt ein fauler Sack :D).

    Aber die Idee mit Autoit ist nicht schlecht, dass sehe ich mir mal genauer an.
  4. GiveThatLink

    GiveThatLink Bekanntes Mitglied

    Registriert seit:
    25 Oktober 2009
    Beiträge:
    634
    Ich kann dir nur Fragmente anbieten, die dafür notwendig sind. Zum einen ein Array für die Programme+Plan, die Details musst du dann selbst ergänzen/ausarbeiten.

    Zum einen wird ein UI benötigt, in welcher minimalen Ausgabe auch immer, kann man ja ins Tray minimieren, solche Befehle gibt es, mitsamt Icon.

    Dann braucht es eine main loop, die still auf irgendwas wartet, das 1. Beispiel arbeitet für ein sichtbares UI mit Eingabe. Das 2. Beispiel wäre mit Prüfung von Events und Buttons.

    Unten dann das Einlesen einer INI unter Berücksichtigung eines vorgegeben max-Werts. Arrays kann man x-dimensional anlegen, hier wären es 2 (Programm/Plan)

    Energiesparpläne lassen sich aus der Registry auslesen, das wäre dann schon für mich die nächste Stufe, mit der man Anwendungen+Plan im UI eingeben und speichern kann.

    Als letztes, das sollte in die While=1-Schleife, die Prüfung, ob die gewünschten Prozesse aktiv sind. Mit Code-Verfeinerung lagert man das in eine eigene Routine aus.

    Mal schauen, was deren Forum anbietet, manchmal hat man Glück
    Es gibt was gegen PowerSave
    https://www.autoitscript.com/forum/topic/152381-screensaver-sleep-lock-and-power-save-disabling/
    https://www.autoitscript.com/forum/topic/82639-office-power-saving/
    https://www.autoitscript.com/forum/topic/165991-autoit-and-power-plans/

    BIOS Power savings
    https://www.autoitscript.com/autoit3/docs/libfunctions/_WinAPI_GetPwrCapabilities.htm

    Anregungen, ich weiss nicht, ob's passt.

    Beispiele:
    Code:
    ;array
    Dim $sRegPath[1]
    Code:
    $inifile = @ScriptDir & "\settings.ini"
    Code:
    create_main_ui()
    Code:
    ;main loop
    While 1
      Sleep (100)
    
      $active = BitAND (WinGetState ($WinMain), 8)
      If $active = 8 then
        HotKeySet("{F1}",  "Help")
        HotKeySet("{ESC}", "Terminate")
      Else
        HotKeySet("{F1}")
        HotKeySet("{ESC}")
      EndIf
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
        EndSelect
    Wend
    
    Terminate();
    ;------------------------------------------------------------------------------
    
    Func Exit1()
      Exit 0
    EndFunc
    
    Func Terminate()
     ;WriteINI()
      GUIDelete($WinMain)
      Exit 0
    EndFunc
    ;------------------------------------------------------------------------------
    
    Code:
    While 1
        ;preview()
        $msg = GUIGetMsg()
        check_gui_change()
        check_attrib()
        Select
            Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_cancel
                ;preview()
                Terminate()
            Case $msg = $Button_folder   ;"..."
                ChoseFolder()
                ReadFiles()
    
            Case $msg = $Button_help
                ;preview()
                help()
            Case $msg = $Button_ok
                ;preview()
                ;WriteINI()
                ;Kopie()
                ExitLoop
        EndSelect
    WEnd
    
    GUIDelete ()
    Terminate()
    
    Code:
    Func ReadIni()
      $MaxAnzahl = IniRead($inifile, "einstellungen", "maximum", 10) 
      Local $i = 1
      ReDim $sRegPath[$MaxAnzahl + 1]
      While 1
        $sRegPath[$i] = IniRead($inifile, "registry", $i, "")
        $i = $i + 1
        If $i > $MaxAnzahl Then ExitLoop
      WEnd
      $sRegPath[0] = $MaxAnzahl
      ;_ArrayDisplay($sRegPath)
    EndFunc
    ;----------------------------------------
    
    Code:
        If (ProcessExists($ProcessName) Then
          acttivate_savingplan()
        EndIf
    Grainger sagt Danke.
  5. Grainger

    Grainger Team (Mod) Mitarbeiter

    Registriert seit:
    28 April 2001
    Beiträge:
    10.609
    Vielen Dank, das hilft mir doch schon enorm weiter.

    Ich habe aber jetzt auch etwas gefunden, was mein Problem zumindest teilweise löst.
    Anscheinend hat AMD beim Chipsatztreiber (der den AMD-eigenen Energiesparplan mit installiert) irgend etwas vergurkt, so das die CPU-Kerne beim Energiesparplan AMD Ryzen Balanced nicht mehr unter 3300 takten.

    Das kann man aber relativ leicht selbst wieder korrigieren:

    1) Software ParkControl herunter laden (die freie Version reicht) und installieren
    2) ParkControl starten und Option "Zeige Parking-Einstellungen in den Windows Energieoptionen" aktivieren.
    ParkControl.png
    3) Energieoptionen öffnen, bei "AMD Ryzen Balanced" auf Energiesparplaneinstellungen ändern klicken (oder gleich in ParkControl auf "Energieeinstellungen") und im nachfolgenden Dialog auf "Erweitere Energieeinstellungen ändern"
    4) jetzt auf das Plus-Symbol vor "Prozessorenergieverwaltung" klicken, es gibt da nun sehr viel mehr Optionen als zuvor
    5) gleich die erste neue Option "Schwellenwert zum Erhöhen der Prozessorleistung" von 25% auf 60% ändern
    6) sicherheitshalber noch "Minimaler Leistungszustand des Prozessors" kontrollieren, sollte auf 5% stehen (manche tragen da auch 1% ein).

    Fertig.

    Jetzt ist das Taktverhalten meines 3950X wieder eher so wie ich es erwartet habe.