LabVIEWForum.de
CPU Auslastung einer Executable - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: CPU Auslastung einer Executable (/Thread-CPU-Auslastung-einer-Executable)



CPU Auslastung einer Executable - JoLo - 14.12.2012 11:35

Hallo liebe Profis Wink ,

Ich hoffe Ihr könnt mir hier weiterhelfen.
Ich habe bemerkt, dass mein LV Programm, kompiliert als EXE, im "Leerlauf" immer 25% CPU Auslastung hervorruft. In diesem Leerlauf läuft
aber nur eine while-Schleife mit 10ms Wartezeit und darin 2 Tab Controls. Die innere Tab Control hat 2 Registerkarten mit
jeweils einer Eventstruktur. Der Timeout beider Eventstrukturen ist 100ms.
Es wird aber nie wirklich etwas gemacht außer auf Events gewartet, welche im Leerlauf nicht eintreten und somit immer
der leere Timeout-Event aufgerufen wird. Verändern der Wartezeit der While-Schleife oder des Timeouts der Eventstrukturen hat keine Auswirkungen.

Kann es sein, dass die Auslastung falsch berechnet wird oder könnt ihr mir sagen warum die so hoch ist?

[attachment=42646]

Grüße,
Johannes


RE: CPU Auslastung einer Executable - GerdW - 14.12.2012 13:00

Hallo JoLo,

Zitat:Ich habe bemerkt, dass mein LV Programm, kompiliert als EXE, im "Leerlauf" immer 25% CPU Auslastung hervorruft.
Du hast eine QuadCore-CPU und ein Kern ist voll ausgelastet?

Zitat:In diesem Leerlauf läuft aber nur eine while-Schleife mit 10ms Wartezeit und darin 2 Tab Controls. Die innere Tab Control hat 2 Registerkarten mit jeweils einer Eventstruktur.
Wozu zwei Eventstrukturen? Das ist Blödsinn...

Zitat:Der Timeout beider Eventstrukturen ist 100ms.
Wozu dann die 10ms Wartezeit in der While-Schleife?

Zitat:Kann es sein, dass die Auslastung falsch berechnet wird
Ich gehe davon aus, dass MS den Taskmanager schon ordentlich programmiert hat...

Zitat:oder könnt ihr mir sagen warum die so hoch ist?
Meine Glas1 sagt: Das liegt wahrscheinlich an deiner Programmierung.

- Bunte BD mögen ja als schön empfunden werden, aber die konsequente Verweigerung des DATAFLOW birgt zu viele Fehlermöglichkeiten! Warum verwendest du lokale Variablen, wenn die Terminals ungenutzt rumliegen? Benutze mehr Draht, LabVIEW hat genügend davon mitgebracht. Und nutze mehr Schieberegister!
- Ein Tab-Control dient nur als Container auf dem FP! Du musst im BD nicht (zwingend) eine Case-Struktur verwenden, die die einzelnen Tabs extra behandelt!


RE: CPU Auslastung einer Executable - eb - 14.12.2012 15:16

Hallo,

ich würde gerne helfen, die Performance-Fresser-Abschnitte zu identifizieren, aber ich kann das angehängte VI einfach nicht finden!
@ JoLo: Kannst du mir da helfen?

Gruß


RE: CPU Auslastung einer Executable - JoLo - 15.12.2012 18:08

Danke für die Tipps. Ich versuche am Montag mal die 2 Eventstrukturen zu vereinen und die Terminals stärker zu benutzen.
Da VI kann ich leider nicht hochladen, weil ich: 1. Erst am Mo wieder in die Arbeit komme und 2. ich nicht weiß ob ich diese Sachen ins Internet laden darf da es ein Automatisierungsprogramm für meine Firma wird. Deshalb halte ich mich mit dem Hochladen zurück.
Aber wie gesagt in meinem "Leerlauf" läuft nur diese While Struktur mit den Registern und den Eventstrukturen, welche immer in den Timeout hineinlaufen, da keine Events auftreten. Habe auch mit dem Analysetool unter Profil - Leistung und Speicher geschaut welche VI's im Leerlauf augerufen werden -> keine Veränderung der Anzahl der Aufrufe, selbst wenn ich die Analyse über ne halbe Stunde laufen lasse.

Die 25% Auslastung verwirren mich wegen der Tatsache, dass die Executable selbst 25% Leistung beansprucht, wenn die EXE gestoppt ist (also gestoppt durch den roten Knopf). Das hatte ich anfangs vergessen zu erwähnen.

Grüße
Johannes


RE: CPU Auslastung einer Executable - GerdW - 15.12.2012 20:08

Hallo Johannes,

Zitat:Tatsache, dass die Executable selbst 25% Leistung beansprucht, wenn die EXE gestoppt ist (also gestoppt durch den roten Knopf).
Du erstellst eine EXE und blendest die Werkzeugleiste nicht aus??? Was soll das denn??? Hast du bei Word und Konsorten jemals einen roten Stopp-Knopf gesehen???

Gegenfrage: Wenn du deine EXE per "rotem Knopf" stoppst, wie sieht dann der "Run"-Pfeil aus? Läuft die EXE weiter (was zu deiner 25%-Auslastung passen würde) oder bleibt sie wirklich "stehen", d.h. es erscheint das Pfeilsymbol zum Starten der EXE?

Glas1
Du hast irgendeine Endlosschleife in deinem Programm, die ununterbrochen und ohne Wartezeiten durchläuft. Dies passiert gern einmal in Schleifen, in denen ein Errorcluster mit irgendwelchen Funktionen verbunden ist und ein Fehler anliegt, der dazu führt, dass diese Funktionen "übersprungen" werden...


RE: CPU Auslastung einer Executable - JoLo - 16.12.2012 11:46

Das mit der Werkzeug war ja nur zu Testzwecken um genau dieses Problem zu beobachten. Später kommt die natürlich weg. Aber wenn ich den Stopp Button drücke erscheint der grüne Pfeil und das Programm bleibt stehen, es sind keine Aktionen am FP mehr möglich. Und wie gesagt die einzige Schleife die ich im Leerlauf habe ist die die die Register und Eventstrukturen enthält. Die Timeout Fälle darin sind auch leer. Es wird also nichts gemacht.

Gruß
Johannes


RE: CPU Auslastung einer Executable - JoLo - 17.12.2012 09:20

Hallo GerdW,
danke für deine Hilfe.
Habe heute die Eventstrukturen in eine extra Whileschleife ausgelagert die parallel zum anderen Code läuft und habe beide Eventstrukturen zu einer zusammengefasst.
Außerdem habe ich weniger lokale Variablen benutzt, was aber nicht immer geht weil viele Controls am FP aktualisiert werden müssen und ich sie also wieder durch lokale Variablen beschreiben muss. Oder gibt es da andere, bessere Möglichkeiten da zu machen?
Die exe läuft jetzt wie erhofft auf 0-1% CPU Auslastung.

Grüße
Johannes