11.02.2009, 10:30
Beitrag #1
|
bonestruca
LVF-Grünschnabel
Beiträge: 10
Registriert seit: Feb 2009
8.6
-
de
70176
Deutschland
|
"Messwerte in Datei schreiben" müllt Arbeitsspeicher zu
Moin,
Ich erfasse Daten, speichere sie zwischen in Arrays und schreibe diese dann, wenn ich genug gesammelt habe, in Dateien.
Jedoch werden nach dem Abspeichern der Daten auf HD (durch "Messwerte in Datei schreiben") die Daten im Arbeitsspeicher nicht gelöscht.
Das ganze schaut so aus: Eine "Hauptschleife", die die DAQmx Datenerfassung startet, eine "Unterschleife", die alle 500ms die Daten vom DAQ abholt und diese in Arrays einfügt. Habe ich genug Daten gesammelt, wird die "Unterschleife" abgebrochen, das VI Messwerte in Datei schreiben wird aufgerufen, Daten werden gespeichert, "Hauptschleife" wird erneut aufgerufen.
Die Auslagerungsdatei zeigt mir während dem "Ansammeln" der Daten Werte zwische 800 MB und 1 GB an, je nachdem wie lange ich ansammle. Wird nun jedoch diese Schleife abgebrochen und das Speicher-VI aufgerufen schnellt die Größe der Auslagerungsdatei auf 1,5 GB hoch und bleibt dort ! Selbst wenn das VI fertig gespeichert hat und meine Hauptschleife wieder aufgerufen wird, bleibt die Auslagerungsdatei bei 1,5GB oben, was den PC natürlich langsamer macht. Stoppe ich mein Programm, bleibt selbst dann die Auslagerungsdatei bei 1,5GB stehen. Erst beim Beenden von Blockdiagramm und Frontpanel wird der Platz wieder freigemacht.
Meine Frage: Wie kann ich während des Ausführens meines VI's den Arbeitsspeicher leeren. Die Hauptschleife besitzt keine Register, keine globalen Variablen, nichts. Kein Bit sollte von einem auf den anderen Schleifendurchgang übernommen werden.
|
|
|
11.02.2009, 11:00
Beitrag #2
|
chrissyPu
LVF-Stammgast
Beiträge: 467
Registriert seit: Jun 2006
2014 PDS
2006
DE_EN
64283
Deutschland
|
"Messwerte in Datei schreiben" müllt Arbeitsspeicher zu
Hi,
du hast sehr genau beschrieben, was Du machst, irgendwie fehlt mir aber ein Block der sowas macht wie Deine temporären Arrays löschen... Wenn Du das nicht nach dem Schreiben machst, behält LV die natürlich im Speicher...
Vielleicht ist's ja aber auch so selbstverständlich, dass man das macht, dass Du es nicht erwähnt hast...;)Dann hilft aber denke ich nur ein VI oder so, um mal weiter zu schauen (oder jemand, der mehr Wissen über die Arbeitsspeicherverwaltung von LV hat als ich...
ch
|
|
|
11.02.2009, 11:43
Beitrag #3
|
bonestruca
LVF-Grünschnabel
Beiträge: 10
Registriert seit: Feb 2009
8.6
-
de
70176
Deutschland
|
"Messwerte in Datei schreiben" müllt Arbeitsspeicher zu
Der Datenstrang meines "Sammelarrays" läuft in das VI "Messwerte in Datei speichern" und endet dort. Nach dieser Aktion endet der aktuelle Schleifendurchlauf und es beginnt ein neuer. Daten werden nicht mit in den neuen hinübergeschleppt. Keine. Kein Register, Knoten, keine globalen Variablen. Schleifendurchgang zu Ende, neuer beginnt. Wo und wie sollte ich da noch Arrays löschen ?
Ich denke das Problem sind auch nicht die temp. Arrays sondern Das VI Messwerte in Datei speichern. Das baut mir die 1,5GB Auslagerungsdatei, die dann stehen bleibt bis zum Ende aller Tage.
|
|
|
11.02.2009, 11:49
Beitrag #4
|
|
|
11.02.2009, 17:26
Beitrag #6
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
"Messwerte in Datei schreiben" müllt Arbeitsspeicher zu
Ist da was für Dich dabei?
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
11.02.2009, 18:04
Beitrag #7
|
bonestruca
LVF-Grünschnabel
Beiträge: 10
Registriert seit: Feb 2009
8.6
-
de
70176
Deutschland
|
"Messwerte in Datei schreiben" müllt Arbeitsspeicher zu
' schrieb:Ist da was für Dich dabei?
Gruß Markus
Danke, das klärt wieso ich Arrays nur bis zu einer bestimmten Größe bauen kann, leider aber noch nicht, wieso ich nur Dateien bis 130MB speichern kann, auch wenn der Array noch Platz gehabt hätte.
|
|
|
11.02.2009, 18:15
Beitrag #8
|
|
|
11.02.2009, 22:11
Beitrag #9
|
bonestruca
LVF-Grünschnabel
Beiträge: 10
Registriert seit: Feb 2009
8.6
-
de
70176
Deutschland
|
"Messwerte in Datei schreiben" müllt Arbeitsspeicher zu
' schrieb:"Write to Spreadsheet" rausschmeissen und zeilenweise schreiben - du kannst Daten schreiben bis das OS aufgibt.
Gottfried
du meinst also pro zeile, also 1 million mal, ein schleifendurchlauf und ne zeile speichern ? eine million schleifendurchläufe ? ich glaub selbst ohne zeilenspeichern in der schleife würde das zu lange dauern. gibts alternativen ?
|
|
|
11.02.2009, 22:48
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
"Messwerte in Datei schreiben" müllt Arbeitsspeicher zu
' schrieb:du meinst also pro zeile, also 1 million mal, ein schleifendurchlauf und ne zeile speichern ? eine million schleifendurchläufe ? ich glaub selbst ohne zeilenspeichern in der schleife würde das zu lange dauern. gibts alternativen ?
10 Zeilen auf einmal schreiben -> nur noch 100.000 Durchläufe.
100 Zeilen auf einmal schreiben -> nur noch 10.000 Durchläufe.
etc etc.
Das Problem bei Write To Spreadsheet: Wenn du da ein sehr großes Array auf einmal schreiben willst, dann wandelt dieses VI das gesamte Array erst mal in einen Spreadsheet-String! Das braucht Speicher und dauert natürlich.
Also muss ein Kompromiss her.
Probier doch erst mal zeilenweise, vielleicht geht es schneller als du denkst.
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.
|
|
|
| |