Mehr Rechenzeit abknapsen/Verursacher finden
-
Windows ist kein Echtzeitbetriebssystem. D.h. es gibt keine Garantie, egal ob ein Virenscanner dazwischen funkt oder nicht. Gleiches gilt fuer Linux. Auch kann die Netzwerkkarte das Senden verzoegern, wenn beispielsweise Daten empfangen werden oder andere Daten gesendet, dhcp etc. . Dort ist der Fehler auch nicht zu suchen, sondern beim angeschlossenen Geraet. Es sollte mit variablem Timeing der Pakete umgehen koennen.
-
Jochen Kalmbach schrieb:
Installiere auf Linux auch einen Viren-Scanner; das hast Du auf beiden Systemen das gleiche Verhalten
Wohl kein toller Plan, da Linux-Virenscanner in der Regel nicht intrusiv sind und eher Scan-on-demand durchführen.
-
Ethon schrieb:
Jochen Kalmbach schrieb:
Installiere auf Linux auch einen Viren-Scanner; das hast Du auf beiden Systemen das gleiche Verhalten
Wohl kein toller Plan, da Linux-Virenscanner in der Regel nicht intrusiv sind und eher Scan-on-demand durchführen.
Manche Leute sind so humorlos, dass es einfach nur weh tut...
-
knivil schrieb:
Dort ist der Fehler auch nicht zu suchen, sondern beim angeschlossenen Geraet. Es sollte mit variablem Timeing der Pakete umgehen koennen.
Das kann das Gerät - dafür hat es einen internen Speicher. Nur ist der halt endlich - und wenn die Gegenseite lange genug nichts mehr sendet irgend wann auch leer. Das dieses Gerät prinzipiell jedoch funktioniert, ist auch schon bewiesen.
-
Zur Ursachenforschung nützlich:
http://msdn.microsoft.com/en-us/performance/cc825801...wenn nach 25ms schon der Puffer des Geräts voll läuft ist das für mich aber eher ein fehlentworfenes Gerät
-
geeky schrieb:
...wenn nach 25ms schon der Puffer des Geräts voll läuft
Davon war nie die Rede.
Im Gegenteil: der Host legt Pausen von >25 msec (man beachte das "größer") ein, die dann zu einem Leerlaufen des Puffers führen. Der Host darf ja gerne Verzögerungen zeigen, nur dürfen die eben nicht beliebig lang sein.
-
Um mal mehr Kontext zu haben: Was ist denn das fuer ein Geraet? Ohne diese Information sehe ich es immer noch als Fehler des Geraetes an, dass der Buffer nicht leer sein darf.
-
Dongger schrieb:
die dann zu einem Leerlaufen des Puffers führen
Ok da hab ich wohl zu schnell gelesen - Ist allerdings die gleiche Situation: Der Puffer ist zu klein
vllt. einfach mehr Daten auf einen Schlag rauskloppen in der Hoffnung das die Netzwerkkarte noch ein wenig puffert
-
geeky schrieb:
Ok da hab ich wohl zu schnell gelesen - Ist allerdings die gleiche Situation: Der Puffer ist zu klein
Aha und wenn auf Hostseite ein Linux läuft wird der Puffer auf dem Gerät auf magische Weise größer? Bzw. schrumpft mir die Hardware auf dem Gerät aus Angst so bald ein Windows-Host verbunden ist oder wie darf ich diese Argumentation verstehen?
-
Noch mal ein Nachtrag zu der Theorie, der Speicher auf dem Gerät wäre zu klein: ich habe mir das Timing noch mal angesehen, es reicht selbst unter Windows nicht nur rechnerisch sondern auch tatsächlich: Die ersten paar Sekunden der Datenübertragung läuft der Stream komplett problemlos, d.h. der Host kann das Gerät ohne weiteres mit Daten versorgen und hat dabei sogar noch Luft.
Das ändert sich nach diesen ersten 1..2 Sekunden, da bricht das Timing auf Hostseite plötzlich ein, der Ausgabethread wird für die bereits erwähnte, viel zu lange Zeit vom System stillgelegt.
D.h. es ist definitiv ein Softwareproblem auf Hostseite, das Gerät ist korrekt dimensioniert.
-
Windows ist kein Echtzeitsystem, es garantiert nichts, der Ausgabethread kann dadurch so lange schlafen gelegt werden, wie es das System fuer richtig haelt. Windows war so, ist so und wird wahrscheinlich immer so bleiben. Der Fehler liegt nicht bei Windows. Wenn du eine Garantie benoetigst, ist Windows das falsche Betriebssystem.
Das ändert sich nach diesen ersten 1..2 Sekunden, da bricht das Timing auf Hostseite plötzlich ein, der Ausgabethread wird für die bereits erwähnte, viel zu lange Zeit vom System stillgelegt
Super Fehlerbeschreibung. Ich schaue mal in meine Glaskugel ... Ich sehe ... dein Programm ist schlecht implementiert.
Du lieferst keinerlei Informationen ueber die Daten, wo sie herkommen, wie sie produziert werden, wie sie versendet werden, ... Sollen wir jetzt weiter Raetsel raten?
-
Dongger schrieb:
Das ändert sich nach diesen ersten 1..2 Sekunden, da bricht das Timing auf Hostseite plötzlich ein, der Ausgabethread wird für die bereits erwähnte, viel zu lange Zeit vom System stillgelegt.
Sendest du ununterbrochen Daten oder kleine Datenpakete in regelmässigen Abständen?
Falls letzteres: Wie wartest du auf den Beginn der nächsten Periode? (Active-Waiting? Irgendein Timer?)