CPU Auslastung auslesen



  • Ich hab Dev-C++ 4 mit Mingw. Mit dem "u." klappts, allerdings zeigt er mir als CPU Auslastung immer 0 an.



  • joomoo schrieb:

    Ich hab Dev-C++ 4 mit Mingw. Mit dem "u." klappts, allerdings zeigt er mir als CPU Auslastung immer 0 an.

    Ruff die Funktion nur ein mal pro Sekunde auf, was für ein Wert erhälst du dann?



  • Und du musst natürlich auch etwas machen, sonst ist die Auslastung ja nahezu bei 0 🤡



  • flenders schrieb:

    Und du musst natürlich auch etwas machen, sonst ist die Auslastung ja nahezu bei 0 🤡

    Wenn ich daneben STRG+ALT+ENTF laufen lasse zeigt das mir aber 2-10% immer so an.



  • Du rufst die Funktion aber schon mehrmals auf, oder? Naja, kann auch sein, dass mein Code fehlerhaft ist 🙄



  • flenders schrieb:

    Du rufst die Funktion aber schon mehrmals auf, oder? Naja, kann auch sein, dass mein Code fehlerhaft ist 🙄

    Ich glaube es liegt an Dev-C++ 4. Könnte jemand flenders Code mal mit nem anderen Compiler testen? Ich kenn keine und Dev-C++ 5 geht bei mir net...



  • Poste mal dein "Test"-Code ich guck ob es bei mir läuft, bzw. Korigieren kann.



  • Hallo,
    ich habe jetzt nicht alles gelesen und weis nicht wie weit ihr siet aber ich habe vor einer wiele ein programm geschieben was cpu-auslastung für global und für einzelne prozesse anzeigen kann.

    wien es dich interesirt scheib mal.

    MFG TaccoGo



  • TaccoGo schrieb:

    ... aber ich habe vor einer wiele ein programm geschieben was ...

    Kannst du das bitte Übersetzten, damit wir wissen ob du eins Geschrieben hast oder eins schreiben willst.



  • Er hat doch geschrieben, dass er es geschrieben hat 😉 - Code wäre sicher interessant, falls er nicht allzu lang ist 🙄



  • Hallo,

    ich habe den code nicht hier (den habe ich zu hause). ich bringe den gern morgen mit wen ihr wolt.(aus den kopf wies ich das auch nicht mehr.

    MFG TaccoGo



  • Benutzt du in deinem Code auch GetProcessTimes()?
    Es wäre nähmlich mal Interessant eine Lösung für nicht-NT Systeme (9x,me) zu haben.



  • Die CPU-Auslastung pro Prozess wird evtl. schwierig (unmöglich?), aber vom System kannst du es mit HKEY_DYNAMIC_DATA aus der Registry bekommen.

    siehe auch (Google-Suchergebnis)



  • meine lösung leuft auch nur auf NT-System(w2k,wxp getestet).
    wolt ihr sie denoch haben??

    MFG TaccoGo



  • Klar wollen wir, und wenn es gut ist kann mann es in einem seperaten Thread stecken und in die FAQ schieben.



  • @flenders

    HKEY_DYNAMIC_DATA benutze ich bei mir (w98se), ich hatte mal vor ewigkeiten ein tut in VB drüber gelesen und es in C++ umgesetzt, nur bin ich mir sicher das es auch anders geht, den Windows muß diesen Wert auch ermitteln und in die Reg schreiben.



  • Klar muss auch Windows diesen Wert irgendwie ermitteln, aber das heißt deswegen noch lange nicht, dass du noch anders an diesen Wert kommst. Es kann natürlich sein, dass es noch eine Möglichkeit gibt, aber Windows kümmert sich eben und die Zuteilung der Rechenzeit, und weiß von daher, wieviel Rechenzeit der Windows-Leerlauf-Prozess bekommt (denke mal, dass das irgendwie so ermittelt wird)



  • @MiC++ha

    Wegen der Unterstützung für 98, Me ... Systeme: Hat Ms den Task Manager zu NT Systemen nicht gründlich geändert. Wenn ich mich richtig erinnere, gab es damals solche Systeminfos Systemauslastung nicht im Taskmanager. (Da gabs auch noch bugs das nicht alle Programme aufgeführt wurden, spielte bei Viren mal ne Rolle).

    -> Wenn Ms es damals nicht den Taskmanager eingebaut hat, war es entweder zu blöd dazu (besser hat es vergessen) oder es war zu schwirig diese Werte zu ermitteln.

    Was wohl möglich ist ist die Ramauslastung rauszukriegen (IMHO), aber das ist ja nicht die Systemauslastung.



  • Ich habe mich ein wenig Schlau gemacht, aber noch nicht Schlau genug um Endergebnisse zu liefern, aber so wie es Aussieht muß man das ziemlich hardware nah machen, sprich Assembler (Eingebettet) aber auch da giebt es noch Hürden.

    Also für mich selbst reicht meine alte variante, ich brauch nicht von jeden die Auslastung.



  • Hallo,

    also gundlegend habe ich das so gemacht:

    int CPU=0;
    FILETIME ct,et,kt,ut;
    GetProcessTimes(h_proc,&ct,&et,&kt,&ut);
    double n,m,nSeks=10000;
    static int nTime[100];
    m=nSeks*1000;
    n=kt.dwLowDateTime-nTime[i];
    if (n>m)
    	n=m;
    CPU=int((n/m)*100);
    nTime=kt.dwLowDateTime;
    

    int CPU ist die auslastung in %.
    aller dings muss das ständig widerhold werden.

    achso h_proc ist das handle auf den prozess den man über wacht.

    MFG TaccoGo


Anmelden zum Antworten