Stream Buffer vergroessern..
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
Stream Buffer vergroessern..
Hi,
alle kennen die doch immer noch vorkommenden Streamunterbrechungen bei TS-Streaming selbst bei optimiertem Netzwerk. Die Datenrate steigt bei manchen Sendern/Sendungen auch schon mal > 9MBit/sec was dann bei laengeren Spitzenwerten zu einer Unterbrechung fuehren kann da die Daten nicht mehr durch das 10MBit half Duplex Nadeloehr der Box passen.
Was wuerde es bringen den Ringbuffer zB. zu verdoppeln ?
Spitzenwerte duerften imo dann hoeher sein und/oder langer anhalten...
Ein kleiner Graph der meine zusaetzliche Misere mit dem Asus WL-HDD NAS-Device zeigt..:
..rot ist ein Schreibvorgang auf das WL-HDD bei dem es zu Einbruechen kommen kann wenn es zB. konkurierende Schreibvorgaenge gibt...oder zB. das Netzwerk 'dicht' ist....gelb ist eine Aufnahme von der Box.
Zwei Fragen dazu:
1.:Wie gross ist der Buffer im Moment ?
2.:Koennte man den Buffer zB. verdoppeln (zB. auf Kosten des EPG-Buffers) ?
Ich denke es waere ein Versuch Wert ob dadurch insgesamt hoehere Stream Spitzenwerte erreicht werden koennten.
cu,
peter
alle kennen die doch immer noch vorkommenden Streamunterbrechungen bei TS-Streaming selbst bei optimiertem Netzwerk. Die Datenrate steigt bei manchen Sendern/Sendungen auch schon mal > 9MBit/sec was dann bei laengeren Spitzenwerten zu einer Unterbrechung fuehren kann da die Daten nicht mehr durch das 10MBit half Duplex Nadeloehr der Box passen.
Was wuerde es bringen den Ringbuffer zB. zu verdoppeln ?
Spitzenwerte duerften imo dann hoeher sein und/oder langer anhalten...
Ein kleiner Graph der meine zusaetzliche Misere mit dem Asus WL-HDD NAS-Device zeigt..:
..rot ist ein Schreibvorgang auf das WL-HDD bei dem es zu Einbruechen kommen kann wenn es zB. konkurierende Schreibvorgaenge gibt...oder zB. das Netzwerk 'dicht' ist....gelb ist eine Aufnahme von der Box.
Zwei Fragen dazu:
1.:Wie gross ist der Buffer im Moment ?
2.:Koennte man den Buffer zB. verdoppeln (zB. auf Kosten des EPG-Buffers) ?
Ich denke es waere ein Versuch Wert ob dadurch insgesamt hoehere Stream Spitzenwerte erreicht werden koennten.
cu,
peter
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
Hi,
der Demux-Treiber verwaltet intern einen eigenen Puffer, dessen Größe man über nen entspr. ioctl()-Aufruf vorgeben kann (welche maximale Größe erlaubt ist, weiß ich aber nicht). Nur dieser Buffer wird beim TS-Abspielen verwendet., weil ich damit die besten Ergebnisse erziehlt hab.
Er ist derzeit auf 275600 Bytes eingestellt. Das Auffüllen erfolgt jeweils mit kleinen Häppchen, wobei das Schreiben nur geblockt wird, wenn grad nix mehr reinpasst, d.h. in dem Fall wird die I/O-Schleife (Lesen aus TS-File/ Schreiben in Puffer) pausiert -> aber das kommt bei hoher Bitrate sowieso nicht vor, da der Puffer in dem Fall ja leerläuft !
Hab natürlich verschiedene Variatiionen in punkto Größe probiert, wobei sich aber nichts an der Bandbreitenproblematik geändert hat. Auch bei großem Puffer pendelt sich das Ganze irgendwann am unteren Ende (also beim Leerzustand) ein, eventuell halt eben nur etwas später. Es werden ja immer hin bei einem Film mehrere GB durchgesetzt !
Wer's aber trotzdem mal probieren möchte, kann folgende Zeile in movieplayer.cpp anpassen und (1600*188) anstelle von (800*188) nehmen:
Die eigentliche Puffergröße ergibt sich in Abhängigkeit davon, wie folgt.
Und aufpassen ! - RAM-Speicher hat die DBox halt eben nur begrenzt. Auch andere Applikationen wollen leben ...
- GMo -
der Demux-Treiber verwaltet intern einen eigenen Puffer, dessen Größe man über nen entspr. ioctl()-Aufruf vorgeben kann (welche maximale Größe erlaubt ist, weiß ich aber nicht). Nur dieser Buffer wird beim TS-Abspielen verwendet., weil ich damit die besten Ergebnisse erziehlt hab.
Er ist derzeit auf 275600 Bytes eingestellt. Das Auffüllen erfolgt jeweils mit kleinen Häppchen, wobei das Schreiben nur geblockt wird, wenn grad nix mehr reinpasst, d.h. in dem Fall wird die I/O-Schleife (Lesen aus TS-File/ Schreiben in Puffer) pausiert -> aber das kommt bei hoher Bitrate sowieso nicht vor, da der Puffer in dem Fall ja leerläuft !
Hab natürlich verschiedene Variatiionen in punkto Größe probiert, wobei sich aber nichts an der Bandbreitenproblematik geändert hat. Auch bei großem Puffer pendelt sich das Ganze irgendwann am unteren Ende (also beim Leerzustand) ein, eventuell halt eben nur etwas später. Es werden ja immer hin bei einem Film mehrere GB durchgesetzt !
Wer's aber trotzdem mal probieren möchte, kann folgende Zeile in movieplayer.cpp anpassen und (1600*188) anstelle von (800*188) nehmen:
Code: Alles auswählen
#define PF_BUF_SIZE (800*188)
Code: Alles auswählen
#define PF_DMX_SIZE (PF_BUF_SIZE + PF_BUF_SIZE/2)
- GMo -
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
petgun meint wohl den Puffer für die Direktaufnahme und hat dabei schon wieder Npq's hervorragenden Kommentar vergessen.
Nachzulesen unter: http://forum.tuxbox-cvs.sourceforge.net ... p?p=213530
Nachzulesen unter: http://forum.tuxbox-cvs.sourceforge.net ... p?p=213530
There are 10 types of people in the world: those who know binary and those who don't
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
ja, mal wieder verdraengt...und vergessen ;-) sorry!DieMade hat geschrieben:petgun meint wohl den Puffer für die Direktaufnahme und hat dabei schon wieder Npq's hervorragenden Kommentar vergessen.
Nachzulesen unter: http://forum.tuxbox-cvs.sourceforge.net ... p?p=213530
Ich bekomme einfach nur die Krise und habe keine Kohle mir eine neue Platte fuer mein WL-HDD zu kaufen weil die Schreibgeschwindigkeit nicht reicht bei konkurierenden Schreibprozessen...
1,3MB iss nich viel....zB. 2,6MB wuerden aber imo trotzdem etwas helfen....nicht nur rein mental ;-)
..schiebt die weisse Linie in dem Graph rauf und runter und stellt Euch einen vergoesserten Buffer vor bei einer gelben Linie auf hoeherem Niveau.....natuerlich bringt das was....ja ich habe das Franz&Onkel Karl Beispiel von Npq verstanden und weiss auch wie ein Ringbuffer funktioniert...das warme Wasser ist die gelbe Linie...;-)...bei gleicher gelber Linie, unveraendertem Netzwerkdurchsatz(Abflussgeschwindigkeit)) und vergroessertem Buffer(Wannengroesse), koennt Ihr die weisse Linie (wann die Wanne ueberlaeuft) weiter nach oben schieben....um wieviel kann ich nicht ausrechnen...aber Ihr vielleicht...nehmt einfach mal an die gelbe Kurve sieht wie ein Saegezahn aus....ich wuerde den Buffer so gross machen wie es nur irgendwie geht....
cu,
peter
-
- Interessierter
- Beiträge: 34
- Registriert: Mittwoch 10. November 2004, 12:04
Das ist wirklich ein netter Kommantar , aber leider ist der Vergleich (hier) nicht ganz richtig.DieMade hat geschrieben:petgun meint wohl den Puffer für die Direktaufnahme und hat dabei schon wieder Npq's hervorragenden Kommentar vergessen.
Nachzulesen unter: http://forum.tuxbox-cvs.sourceforge.net ... p?p=213530
Die Datenrate des aufzunehmenden Streams ist ja nicht konstant, sondern schwankt. Oder um bei dem Beispiel zu bleiben: Es kommt mal mehr, mal weniger Wasser aus dem Wasserhahn.
Und auch die Übertragungsgeschwindigkeit über's Netzwerk ist schwankend (Der Abfluss ist also nicht immer gleich stark verstopft - mal fließt mehr Wasser ab, mal weniger).
Immer dann, wenn gerade mehr Wasser nachläuft als abläuft, wird die Badewanne voller. Je kleiner die Badewanne ist, um so kürzer geht das gut. Natürlich muß im Mittel die Abflußgeschwindigkeit größer als die Zuflußgeschwindigkeit sein, aber je größer die Badewanne ist, um so länger dürfen die Zeitintervalle sein über die gemittelt wird.
Nehmen wir an, die Badewanne ist bei verschlossenem Abfluß nach spätestens einer Minute voll. Wenn man nun alle 10 Minuten den Abfluß für 65 Sekunden komplett verschließt, dann wird die Badewanne dabei jedesmal überlaufen. Bei einer doppelt so großen Badewanne, die erst nach zwei Minuten voll ist, tritt das Problem evtl. nicht mehr auf. Eine größere Badewanne kann also einen Vorteil bringen.
Wären Abfluß- und Zuflußgeschwindigkeit konstant, bräuchte man gar keinen Puffer, da es entweder überhaupt nicht ginge (Zufluß > Abfluß), oder weil immer alles sofort wegfließen würde (Zufluß < Abfluß).
Oder übersehe ich da jetzt was?
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
Prinzipiell richtig, aber das Badezimmer (RAM) ist leider nicht unendlich groß.
Ich schau mir das normal an, evtl. bau ich die Größe des Ringpuffers als Parameter ein - wenn die Box dann abkracht weil kein RAM mehr da ist bin ich aber unschuldig
Ich schau mir das normal an, evtl. bau ich die Größe des Ringpuffers als Parameter ein - wenn die Box dann abkracht weil kein RAM mehr da ist bin ich aber unschuldig
There are 10 types of people in the world: those who know binary and those who don't
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
hi,
cu,
peter
...wieviel ginge ohne Bedenken?DieMade hat geschrieben:Prinzipiell richtig, aber das Badezimmer (RAM) ist leider nicht unendlich groß.
DANKE! Nach meiner Meinung haben dann alle die ca 8MBit/sec erreichen auch keine Probleme mehr mit den Spitzenwerten die beim streamen auftreten koennen....wir werden sehenIch schau mir das normal an, evtl. bau ich die Größe des Ringpuffers als Parameter ein ..
cu,
peter
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
Wenn ich das genau wüsste, würde ich keinen variablen Parameter einbauenpetgun hat geschrieben:...wieviel ginge ohne Bedenken?
Jeder "Ringpuffer" (ich nehme das mal als neue Maßeinheit) belegt technisch bedingt 68056 Bytes. 20 sind aktuell fest verdrahtet und auch in Zukunft das Minimum.
Der optimale Wert wird wohl genauso individuell sein, wie die optimale Netzwerkkonfiguration zum Streamen
There are 10 types of people in the world: those who know binary and those who don't
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
hi,
cu,
peter
..freies RAM beim streamen wird etwa nur noch 500-600 KB angezeigt..also verdoppeln wuerde schon nicht mehr gehen...kann man vielleicht auf Kosten zB. des EPG-Buffers (sectionsd) da was machen?DieMade hat geschrieben:Jeder "Ringpuffer" (ich nehme das mal als neue Maßeinheit) belegt technisch bedingt 68056 Bytes. 20 sind aktuell fest verdrahtet und auch in Zukunft das Minimum.
cu,
peter
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
Das kann ich nicht beurteilen und den sectionsd werde ich ganz bestimmt nicht anfassen (hier halte ich bestimmt mein Wort - übrigens eine etwas unglückliche Formulierung Deinerseits im anderen Thread - ein Versprechen habe ich nirgens abgegeben).
There are 10 types of people in the world: those who know binary and those who don't
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
. ....ja, sorry..ich haette schreiben sollen 'DieMade schaut sich das mal an..'..so habe ich es jedenfalls gemeint. Ich aendere das in dem Thread noch ab.DieMade hat geschrieben:Das kann ich nicht beurteilen und den sectionsd werde ich ganz bestimmt nicht anfassen (hier halte ich bestimmt mein Wort - übrigens eine etwas unglückliche Formulierung Deinerseits im anderen Thread - ein Versprechen habe ich nirgens abgegeben).
cu,
peter
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
So, ist im cvs drin.
Bezüglich des "freien" Speichers - ungenutzter Speicher wird immer als Systemcache verwendet und dieser bei Bedarf auch wieder reduziert. Also MemFree + Cached ist ungefähr der wirklich freie Speicher auf der Box.
Bezüglich des "freien" Speichers - ungenutzter Speicher wird immer als Systemcache verwendet und dieser bei Bedarf auch wieder reduziert. Also MemFree + Cached ist ungefähr der wirklich freie Speicher auf der Box.
There are 10 types of people in the world: those who know binary and those who don't
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
hab's gerade gesehen...vielen Dank!!DieMade hat geschrieben:So, ist im cvs drin.
Bezüglich des "freien" Speichers - ungenutzter Speicher wird immer als Systemcache verwendet und dieser bei Bedarf auch wieder reduziert. Also MemFree + Cached ist ungefähr der wirklich freie Speicher auf der Box.
Jetzt warte ich auf den naechsten Snap (..morgen frueh von DietmarW) und werde hier berichten ob's was gebracht hat....iss imo aber sehr schwer zu testen...oder kann mir einer von Euch eine gute Testmethode dafuer verraten? Ich brauche dazu ein Stream der Spitzenwerte von > 9MBit hat...imo sehr selten...aber andere User mit nicht so optimalem Netzwerk sollten das sofort merken...keine Abbrueche mehr beim ZDF mit allen Tonspuren
DANKE!
cu,
peter
PS:ich werde zum testen die wsize Groesse so verkleinern dass ich nur noch auf etwa 7,5 MBit/sec Dauerschreibgeschwindigkeit komme...damit muesste dann imo ein Effekt zu sehen sein....
Zuletzt geändert von petgun am Mittwoch 15. Dezember 2004, 15:17, insgesamt 1-mal geändert.
-
- Tuxboxer
- Beiträge: 2452
- Registriert: Montag 21. Oktober 2002, 10:04
...musst du eben dein Netztwerk suboptimieren , und ZDF ist schon mal gut(abgesehen vom Programm).petgun hat geschrieben:....iss imo aber sehr schwer zu testen...oder kann mir einer von Euch eine gute Testmethode dafuer verraten? Ich brauche dazu ein Stream der Spitzenwerte von > 9MBit hat...imo sehr selten...aber andere User mit nicht so optimalem Netzwerk sollten das sofort merken...keine Abbrueche mehr beim ZDF mit allen Tonspuren
Schon gelesen ???
ENIGMA-DOC
ENIGMA-DOC
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
jau, ich kanns auch langsam nicht mehr sehen, aber gestern Nacht hat es sich gelohnt...'strange days' war nicht schlecht...mit Datenraten > 7,5 MBit/sec..ich freue mich schon auf den Test mit der variablen Ringbuffer Anzahl ...ich werde den Durchsatz auf 7 MBit kastrieren damit ich nicht so lange warten muss...essu hat geschrieben:...musst du eben dein Netztwerk suboptimieren , und ZDF ist schon mal gut(abgesehen vom Programm).
cu,
peter
-
- Semiprofi
- Beiträge: 1173
- Registriert: Samstag 1. September 2001, 00:00
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
....jau, aber ich verstehe es nicht....nach einschalten der Box und 'free' bekomme ich:Sepp776 hat geschrieben:zum testen kann man ja den sectionsd mal abschießen. Dann ist doch sozusagen Speicher in Massen da
Code: Alles auswählen
~ > free
total used free shared buffers
Mem: 30960 19160 11800 0 0
Swap: 0 0 0
Total: 30960 19160 11800
und nach killall -9 sectionsd...
Code: Alles auswählen
~ > free
total used free shared buffers
Mem: 30960 17720 13240 0 0
Swap: 0 0 0
Total: 30960 17720 13240
Code: Alles auswählen
~ > free
total used free shared buffers
Mem: 30960 30204 756 0 0
Swap: 0 0 0
Total: 30960 30204 756
Code: Alles auswählen
~ > free
total used free shared buffers
Mem: 30960 25808 5152 0 0
Swap: 0 0 0
Total: 30960 25808 5152
@DieMade
...ich habe den Durchsatz mal auf 5,3 MBit reduziert und selbst sehr kleine Spitzen die darueber hinaus gehen fuehren unmittelbar zu einer Aufnahmeunterbrechung...ich bin sehr gespannt wie's mit Deiner Erweiterung aussieht...
cu,
peter
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
ok!DieMade hat geschrieben:free in der busybox zeigt den Wert für "Cached" nicht an.
cat /proc/meminfo und dort MemFree und Cached addieren.
..noch mal ein Graph der mich nicht so ganz zuversichtlich stimmt...
...nach jeder Spitze kommt die Unterbrechung ich haette nicht gedacht das es so empfindlich reagiert....morgen wissen wir mehr.
Diese Unterbrechungen dauern etwa 5 Sekunden in der ja allerhand passiert...File schliessen..neue Files anlegen (Aufnahme.ts plus *.xml) Waere es nicht besser wieder zu den beruehmten resyncs zu kommen...also file nicht schliesen sondern nach resync einfach weiter schreiben...vielleicht mit eine Anzeige auf dem Bildschirm 'resync' aber nicht das file schliessen und wieder neu anfangen...muesste doch schneller gehen und wir hatten nicht die Fragmente...
cu,
peter
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
-
- Tuxboxer
- Beiträge: 5001
- Registriert: Montag 11. November 2002, 15:26
Hi,
das ist imo ein voller Erfolg!
Hier ein Chart ohne Bandbreitenbegrenzung:
das war der typische Verlauf des Laenderspiels Japan gegen Deutschland ;-) mit den Spitzen die sehr oft ueber 6MBit gingen.
Hier der Verlauf mit der Bandbreitenbegrenzung auf ca 5,3 MBit und 99 Ringbuffern:
...das wirkt wie ein Integrator und die Spitzen verschwinden. Wenn der Kondensator/Ringbuffer voll ist, gibt's natuerlich wieder Abbrueche aber vergleicht es bitte mit dem Beispiel weiter oben im Thread...
..jede kleinste Spitze hat da zu einem Abbruch gefuehrt.
Selbst bei einer realen Netzwerkbandbreite von vielleicht nur 7 MBit sollten imo die meisten Aufnahmen jetzt nicht mehr abbrechen da sich in der Praxis die Streams nach meiner Erfahrung selten sehr lange auf so hohen Niveau bewegen...und je kleiner die Grundlast, umso hoeher duerfen die Spitzen sein und umso besser wird das funktionieren.
@DieMade
nochmals vielen Dank fuer die sehr schnelle und perfekte Umsetzung!
@all
happy streaming ;-)
cu,
peter
das ist imo ein voller Erfolg!
Hier ein Chart ohne Bandbreitenbegrenzung:
das war der typische Verlauf des Laenderspiels Japan gegen Deutschland ;-) mit den Spitzen die sehr oft ueber 6MBit gingen.
Hier der Verlauf mit der Bandbreitenbegrenzung auf ca 5,3 MBit und 99 Ringbuffern:
...das wirkt wie ein Integrator und die Spitzen verschwinden. Wenn der Kondensator/Ringbuffer voll ist, gibt's natuerlich wieder Abbrueche aber vergleicht es bitte mit dem Beispiel weiter oben im Thread...
..jede kleinste Spitze hat da zu einem Abbruch gefuehrt.
Selbst bei einer realen Netzwerkbandbreite von vielleicht nur 7 MBit sollten imo die meisten Aufnahmen jetzt nicht mehr abbrechen da sich in der Praxis die Streams nach meiner Erfahrung selten sehr lange auf so hohen Niveau bewegen...und je kleiner die Grundlast, umso hoeher duerfen die Spitzen sein und umso besser wird das funktionieren.
@DieMade
nochmals vielen Dank fuer die sehr schnelle und perfekte Umsetzung!
@all
happy streaming ;-)
cu,
peter
-
- Tuxboxer
- Beiträge: 4332
- Registriert: Dienstag 7. Mai 2002, 17:04
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
http://wiki.tuxbox-cvs.sourceforge.net/ ... n:AufnahmeTommy hat geschrieben:Wie kann ich den Parameter ändern? GUI?
Gruß
Mogway