![]() |
TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: TCP Verbindung, Datenverlust bei hoher Rechnerauslastung (/Thread-TCP-Verbindung-Datenverlust-bei-hoher-Rechnerauslastung) |
TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - astraios - 15.03.2007 14:59 Hallo, ich hab ein mittelschweres Problem mit den TCP VIs: Ich empfange Daten über eine TCP/IP Verbindung: [attachment=5665] Dieses SubVI rufe ich in einer Endlosschleife auf, die die empfangenen Daten in einem Queue ablegt, aus dem sie von einer anderen Schleife kontinuierlich ausgelesen werden. Mein Problem ist jetzt, dass mir bei hoher Prozessorauslastung (z.B. durch aufwendige Berechnungen im Programm) in dieser Zeit Daten "durch die Lappen gehen". Wenn ich zur Simulation einer hohen Rechnerauslastung z.B. während der Ausführung das Frontpanel des Haupt-VIs mit dem Mausrad häufig nach oben und unten bewege (was das ganze VI ziemlich lahm legt), gehen meine empfangenen Daten für diesen Zeitraum quasi auf 0 zurück. Woran kann das liegen und was kann ich dagegen tun? Eine etwas ruckelige Anzeige bei hoher Auslastung macht nix - aber der Datenverlust geht gar nich! Ist da ein Buffer zu klein? Ich kann den Server auch nicht auffordern, Daten erneut zu senden, da ich auf diesen keinen Einfluss habe... Vielen Dank schonmal im Voraus für Antworten ![]() Viele Grüße Robert TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - dc6xs - 15.03.2007 16:24 ' schrieb:Dieses SubVI rufe ich in einer Endlosschleife auf, die die empfangenen Daten in einem Queue ablegt, aus dem sie von einer anderen Schleife kontinuierlich ausgelesen werden.Hast Du in der Endlosschleife mal ne 1ms-Verzögerung ausprobiert? Sonst macht LV nämlich gerne mal 100% Systemlast! Gruß, Rob TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - eg - 15.03.2007 17:20 ' schrieb:Hast Du in der Endlosschleife mal ne 1ms-Verzögerung ausprobiert? Sonst macht LV nämlich gerne mal 100% Systemlast! Braucht man nicht, die Schleife wird durch das TCP-Read abgebremst. Ich würde mal einen grösseren Timeoutwert und Bytecount empfehlen. Auf die CPU Auslastung bei anderen Task-VIs achten. Insgesamt ist bei einem guten LV-Prog die CPU-Auslastung bei 2 bis 5 %. Auch wenn du das Fenster schnell bewegst, steigt sie bis 80%, da hast du immer noch genug CPU zum TCP-Lesen. Gruss, Eugen EDIT habe gerade ein Testprogrammchen geschrieben. Probiere es mal aus. Du kannst das Fenster bewegen wie du willst, es gibt keinen Datenverlust. Ach ja, du kannst die 100 ms Wartezeit auch weglassen um höhere Geschwindigkeiten zu ausprobieren. EDIT EDIT EDIT habe gerade festzgestellt, dass ich da falschen Timeout beim Lesen eingestallt hatte. Hier neue Screenshot und VI. TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - astraios - 16.03.2007 10:12 Vielen Dank für die Antworten... ich werd mal schauen, ob ich da noch was tunen kann. Ich benutz schon extra recht große Byteanzahl-Werte, um möglichst alle gerade verfügbaren Daten mit einem Schleifendurchlauf einzulesen... Eine Prozessorauslastung von 2-5% wäre traumhaft für mich! Leider nicht machbar. Mein Programm muss live die Daten von mehreren CAN- und einem Flexray Bus aufzeichnen, grafisch darstellen und teilauswerten... ich bin froh, wenn mir 20% nach oben frei bleiben ![]() Zum TCP: Kann es grundsätzlich sein, dass da Daten verloren gehen (Buffer Overflow oder ähnliches)? Wenn nicht, dann müsste ich den Fehler ja an einer anderen Stelle suchen. TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - eg - 16.03.2007 10:28 ' schrieb:Eine Prozessorauslastung von 2-5% wäre traumhaft für mich! Leider nicht machbar. Mein Programm muss live die Daten von mehreren CAN- und einem Flexray Bus aufzeichnen, grafisch darstellen und teilauswerten... ich bin froh, wenn mir 20% nach oben frei bleiben Achte auf die grafische Darstellung deiner Daten, die verbraucht am meisten CPU. Wichtig: du musst nicht mit jedem Datensatz deine Grafiken updaten! 10 Hz würden für die Darstellung ausreichen. Gruss, Eugen TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - eg - 16.03.2007 10:31 ' schrieb:Zum TCP: Kann es grundsätzlich sein, dass da Daten verloren gehen (Buffer Overflow oder ähnliches)? Wenn nicht, dann müsste ich den Fehler ja an einer anderen Stelle suchen. Kann ich nicht genau sagen. Man muss ja dein Programm kennen. Aber zum Datenverlust kann es bei jeder Schnittstelle kommen. TCP ist eigentlich eine klevere Sache, es ist verbindungsorientiert. Such nach deinem Fehler weiter. Viel Glück. Eugen TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - astraios - 16.03.2007 11:02 OK, vielen Dank für die Hilfe. Ich werd mal schauen, was ich noch machen kann. Wird schon irgendwie gehen (muss ja ![]() Ein schönes Wochenende wünsch ich! ![]() TCP Verbindung, Datenverlust bei hoher Rechnerauslastung - dc6xs - 16.03.2007 11:29 ' schrieb:Kann ich nicht genau sagen. Man muss ja dein Programm kennen. Aber zum Datenverlust kann es bei jeder Schnittstelle kommen. TCP ist eigentlich eine klevere Sache, es ist verbindungsorientiert. Such nach deinem Fehler weiter. Viel Glück. Vielleicht macht das Betriebsysteme da ja auch Probleme bei TCP? Weiss leider nicht wie man bei Windows die Buffergröße des TCP-Stacks vergrößern kann. Eventuell ist es auch hilfreich sich den TCP-Verkehr im LAN mittels WireShark oder Ähnlichen Tools anzusehen. Gruß, Rob |