C/C++ Funktion zum Auslesen der CPU Last unter Linux

TheRealPredator

Enthusiast
Thread Starter
Mitglied seit
16.07.2003
Beiträge
2.340
Ort
79848 Bonndorf im Schwarzwald
Hi Leute.
Ich bin gerade in meinem Praxissemester bei der IBM und bin im Fachbereich Benchmarking bzw Performancemessung und meine Aufgabe ist es gerade einen Benchmark derart zu erweitern das er zu einer gewissen Zeit die aktuelle CPU Last ausgibt die anliegt. Momentan wird das alles noch etwas umständlich über einen Umweg über das Programm SAR bzw SADC geregelt. Vorraussetzung ist das diese Funktion möglichst wenig Impact auf die eigentlichen Benchergebnisse haben sollte.
Ich wäre euch echt dankbar wenn mir jmd eine Libary nennen könnte die evtl. diese Funktionalität bietet, wiegesagt Ich brauch lediglich die CPU Last in %, welche dann mit fprintf, mitausgeben werden soll.

MFG TRP
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Code:
[B]double[/B] GetCPULoad() 
{ 
    [B]static[/B] DWORD dwLastProcessTime = 0; 
    [B]static[/B] DWORD dwLastSystemTime = 0; 
    [B]static double[/B] dCPULoad = 0; 
 
    FILETIME ftCreationTime, ftExitTime, ftKernelTime, ftUserTime; 
    GetProcessTimes(GetCurrentProcess(),&ftCreationTime,&ftExitTime,&ftKernelTime,&ftUserTime); 
 
    ULARGE_INTEGER uiKernelTime, uiUserTime; 
    uiKernelTime.HighPart = ftKernelTime.dwHighDateTime; 
    uiKernelTime.LowPart  = ftKernelTime.dwLowDateTime; 
    uiUserTime.HighPart = ftUserTime.dwHighDateTime; 
    uiUserTime.LowPart  = ftUserTime.dwLowDateTime; 
 
    DWORD dwActualProcessTime = (DWORD)((uiKernelTime.QuadPart + uiUserTime.QuadPart)/100); 
    DWORD dwActualSystemTime  = GetTickCount(); 
 
    [B]if[/B](dwLastSystemTime) { 
        dCPULoad = ([B]double[/B])(dwActualProcessTime-dwLastProcessTime)/(dwActualSystemTime-dwLastSystemTime); 
    } 
    dwLastProcessTime = dwActualProcessTime; 
    dwLastSystemTime  = dwActualSystemTime; 
 
    [B]return[/B] dCPULoad; 
}
Quelle:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-86669.html
 
Das sieht schonmal nice aus aber wie Ich gerade sehe hab Ich vergessen zu erwähnen das das BEtriebssytem ein Linux ist. Folglich wird der angegebene Quellcode wohl nicht laufen...
 
Hallo TheRealPredator,
unter GNU/Linux brauchst du nur die Datei /proc/loadavg oder /proc/stat auslesen und ggf. auswerten.
Die Auslastung wird aber etwas anders angegeben als unter Windows, wie die Werte zu interpretieren sind steht z.B. auf http://de.wikipedia.org/wiki/Load. Als Beispiel für eine Implementierung kannst du dir uptime anschauen, den Quelltext gibts auf der Projektseite.

Gruß Sebastian
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh