LabVIEWForum.de
Hohe CPU und Speicherauslastung, wie kann man das verbessern? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Hohe CPU und Speicherauslastung, wie kann man das verbessern? (/Thread-Hohe-CPU-und-Speicherauslastung-wie-kann-man-das-verbessern)

Seiten: 1 2


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - bierber - 05.07.2006 08:52

Hallöle,

folgendes mein LabVIEW ist beim simulieren und testen meiner VI's so speicherinetensiv, das ich nach vier bis 8 Tests mein LV neu starten muß weil es sich irgendwie aufgehängt hat.

Im Taskmanager sehe ich eine CPU auslastung von im Schnitt 95% und eine Speicher auslastung von mindestestens 120MB. Kann man LabVIEW irgendwie beibringen sparsamer mit den Ressourcen umzugehen, oder liegt der Fehler bei mir und ich hab zu viele Sachen programmiert.

Die Frage die sich mir dann noch stellt ist, was ist wenn ich nach der Programmierung eine Exe erzeuge ist diese genau so Ressourcen intensiv. Ich denke nicht das dies ein Kunde auf der Welt mitmacht.

MfG

Felix


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - Y-P - 05.07.2006 08:56

Hi,

Ich würde mal in meinen (While-)Schleifen eine Verzögerung einbauen. Es reichen schon 10 ms. Das war bei mir das Problem. Bei mir waren es sogar oftmals 100 % Auslastung.
In der Regel sind EXE-Dateien nicht so "ressourcenintensiv".

Gruß M.Weippert

' schrieb:Hallöle,

folgendes mein LabVIEW ist beim simulieren und testen meiner VI's so speicherinetensiv, das ich nach vier bis 8 Tests mein LV neu starten muß weil es sich irgendwie aufgehängt hat.

Im Taskmanager sehe ich eine CPU auslastung von im Schnitt 95% und eine Speicher auslastung von mindestestens 120MB. Kann man LabVIEW irgendwie beibringen sparsamer mit den Ressourcen umzugehen, oder liegt der Fehler bei mir und ich hab zu viele Sachen programmiert.

Die Frage die sich mir dann noch stellt ist, was ist wenn ich nach der Programmierung eine Exe erzeuge ist diese genau so Ressourcen intensiv. Ich denke nicht das dies ein Kunde auf der Welt mitmacht.

MfG

Felix



Hohe CPU und Speicherauslastung, wie kann man das verbessern? - bierber - 06.07.2006 07:46

mal mit 20ms Wartezeit probiert, aber die CPU Auslastung belibt konstant hoch. Beim beobachten, ist mir aufgefallen, das mein Speicher teilweise fast 400MB allein für LabVIEW bereitstellt.


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - diplNisse - 06.07.2006 09:57

<div align="left">
poste mal das betreffen de VI.
Ich habe schon ein recht umfangreiches Programm laufen, in dem ich Datensätze von mehr als 7 * 8000 Daten hin und herschiebe, dazwischen 5 Schnittstellen auslese (im 300ms Takt) usw. meine Auslastung ist unter 10%.

Da ist mit Sicherheit irgendwo eine Schleife o.ä. die öfter als nötig abgearbeitet wird.

</div>


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - bierber - 06.07.2006 10:01

' schrieb:<div align="left">
poste mal das betreffen de VI.
Ich habe schon ein recht umfangreiches Programm laufen, in dem ich Datensätze von mehr als 7 * 8000 Daten hin und herschiebe, dazwischen 5 Schnittstellen auslese (im 300ms Takt) usw. meine Auslastung ist unter 10%.

Da ist mit Sicherheit irgendwo eine Schleife o.ä. die öfter als nötig abgearbeitet wird.

</div>


ok hier schaudir es mal an. Das problem wird sein, das ich mit Sub-VIs arbeite die du eventuel nicht öffnen kannst, weil dir die Hardware fehlt


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - Y-P - 06.07.2006 10:21

Das Programm läuft nicht, da auch ein paar VIs gebraucht werden, die gar nicht mit dabei waren.
Hast Du nur in der großen While-Schleife eine Zeitverzögerung reingebaut, oder auch in den SubVIs? Ich würde das mal probieren. Wenn Du keine Verzögerung einstellst, dann läuft die Schleife viel zu oft durch und belastet Deine CPU.

Gruß M.Weippert


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - bierber - 06.07.2006 10:25

' schrieb:Das Programm läuft nicht, da auch ein paar VIs gebraucht werden, die gar nicht mit dabei waren.
Hast Du nur in der großen While-Schleife eine Zeitverzögerung reingebaut, oder auch in den SubVIs? Ich würde das mal probieren. Wenn Du keine Verzögerung einstellst, dann läuft die Schleife viel zu oft durch und belastet Deine CPU.

Gruß M.Weippert
Die Sub-VI'S haben keine Schjleifen, daher dachte ich das ich die auch nicht verzögern muß, werds mal ausprobieren.


Welche VI's sind den net dabei? die mit labjack?


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - Y-P - 06.07.2006 10:30

Du musst nur in Schleifen eine Verzögerung einbauen.
Genau, ein Teil der VIs mit Labjack und eine Library haben gefehlt.

Gruß M.Weippert


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - Teutates - 14.07.2006 14:35

<div align="left">Also so wie ich das sehe arbeitest Du mit sehr vielen speicherlastigen Fuktionen und bearbeitest große Arrays ich würde das Programm anders aufbauen

Je mehr parallelprozesse desto speicherlastiger, verwende doch doch Sequenzen und mache die Operationen Schritt für Schritt denn im Grunde kannst Du eh nicht alle Anzeigen gleichzeitig beobachten.
Zudem ist Dein Rechner sowieso nicht real dafür ausgelegt, auch LV kommt irgendwann an die Grenze obwohl es so schnell wie C ist. Und wenn die Anzeigen nicht aller 10 ms aktualisiert werden sondern aller 40 ms merkst Du als Anwender keinen merklichen Unterschied.


warum nicht zum Beispiel eine Betrachtung der einzelnen Achsen für sich oder nur die Geschwindigkeiten oder Wegdaten oder Leistung.
Oder Du teilst die Messung und Auswertung.

Je kleiner die Arrays werden desto mehr entlastet es den Rechner, ich sag mal 100 % sollte auf jeden Fall vermieden werden und wenn Du halt die Aktualisierungsrate steuerst , zumindest kann ich nichts weiter drüber sagen da ich nicht so auf die Schnelle die nötigen Aufgaben erkenne.

Zudem würde ich alle Bedien und Anzeigeelelemente nur über property Nodes steuern und alles gesammelt und geordnet im Blockdiagramm ablegen , wenn Du eine Variable mehr wie 2 mal im Programm brauchst ist es schon ungünstig diese im Programmcode stehen zu lassen da sucht man sich ja mürbeWink

Aber mur mal als Tipp am Rande der vielleicht entwas Zeit in Anspruch nimmt ist das VI-Profil zu nutzen indem Du die Aufrufstatistiken und Speicherlasten protokollieren kannst, bei LV8 unter Tools->Profile dann hast es bei LV7 auch unter Tools und ich glaube fortgeschritten allerdings wird das bei Dir wohl etwas Aufwand seinWink

Aufjeden Fall bekommst Du dann eine Ahnung wo der Bug sitzt, bei mir wars auch mal der Fall das sich das Programm "zugekackt" hat weil es bei jedem Bild ein Overlay eingezeichnet hatte und so die fps nicht mehr gehalten werden konnten, Lösung war es das Overlay zu kopieren als Beispiel statt neu aus Arraydaten einzuzeichnen.

Wirst schon findenWink

Ach eine Frage zu dem Programm wie lang programmierst Du schon daran?

Gruß


Teutates
</div>

' schrieb:Du musst nur in Schleifen eine Verzögerung einbauen.
Genau, ein Teil der VIs mit Labjack und eine Library haben gefehlt.

Gruß M.Weippert
[indent][/indent]


Hohe CPU und Speicherauslastung, wie kann man das verbessern? - bierber - 14.07.2006 14:48

Wie du sicher festgestellt hast arbeite ich noch nicht sehr lang mit LV eiuegntlich erst seit Juni.

Einiges in dem VI ist auch noch im Test Modus und wird noch überarbeitet. Ziel des ganzen is es eigentlich einen 3d-Beschleunigungssensor auszuwerten und die ermittelten Daten durch 2 fachintegration in Schwingungen umzurechnen. Zusätzlich soll dann noch das Frequenzspektrum der Schwingung ausgegeben werden.

Das Projekt ist allerdings gerade auf Eis gelegt, weil mein Sensor macken hat und die komplette Hardware überarbeitet wird.

Insofern wird sich einiges in nächster Zeit ändern und dann werde ich deine Tips versuchen zu beherzigen.

MfG

Felix