AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) adCpuUsage.GetCPUCount bei XE2 64bit immer 0
Thema durchsuchen
Ansicht
Themen-Optionen

adCpuUsage.GetCPUCount bei XE2 64bit immer 0

Ein Thema von NooL · begonnen am 3. Jun 2013 · letzter Beitrag vom 5. Jun 2013
Antwort Antwort
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#1

AW: adCpuUsage.GetCPUCount bei XE2 64bit immer 0

  Alt 5. Jun 2013, 18:49
Ja, so ist es. Bei meiner 8 Kerner werden 9 Werte ( 0 - 8 ) ausgelesen.
0-7 sind die 8 Kerne und der 9.Wert ( 8 ) soll der Durchschnitt
aller Kerne sein.
Diesen zusätzlichen Wert blende ich aus bzw. benutze ich nicht.
Habe es auch noch bei einer 4 Kern, 2 Kern und bei einem Server mit
32 Kernen ausprobiert. Dort war es auch so.

Was mich nur stutzig macht, sind die negativen Werte die GetCPUUsage
zurück gibt??? Die Frage ist, ist das so gewollt, oder doch noch ein
weiterer Fehler ???
Code:
result:=1-(_Counters[index] - _PrevCounters[index])/(_SysTime-_PrevSysTime);
Kennt sich damit jemand aus bzw. kann das einer der adCpuUsage auch nutzt, mal
irgendwie überprüfen ???
Nool

Geändert von NooL ( 5. Jun 2013 um 18:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: adCpuUsage.GetCPUCount bei XE2 64bit immer 0

  Alt 5. Jun 2013, 19:50
Was mich nur stutzig macht, sind die negativen Werte die GetCPUUsage
zurück gibt??? Die Frage ist, ist das so gewollt, oder doch noch ein
weiterer Fehler ???
Zu den Zeiten, wenn GetCPUUsage negative Werte zurückgibt, zeigen alle anderen Programme 0 an, dementsprechend runde ich die Werte auf Minimal 0 auf:
Delphi-Quellcode:
procedure TTestForm.TimerTimer(Sender: TObject);
var
  i: Integer;
  Last: Double;
begin
  CollectCPUData;
  MInfo.Lines.BeginUpdate;
  for i:=0 to GetCPUCount-1 do
  begin
    Last := GetCPUUsage(i)*100;
    if Last < 0 then Last := 0;

    if i=GetCPUCount-1 then //letzte CPU zeigt Durchschnitt (Gesamtlast)
      MInfo.Lines[i+1]:=Format('Durchschnitt: %5.2f%%', [Last])
    else
      MInfo.Lines[i+1]:=Format('CPU #%d: %5.2f%%', [i, Last]);
  end;
  MInfo.Lines.EndUpdate;
end;
Stefan
  Mit Zitat antworten Zitat
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#3

AW: adCpuUsage.GetCPUCount bei XE2 64bit immer 0

  Alt 5. Jun 2013, 21:17
Okay, danke für die Rückinfo:
Zitat:
dementsprechend runde ich die Werte auf Minimal 0 auf
Dann werde ich es so ähnlich umsetzen. Besten Dank.
Nool
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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