Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi CPU-Takt ändern / Energiesparmodus ändern (https://www.delphipraxis.net/198232-cpu-takt-aendern-energiesparmodus-aendern.html)

DelTurbo 16. Okt 2018 12:35

CPU-Takt ändern / Energiesparmodus ändern
 
Hallo,
ich habe einen Windows 2008R2 mit SP1 laufen. Dort laufen auch Programme. Leider verhält sich der Server anders als z.b. Windows 7. Braucht ein Programm Rechenleistung bleibt die CPU bei 1,6GHz anstatt auf 3,4GHz hochzugehen. 4 Tage suche im Internet brachte keine Abhilfe. Außer dem Rat von MS das man den Energiesparmodus auf Hochleistung stellen soll. Dann läuft die CPU IMMER auf 3,4GHz.

Nun habe ich mir überlegt, das wenn ich (bzw. ein Tool) merkt das eine Anwendung 25% Last erzeugt, ich entweder den CPU-Takt für einige Zeit auf Maximum stelle oder den Energiesparmodus ändere.

Nun zur Frage:
Kann man das mit Delphi realisieren? Gibt es eine Art API worüber man eins von beiden einstellen kann?

Vielen dank im Voraus

Ghostwalker 16. Okt 2018 12:56

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Also direkt in windows glaub ich nicht, das es da was gibt, da sowas i.d.R. übers Bios gesteuert wird.

Lesenderweise kann man aufs Bios zugreifen, wie das schreibend funktioniert muss ich leider passen.

So als gedanke wäre evtl. über einen Treiber darauf zu zugreifen. Etl. Hersteller liefern ja Tools und entsprechende Treiber über die man sowas einstellen kann.

DelTurbo 16. Okt 2018 13:22

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Da habe ich leider nix gefunden.

DieDolly 16. Okt 2018 13:27

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Vielleicht ist es möglich, den Windows Power-Status per Commandline zu regeln.
Damit entfällt jeglicher benötigter Treiber.

DelTurbo 16. Okt 2018 13:38

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Das wäre eine Idee... Dann suche ich mal danach. Ich kann dann per Delphi die CMD-Line (bzw. eine Batch) aufrufen. Ist zwar eine "Krücke" aber besser als nix.......

DieDolly 16. Okt 2018 13:39

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Ich würde es eher als Lösung bezeichnen.
Warum sich den Kopf über irgendwelche Treiber zerbrechen die nach 2 Updates vielleicht nicht mehr kompatibel sind?
Da greife ich doch lieber auf das zurück, was das Betriebssystem ohnehin schon mitbringt.

DelTurbo 16. Okt 2018 14:04

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Das stimmt schon. Ich dachte ja am Anfang an eine WindowsAPI womit man das um/einstellen kann. Weil das System ist nicht durchgebootet. Also kein User angemeldet. Das sind 2 Dienste die bissl mehr Leistung haben möchten.

Aber auch wenn ich mich anmelde und lasse ein Programm laufen was die CPU belastet, ändert sich nichts am "Taktverhalten".

Gruß

Neutral General 16. Okt 2018 14:10

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Hat denn hier jemand überhaupt mal nach einer API gesucht?

https://docs.microsoft.com/en-us/win...etactivescheme

Neutral General 16. Okt 2018 14:43

AW: CPU-Takt ändern / Energiesparmodus ändern
 
Zum Auflisten der Energiesparmodi und deren GUIDs (benötigt für PowerSetActiveScheme):
Code ist natürlich nur schnell runtergetippt und nichts woran man sich unbedingt orientieren sollte :mrgreen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var size: DWORD;
    name: String;
    guid: TGUID;
    result: DWORD;
    index: Integer;
begin
  index := 0;
  while true do
  begin
    size := SizeOf(TGUID);
    result := PowerEnumerate(0, TGUID.Empty, TGUID.Empty, Integer(ACCESS_SCHEME), index, @guid, @size);
    if result = ERROR_SUCCESS then
    begin
      SetLength(name, 200);
      size := Length(name) * SizeOf(Char);
      result := PowerReadFriendlyName(0, guid, NO_SUBGROUP_GUID, nil, @name[1], @size);
      if result = ERROR_SUCCESS then
        ListBox1.Items.Add(Trim(name) + ' (' + guid.ToString + ')')
    end
    else
      break;

    inc(index);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz