Stream Buffer vergroessern..

Wünsche, Anträge, Fehlermeldungen
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Stream Buffer vergroessern..

Beitrag von petgun »

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..:
Bild
..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
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

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:

Code: Alles auswählen

#define PF_BUF_SIZE   (800*188)  
Die eigentliche Puffergröße ergibt sich in Abhängigkeit davon, wie folgt.

Code: Alles auswählen

#define PF_DMX_SIZE   (PF_BUF_SIZE + PF_BUF_SIZE/2)
Und aufpassen ! - RAM-Speicher hat die DBox halt eben nur begrenzt. Auch andere Applikationen wollen leben ...

- GMo -
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

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 :lol:
There are 10 types of people in the world: those who know binary and those who don't
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

DieMade hat geschrieben:petgun meint wohl den Puffer für die Direktaufnahme und hat dabei schon wieder Npq's hervorragenden Kommentar vergessen.
ups, tatsächlich - da war ja die Aufnahme gemeint :oops: ....

na dann ist halt nur mal ne eingestreute Info zum Auflockern :D

- GMo -
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

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 :lol:
:oops: :oops: ja, mal wieder verdraengt...und vergessen ;-) sorry!
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
jhsch
Interessierter
Interessierter
Beiträge: 34
Registriert: Mittwoch 10. November 2004, 12:04

Beitrag von jhsch »

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 :lol:
Das ist wirklich ein netter Kommantar :-) , aber leider ist der Vergleich (hier) nicht ganz richtig.

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? :gruebel:
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

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 :P
There are 10 types of people in the world: those who know binary and those who don't
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

hi,
DieMade hat geschrieben:Prinzipiell richtig, aber das Badezimmer (RAM) ist leider nicht unendlich groß.
...wieviel ginge ohne Bedenken?
Ich schau mir das normal an, evtl. bau ich die Größe des Ringpuffers als Parameter ein ..
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 sehen :D

cu,
peter
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

petgun hat geschrieben:...wieviel ginge ohne Bedenken?
Wenn ich das genau wüsste, würde ich keinen variablen Parameter einbauen ;)

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
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

hi,
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.
..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?

cu,
peter
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

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
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

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).
. .:gruebel:...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.

cu,
peter
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

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.
There are 10 types of people in the world: those who know binary and those who don't
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

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.
:-) hab's gerade gesehen...vielen Dank!!
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.
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

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 :-)
...musst du eben dein Netztwerk suboptimieren ;), und ZDF ist schon mal gut(abgesehen vom Programm).
Schon gelesen ???
ENIGMA-DOC
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

essu hat geschrieben:...musst du eben dein Netztwerk suboptimieren ;), und ZDF ist schon mal gut(abgesehen vom Programm).
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...

cu,
peter
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

zum testen kann man ja den sectionsd mal abschießen. Dann ist doch sozusagen Speicher in Massen da :)
Philips Sat
Astra 19.2°
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

Sepp776 hat geschrieben:zum testen kann man ja den sectionsd mal abschießen. Dann ist doch sozusagen Speicher in Massen da :)
....jau, aber ich verstehe es nicht....nach einschalten der Box und 'free' bekomme ich:

Code: Alles auswählen

~ > free
              total         used         free       shared      buffers
  Mem:        30960        19160        11800            0            0
 Swap:            0            0            0
Total:        30960        19160        11800
sectionsd 7,3% mem und neutrino 10,5% mem usage (top)
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
jetzt starte ich eine Aufnahme...und wieder 'free' waehrend der Aufnahme...

Code: Alles auswählen

~ > free
              total         used         free       shared      buffers
  Mem:        30960        30204          756            0            0
 Swap:            0            0            0
Total:        30960        30204          756
neutrino hat jetzt 17,2 % mem usage. Aufnahme beendet und wieder free..

Code: Alles auswählen

~ > free
              total         used         free       shared      buffers
  Mem:        30960        25808         5152            0            0
 Swap:            0            0            0
Total:        30960        25808         5152
...und dabei bleibt's! Ich komme nie mehr auf die 11800/13240 und neutrino liegt wieder etwa bei 11% mem usage....steigt aber angsam an...?? Wieso komme ich nicht mehr auf die '13240' wie am Anfang ? Nach der ersten Aufnahme wird der Speicher nicht mehr komplett freigegeben, oder?

@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
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

free in der busybox zeigt den Wert für "Cached" nicht an.

cat /proc/meminfo und dort MemFree und Cached addieren.
There are 10 types of people in the world: those who know binary and those who don't
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

DieMade hat geschrieben:free in der busybox zeigt den Wert für "Cached" nicht an.

cat /proc/meminfo und dort MemFree und Cached addieren.
ok!

..noch mal ein Graph der mich nicht so ganz zuversichtlich stimmt...
Bild
...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
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

Hi,

anstelle nach Pufferüberlauf immer ein neues ein ts-File zu erstellen, könnte auch ein log-file mit Fehlrposition mitgeführt werden. Kann man ja später in Ruhe auswerten ...

- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

hi,
gmo18t hat geschrieben: anstelle nach Pufferüberlauf immer ein neues ein ts-File zu erstellen, könnte auch ein log-file mit Fehlrposition mitgeführt werden. Kann man ja später in Ruhe auswerten ...
jau, noch bessere Idee..wenn das geht waere super!

cu,
peter
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

Hi,
:-) das ist imo ein voller Erfolg!
Hier ein Chart ohne Bandbreitenbegrenzung:
Bild
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:
Bild
...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...
Bild
..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
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

nochmal für DAU's

Im DietmarW von heut morgen ist es eingebaut?
Wie kann ich den Parameter ändern? GUI?
Welcher Wert ist sinnvoll?


Gruß,
Tommy
mogway
Semiprofi
Semiprofi
Beiträge: 1287
Registriert: Montag 30. Dezember 2002, 08:02

Beitrag von mogway »

Tommy hat geschrieben:Wie kann ich den Parameter ändern? GUI?
http://wiki.tuxbox-cvs.sourceforge.net/ ... n:Aufnahme

Gruß
Mogway