![]() |
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 |
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.
|
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 |
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 |
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; |
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 |
Re: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
Also in der Unit selbst finde ich folgendes Beispiel:
Delphi-Quellcode:
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.
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; |
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 :) |
AW: Get CPU Usage auf i5 i7 Win7 64 immer 100& oder 0
![]() |
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 07:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz