Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0 (https://www.delphipraxis.net/151668-get-cpu-usage-auf-i5-i7-win7-64-immer-100-oder-0-a.html)

Cylence 27. Mai 2010 13:35


Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
Hi,

wir haben einige Programme die die CPU Usage auslesen, und die Unit AdCPUUsage oder ZYLCPUUsage verwenden, nun geht das auf allen Systemen bisher problemslos, aber auf unseren neuesten Rechnern mit i5 oder i7 Kern und Windows 7 64 Bit Version kommt nur noch 100 oder 0 % zurück sonst nichts...
kennt jemand das Problem?

Gruß

tom

Zacherl 27. Mai 2010 14:28

Re: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
Liest du auch die Auslastung für alle Kerne aus und bildest dann den Mittelwert? Habe selbst Win7 64 bit und einen Core i7 860 und kann keine Einschränkungen im Gebrauch das adCPUUsage Unit feststellen.

Cylence 27. Mai 2010 15:18

Re: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
Hi,

ok das is ja schonmal was :-)
also einmal eine Frage, wie die anderen Kerne auslesen?

ich hab da nur

CPU.CPUUssage

und mehr gibts nicht.

Bei AdCPUUsage gibts immer 0 & und bei ZylCPUUsage immer 100%

wie machst du das? kannst du ein Codebeispiel senden? wär toll

Thanks

tom

rollstuhlfahrer 27. Mai 2010 15:22

Re: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
AdCPUUsage hat doch genau 3 Funktionen: eine um die CPU-Werte zu aktualisieren, eine ,die die Anzahl der erkannten Kerne zurückgibt, und eine weitere für die Auslastung der CPU. (0) ist der gemittelte Wert und (1)..(32) sind die einzelnen Kerne.

Bernhard

Zacherl 27. Mai 2010 15:46

Re: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
Sicher, dass 0 der gemittelte Wert ist? Ich verwende folgenden Code, um die CPU Auslastung auszulesen. Hatte da auch erst bisschen rumprobiert, ob ich GetCPUUsage mit 0 aufrufe oder mit 1 als Startkern, aber bei mir gibt es hiermit ein korrektes Ergebnis:

Delphi-Quellcode:
function GetCPUUsage: Double;
var
  I: Integer;
  Temp: Double;
begin
  Result := 0;
  try
    untCpuUsage.CollectCPUData;
    for I := 1 to untCpuUsage.GetCPUCount -1 do
    begin
      Temp := untCpuUsage.GetCPUUsage(I - 1) * 100;
      if (Temp > 0) then
      begin
        Result := Result + Temp;
      end;
    end;
    Result := Result / (untCpuUsage.GetCPUCount -1);
  except
    Result := 0;
  end;
end;

rollstuhlfahrer 27. Mai 2010 15:51

Re: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
also bei einem Rechner mit 2 Kernen bekommt man von AdCPUUsage 3 Werte (gemittelt, Kern 1, Kern 2). Was die Indizes jetzt sind, müsste ich nachschauen. Das Beispielprogramm dabei demonstriert das schön. Wenn man jetzt noch nebenbei den Windows-Taskmanager auf der Registerkarte Systemleistung hat, kann man sehen, für was diese Werte stehen.

Bernhard

Zacherl 27. Mai 2010 17:12

Re: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
Also in der Unit selbst finde ich folgendes Beispiel:

Delphi-Quellcode:
procedure TTestForm.TimerTimer(Sender: TObject);
var i: Integer;
begin
    CollectCPUData; // Get the data for all processors

    for i:=0 to GetCPUCount-1 do // Show data for each processor
        MInfo.Lines[i]:=Format('CPU #%d - %5.2f%%',[i,GetCPUUsage(i)*100]);
end;
Hier wird von 0 an iteriert und der selbe Index auch an GetCPUUsage übergeben. Demnach interpretiere ich das so, dass der Index 0 für den ersten Kern / die erste CPU steht.

MuTzE.Y85 19. Apr 2013 11:25

AW: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zwar schon alt, aber ich habe mit der Unit Probleme.

Habe das Beispiel aus der ReadMe genommen.
Es werden unter CPUCount 5 ausgelesen, was -1 ja 4 ergibt, jedoch werden mir in der Memo nur 2 angezeigt.

Weiß jemand woran das liegt? :(
Den Code hat Zacherl schon gepostet.

EDIT:
Hab das Problem gefunden. Ich Depp ^^
4 Zeilen müssen natürlich vorher schon exisiteren :)

DeddyH 19. Apr 2013 13:04

AW: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
http://bar.wikipedia.org/wiki/Haindling#Du_Depp :duck: :mrgreen:

hathor 19. Apr 2013 17:00

AW: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
 
Die Function GetCPUCount zeigt bei mir (WIN 7 - 64Bit, DELPHI 2009) falsche Werte an,
deshalb durch folgende Function ersetzt.
Einen Mittelwert gibt es bei adCpuUsage nicht!

Delphi-Quellcode:
function GetCPUCount: Integer;
var MySystem: TSystemInfo;
begin
GetSystemInfo(MySystem);
Result:= MySystem.dwNumberOfProcessors;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 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