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 

Speicherbedarf FGV



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!

10.01.2012, 10:19
Beitrag #1

taktbar Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Dec 2011

8.6
2011
DE



Speicherbedarf FGV
Hallo!

Ich möchte anhand einer funktionalen globalen Variable eine Audioaufnahme zwischen verschiedenen VIs austauschen.
Prinzipiell funktioniert das ganze auch schon, jedoch wundere ich mich über den hohen Speicherverbrauch.

Die Daten liegen als u16 Werte mit einer Abtastrate von 44100 kHz auf der Festplatte gepuffert vor. Angenommen, ich möchte die letzten 10 Sekunden dieses Puffers auslesen. Somit komme ich auf ein Datenaufkommen von 44100 S/s x 10 s x 2 Byte/S = 882000 Byte. Schiebe ich dieses Array aus 441000 Werten in die FGV, so benötigt diese laut dem "Profile Performance and Memory"-Tool 3533,86 kByte. Das ist ungefähr das vierfache Datenaufkommen.

Kann mir jemand einen Tipp geben, wo dieser Overhead herkommt, bzw. wie ich ihn minimieren bzw. eliminieren kann?

Gruß,
Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.01.2012, 10:23
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Speicherbedarf FGV
Hallo Christian,

dazu müsste man deine FGV sehen.

Erster Check:
- Schieberegister braucht Speicher
- Anzeige (=Daten-Ausgang der FGV) braucht Speicher
- alle Datenbuffer korrekt typisiert (als U16)?
- lass dir die Bufferallocations anzeigen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.01.2012, 10:36
Beitrag #3

taktbar Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Dec 2011

8.6
2011
DE



RE: Speicherbedarf FGV
Hallo Gerd,

vielen Dank für die schnelle Antwort.
Im Anhang befindet sich meine FGV.

In der LV-KnowledgeBase habe ich jedoch gelesen, dass LabVIEW KEINEN neuen speicherbereich anlegt, wenn die Daten NICHT verändert werden... Das ist in meinem Beispiel meiner Meinung nach der Fall. Deine Aussage bezüglich der allozierung von Speicher für Schieberegister, Ausgänge etc. leuchtet mir zwar ein - würde aber doch der o.g. Auffassung wiedersprechen?!

Hättest du eine andere Idee um das Datenaufkommen zu minimieren?
P.S.: Das Beispiel war mit 10 sekunden gewählt, da der Puffer aber beliebige Größe haben kann, müssen auch weitaus größere Datenmengen gehandelt werden können (beispielsweise 10 minuten = 600 sekunden)


Angehängte Datei(en)
8.6 .vi  ContinuousRecording_FGV_Data.vi (Größe: 9,28 KB / Downloads: 176)

8.6 .ctl  GlobalStates.ctl (Größe: 3,9 KB / Downloads: 140)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.01.2012, 10:42 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2012 10:42 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Speicherbedarf FGV
Hallo Christian,

ich würde den Read-Case so machen:
   
Da wird mir nur eine Bufferallocation für das Schieberegister angezeigt!

Zitat:eine andere Idee
Queues bieten sich immer an, wenn nur ein Consumer bedient werden soll...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.01.2012, 10:49
Beitrag #5

taktbar Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Dec 2011

8.6
2011
DE



RE: Speicherbedarf FGV
Da in der Tat nur ein Consumer bedient wird, könnte eine Queue tatsächlich in Frage kommen.
Diesen Ansatz hatte ich bereits auch schonmal in Betracht gezogen, war mir jedoch nicht sicher, ob dieser tatsächlich Speicher einsparen wird. Aber mit den nun gewonnenen Kentnissen, sollte damit wirklich das Aufkommen minimiert werden können.

Ich werde das mit der Queue dann mal näher erörtern!
Danke!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.01.2012, 15:19
Beitrag #6

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
RE: Speicherbedarf FGV
Dein Read-Case ist in der Tat suboptimal. LabVIEW ist eine byValue sprache und jeder Drahtabzweig bedeutet eine Datenkopie. Sowie GerdW den Readfall geändert hat, sollte diese unnötige Speicherallozierung behoben sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.01.2012, 10:04
Beitrag #7

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: Speicherbedarf FGV
(10.01.2012 15:19 )abrissbirne schrieb:  Dein Read-Case ist in der Tat suboptimal. LabVIEW ist eine byValue sprache und jeder Drahtabzweig bedeutet eine Datenkopie. Sowie GerdW den Readfall geändert hat, sollte diese unnötige Speicherallozierung behoben sein.

Nein!

Sich die Buffers nur in der FGV selbst anzuschauen reicht meist nicht aus. Auf jeden Fall das Ganze nochmals im Kontext, also in den eigentlichen ZielVIs checken.
Der Buffer aus dem Schieberegister _muss_ nach dem Aufruf der FGV für das/die ZielVIs kopiert worden sein, da LV nicht sicherstellen kann, daß die Daten in der FGV nicht parallel geändert werden. Vom Gesamtspeicherverbrauch geben sich die beiden Versionen deshalb auch nichts. Da könnte mach sogar eher noch zur bedingten Kopierversion argumentieren, wenn es in Zukunft noch Cmds in der FGV gibt, die nicht den gesamten Puffer zurückgeben müssen.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2012, 10:44
Beitrag #8

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
RE: Speicherbedarf FGV
(12.01.2012 10:04 )macmarvin schrieb:  
(10.01.2012 15:19 )abrissbirne schrieb:  Dein Read-Case ist in der Tat suboptimal. LabVIEW ist eine byValue sprache und jeder Drahtabzweig bedeutet eine Datenkopie. Sowie GerdW den Readfall geändert hat, sollte diese unnötige Speicherallozierung behoben sein.

Nein!

Doch! (zumindest in der fgv!)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2012, 11:36 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2012 11:39 von macmarvin.)
Beitrag #9

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: Speicherbedarf FGV
(12.01.2012 10:44 )abrissbirne schrieb:  Doch! (zumindest in der fgv!)

Wenn Du Recht hättest, wäre der Speicherverbrauch der ersten Version größer als bei der Zweiten. Mit dem angehängten Snippet und dem Taskmanager/ProcessExplorer/LV Perfomance&Memory lässt sich das recht einfach testen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2012, 14:59 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2012 15:00 von abrissbirne.)
Beitrag #10

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
RE: Speicherbedarf FGV
(12.01.2012 11:36 )macmarvin schrieb:  
(12.01.2012 10:44 )abrissbirne schrieb:  Doch! (zumindest in der fgv!)

Wenn Du Recht hättest, wäre der Speicherverbrauch der ersten Version größer als bei der Zweiten. Mit dem angehängten Snippet und dem Taskmanager/ProcessExplorer/LV Perfomance&Memory lässt sich das recht einfach testen.

Natürlich darf das FP nicht geöffnet sein und es gibt einen Unterschied zw. LV 2011 und der hochgeladenen LV 8.6. Da ist der Compiler noch nicht so schlau wie heute.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Speicherbedarf von Clustern Dommas 1 2.857 27.07.2011 15:19
Letzter Beitrag: macmarvin
  VI mit steigendem Speicherbedarf freezer 8 5.039 28.09.2009 22:22
Letzter Beitrag: freezer

Gehe zu: