Hi,
ich habe eine Zeitgesteuerte Schleife erstellt. Dabei hab ich angegeben, dass diese auf Prozessor 0 ausgeführt werden soll.
Mein Rechner hat zwei Kerne.
Schaue ich mir im Taskmanager die Prozessorauslaustung an, so sehe ich dass die Schleife auf beiden Prozessoren ausgeführt wird.
das sollte jedoch nicht sein. Woran liegt das und wie kann ich sicherstellen, dass nur der Prozessor 0 von der Schleife verwendet wird.
Hallo blubblub,
Zitat:wie kann ich sicherstellen, dass nur der Prozessor 0 von der Schleife verwendet wird.
- Auf einem Multitasking-OS wie Windows gar nicht. Du gibst einen Wunsch vor, aber ob sich das OS daran hält, kann auch LabVIEW nicht (kaum?) beeinflussen...
- In deiner TWL hast du mehrere Charts untergebracht. Du schreibst munter Daten in diese Charts - dieser Vorgang wird auf Core 0 laufen.
ABER: die Anzeige der Daten in den Charts wird LabVIEW-intern vom UI-Thread erledigt - und dieser muss nicht notwendigerweise auf Core 0 laufen...
Beim Performance Guide Lehrgang hat man uns gesagt, dass man das LabVIEW am besten selbst festlegen lässt. Das macht LabVIEW ziemlich gut. Wenn Du z.B. zwei Whileschleifen hast, dann läuft in jedem Prozessor eine Schleife. Wieso willst Du das unbedingt auf "Prozessor 0" laufen lassen?
Gruß Markus
Okay danke für die Antworten.
Der Grund wieso ich das tun will ist folgender.
Ich hab ein großes komplexes Programm.
Es werden Daten von einer Messkarte gelesen.
Diese Daten werden verwendet um einen Regler zu bedienen und um die Werte in ein Diagramm zu zeichnen.
Der Regler benötigt die Daten spätestens alle 20ms.
Also darf das holen, auswerten und zeichnen der Daten in das Diagramm pro Schleifendurchlauf nie länger als 20ms dauern.
Mein Rechner hat wie gesagt zwei Prozessoren. Und ein Windows XP Betriebssystem.
Wenn ich die Daten nicht in ein Diagramm zeichnen lasse, dann funktioniert der Regler gut.
Wenn ich allerdings das Diagramm dazu schalte, dann braucht der Schleifendurchlauf manchmal länger als 20 ms,
was für den Regler ziemlich schlecht ist.
Wenn ich das Diagramm nicht mitzeichnen lasse, dann sehe ich dass ein Prozessor komplett ausreicht um mit der Bearbeitung fertig zu werden.
Wenn ich allerdings das Diagramm mitzeichne, dann reicht ein Prozessor nicht mehr aus um die 20ms einzuhalten.
Auch zwei Prozessoren reichen nicht aus um die 20 ms einzuhalten und ich glaube nicht dass mir ein dritter Prozessor weiter helfen würde,
da die zwei Prozessoren bei der Zeichnung von nur einem Diagramm und dem Berechnen der Werte nicht komplett ausgelastet werden.
Ich hatte jetzt gehofft, die Berechnung der Daten auf Prozessor 0 auslagern zu können
und die Zeichnung des Diagramms auf Prozessor 1, so dass sichergestellt ist, dass die Berechnung der Wert die
der Regler spätestens nach 20 ms pro Schleifendurchlauf benötigt eingehalten wird.
Das Diagramm kann ruhig 1000 ms länger braucht, wenn ich das Diagramm dafür auf den Prozessor zwei gerechnet bekomme.
So langsam gehn mir aber die Ideen aus wie ich die 20 ms einhalten kann und gleichzeitig ein Diagramm zeichnen kann.
Bin für Vorschläge dankbar.
Hallo blubblub,
Zitat:Also darf das holen, auswerten und zeichnen der Daten in das Diagramm pro Schleifendurchlauf nie länger als 20ms dauern.
Wer sagt, dass du alle 20ms ein Diagramm neu zeichnen musst?
Wer sagt, dass das alles in einer Schleife zu erfolgen hat?
Trenne die Datenerfassung und -verarbeitung von der Anzeige! Die Anzeige ist ausreichend schnell, wenn du sie (z.B.) 5mal pro Sekunde erneuerst...