INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Arbeitsspeicher nach 3 Tagen voll/Systemabsturz



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

12.11.2009, 06:11 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2009 06:11 von Achim.)
Beitrag #11

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
' schrieb:Und der kommt nicht auf, wenn aufgeräumter Code vor einem liegt.

What?

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.11.2009, 07:13
Beitrag #12

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
' schrieb:Ich habe übrigens alle Sub Vis wieder zurück ins Hauptprogramm geführt, weil ich bei NI gelesen habe dass SUB Vis auch Speicher belegen können, da auch Sub Vis Kopien im Speicher anlegen. Deswegen kam von dort die Empfehlung, keine (!) Sub Vis zu benutzen (was klar gegen die Schön- Programmier-Richtlinie geht).
Hallo,
das glaube ich nicht..

' schrieb:Prinzipiell gehts ja um die Frage: was lässt die Arbeitssspeicherbelegung anwachsen? Sind es die lokalen Variablen? Wenn ja, kann ich den durch LabVIEW leeren, ohne das VI zu stoppen?
Ich habe jetzt nur mal flüchtig den Code angesehen und nachdem Achim eine steife Hand hat musste ich den Reifen vom Scrollrad wechseln, also keine
Wunder erwarten.
Schleife 1:Liefert die Daten für die Diagramme
Hier erstellt Du für max. 72 Std bei einer Aktualisierung von 1/s für jeden der 9 Kanäle ein Array und führst diese Arrays CHARTS zu die von Hause aus eine Historienlänge haben.
Nebenbei bemerkt entsprechen diese Arrays max. 9*3600*72 = 2332800 Werte die erstmal dargestellt und intern gehandelt werden müssen.
Suche mal hier im Forum nach Ringspeicher..

Gruß
Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2009, 07:43
Beitrag #13

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Von NI? O Das glaube ich beim besten Willen nicht. Ich habe so ziemlich jede LabVIEW-Schulung bei NI mitgemacht (inkl. Performance Guide) und dort machen sie eher ein SubVI zu viel als zu wenig!
Wer hat Dir das denn gesagt, bzw. wo hast Du das bei NI gelesen? Unsure

Gruß Markus

' schrieb:Deswegen kam von dort die Empfehlung, keine (!) Sub Vis zu benutzen (was klar gegen die Schön- Programmier-Richtlinie geht).

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2009, 09:47
Beitrag #14

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
' schrieb:Ich habe jetzt nur mal flüchtig den Code angesehen und nachdem Achim eine steife Hand hat musste ich den Reifen vom Scrollrad wechseln, also keine
Wunder erwarten.
Ich auch, ich auch...

Habe aber trotzdem was gefunden, was mit gar nicht gefällt:
   

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2009, 10:55
Beitrag #15

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
' schrieb:Ich auch, ich auch...
Ich auch, ich auch ...

Das mit der File-Referenz-Verzweigung sehe ich bezüglich Schließen nicht so eng. Schlimmer ist, dass dadurch zwei parallele Schreibzugriffe auf die Datei möglich sind. Frage: Welcher der beiden Schreibzugriffe findet zuerst statt?

Ansonsten schließe ich mich den Hinweisen von rasta an. Möglicherweise kommt der Speicherverbrauch von den Graphen, die bekanntermaßer Speicherverbraucher sind.

Außerdem sollte folgendes überlegt werden:
Wenn in einen (Sub)VI Speicher alloziert wird, so wird der frühestens am Ende des (Sub)VIs wieder freieggeben. So gesehen haben SubVIs also weitere Vorteile. Sollte in einem so großen VI Speicher zyklisch angefordert werden (was ich zwar nicht beweisen, mir aber ohne weiteres vorstellen kann), so wird eines Tages der Speicher überlaufen. Programmiert mit SubVIs würde kurzzeitig verwendeter Speicher wieder freigegeben werden.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.11.2009, 12:45
Beitrag #16

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
LV löst viele SubVIs schon von sich aus auf, aber eben nicht alle, bei denen es möglich wäre. Ab welcher Version LV das macht weiß ich leider nicht, aber ich tippe mal auf 8.5.

http://zone.ni.com/devzone/cda/pub/p/id/347

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.11.2009, 13:56 (Dieser Beitrag wurde zuletzt bearbeitet: 12.11.2009 13:57 von Achim.)
Beitrag #17

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Dein Link beantwortet das ja schon eingehend:

Zitat:The LabVIEW compiler performs compile-time inlining, but you also can force inlining in the development environment by adding the line “inlineSubVIEnabled=TRUE” to your LabVIEW.ini file. Once you restart LabVIEW, a new item called Inline subVI appears in the right-click menu of subVIs on block diagrams (see Figure 4). Selecting this item moves the code from the subVI into the calling VI, effectively the reverse of “Create subVI.” This feature does not usually make for the most attractive code and removes several often important features of using subVIs – including modularity, encapsulation, and scalability – but it is a handy shortcut if you need to force visibility in the development environment.

Meistens sind SubVIs eben doch die bessere Wahl...

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.11.2009, 13:10
Beitrag #18

dude776 Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Jun 2006

8.6
-
de

86911
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
Hi,
tschuldigung für die Abnutzungserscheinungen beim VI check.
Habe aber leider keine Zeit, das VI prinzipiell neu aufzusetzen, was ich aber gerne machen würde (wenn ich könnte). Muss so halt weiter mit dem Spott der LabVIEW Pros leben...

Die Info, dass ein SUBVI eine höhere Speicherauslastung zur Folge haben kann, stammt aus der LAbView Hilfe, da steht zwar unter "Speicherauslastung" dasss man die Style Guide befolgen soll (Sprich:SubVis), an einem andern Ort in der Hilfe (den ich zugegebenerweise nicht mehr finde, deswegen: auch egal!) wurde behauptet, dass wenn das VI schnell wie möglich mit der wenigsten Speicherauslastung laufen soll, dann, sinngemäß wiedergegebn: solle man sich nicht an die Style guide halten und ohne SubVis programmieren...ICh habs da halt gelesen, jetzt mühselig darüber zu diskutieren. Ganz klär täten meinem VI SubVis gut, das ist nicht die Ursache für die Speicherauslastung (habe ich auch getestet, so dass jetzt ca. 4 Schleifen vorher in einem SubVi realisiert waren--> Kein Unterschied in der Performance.

Ich habe wie bereits anfangs erwähnt, sämtliche "verdächtige" Schleifen (z.B: Diagramme, Datenarchivierung, PID Regler) rausgelöscht, trotzdem stieg die Speicherauslastung innerhalb der 3,4 Tage bis zum Absturz.
In der Hilfe fand ich folgendes:

"Lokale Variablen erstellen Kopien der Datenpuffer. Das heißt, beim Auslesen einer lokalen Variable wird für die Daten des damit verbundenen Bedienelements ein neuer Puffer erstellt.
Wenn eine große Anzahl an Daten von einer Stelle im Blockdiagramm an eine andere übertragen wird, ist im Allgemeinen mehr Speicherplatz erforderlich, und dementsprechend verlangsamt sich auch die Ausführungsgeschwindigkeit gegenüber dem Datenaustausch über eine normale Verbindung. Zur Speicherung von Daten während der VI-Ausführung empfiehlt es sich, Schieberegister zu verwenden. "

Ist meine Variablenanzahl wirklich so hoch, dass es zum Überlauf kommen kann? Kanns irgendwie nicht glauben....Ist die "Struktur" mit x parallel laufenden Schleifen ein Problem? Oder gibts ein Problem mit der "State Machine (Schleife 2)?
Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.11.2009, 13:53
Beitrag #19

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
' schrieb:"Lokale Variablen erstellen Kopien der Datenpuffer. Das heißt, beim Auslesen einer lokalen Variable wird für die Daten des damit verbundenen Bedienelements ein neuer Puffer erstellt.
Wenn hier gesagt wird, dass lokale Variablen Speicherplatz verbrauchen, dann ist das so gesehen richtig - aber ggf. unerheblich für dein Problem. Der Variablen-Speicher muss ja nicht ständig neu angefordert werden. Einmal vorhanden ist ja ausreichend. Das gilt für Basistypen (INT, Bool, DBL etc.) und Zusammenstellungen von Basistypen (cluster).
Achtung Ausnahme: dynamische Datentypen wie z.B. Strings und Array werden bei jedem Beschreiben neu alloziert.

Zitat:Ist meine Variablenanzahl wirklich so hoch, dass es zum Überlauf kommen kann?
Da muss ich, da mir das mit den dynamischen Typen eingefallen ist, noch mal kucken.

Zitat:Ist die "Struktur" mit x parallel laufenden Schleifen ein Problem?
Per se nicht. (Ich zähl die vielen Xe schon gar nicht mehr).

Zitat:Oder gibts ein Problem mit der "State Machine (Schleife 2)?
Soll ich die auch noch ankucken?

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.11.2009, 14:45 (Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2009 14:47 von IchSelbst.)
Beitrag #20

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arbeitsspeicher nach 3 Tagen voll/Systemabsturz
' schrieb:(Schleife 2)?
Wieso denn erst Schleife 2? Bei deinem Programm geht's schon in Schleife 1 los! (Wie war das mit dem Schaden und dem Spott?)

Du hast dort 9 Stück Array in Schieberegister. Die Länge der Arrays ändert sich pro Schleifendurchlauf. Wenn die maximale Arraylänge erreicht ist, löscht du das erste Element und fügst ein neues hinten an. Das alles kostet Speicher. Da die Schleife nur einmal pro Sekunde durchlaufen wird, kann ich mir vorstellen, dass der Absturz erst nach 3 Tagen passiert.

Ich würde hier folgendes machen: Initialisieren der Schieberegister mit 1DArr of DBL, Wert NAN, Länge MAX. Statt "An Array anhängen" nimmst du "In Array ersetzen". Das mit dem Löschen lässt du weg und nimmst stattdessen "1DArr rotieren".

Nachtrag:
Beachte weiterhin auch Beitrag #12.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  OHNE VI: Arbeitsspeicher läuft voll ddrayss 8 6.433 12.10.2019 17:05
Letzter Beitrag: ddrayss
  Arbeitsplatz läuft voll kompass453 6 4.399 05.09.2017 14:10
Letzter Beitrag: kompass453
  Speicher voll / Programmaufbau yapete 2 4.494 13.12.2016 16:21
Letzter Beitrag: jg
  Arbeitsspeicher läuft voll Michael1984 10 10.727 04.03.2015 09:45
Letzter Beitrag: Y-P
  Arbeitsspeicher bei Übergabe großer Cluster ib 2 3.869 07.01.2014 13:47
Letzter Beitrag: ib
  Speicher läuft in Statemachine voll (großes Array...) Peter04 5 7.757 30.11.2013 22:42
Letzter Beitrag: D_Sev

Gehe zu: