Frage an die Guru's/ Entwickler: Software Begrenzung bei Anzahl der maximal möglichen parallelen Streams via Streamdev-server?

  • Problem: Habe ein "etwas größeres" Setup am Start und möchte da eigentlich ca. 50-60 (Radio-) Streams parallel über die Schnittstelle Streamdev-Server ausspielen. Leider gehen maximal 26 Streams parallel. Hat irgendwer eine Idee woran genau diese Beschränkung liegen könnte? Ich kann leider keine Hinweise finden.

    Verwendete Hardware: 

    • akutelles Serverboard SuperMicro
    • TBS Octa-Tunerkarte für DVB-C oder bisher auch schon 2 TBS Quad-Tunerkarten, gleicher Effekt

    Verwendete Software:

    vdr (2.2.0/2.3.9) - The Video Disk Recorder

    streamdev-server (0.6.1-git) - VDR Streaming Server


    Bei den immer wieder abgelehnten Streams scheint es egal zu sein, auf welchem Transponder diese liegen. Auch Transponder, welche bereits von anderen Streams verwendet werden (und somit vom Tuner her zur Verfügung stehen!) sind von den Abwürfen betroffen, es handelt sich also scheinbar um ein Problem mit der blanken Anzahl an Puffern(?) oder etwas ähnlichem.


    Bisher testweise schon mal geänderte Variablen im Source-Code:

    in vdr-2.3.9/device.h (die Werte habe ich einfach mal testweise willkürlich auf 500/1000 hochgesetzt)

    #define MAXDEVICES 500 // the maximum number of devices in the system (war vorher 16)

    #define MAXPIDHANDLES 1000 // the maximum number of different PIDs per device (war vorher 64)

    #define MAXRECEIVERS 500 // the maximum number of receivers per device (war vorher 16)

    gehe ich recht in der Annahme, dass das "Device" die Karte wäre und mit Receiver dann die dieser Karte zugehörigen HF-Tuner gemeint sind? Wäre dann bei einer 8fach-Tunerkarte im Gerät 1 Device und 8 Receivers?


    im Plugin-Verzeichnis vom Streamdev geändert:PLUGINS/src/streamdev/server/setup.c:

    MaxClients = 500;


    Im Log zu findende Hinweise die mich aber bisher noch nicht wirklich zum Ziel geführt haben:

    Apr 12 11:22:29 myhost vdr: [28995] Streamdev: Accepted new client (HTTP) 127.0.0.1:54460

    Apr 12 11:22:29 myhost vdr: [28995] Streamdev: Accepted new client (HTTP) 127.0.0.1:54456

    Apr 12 11:22:29 myhost vdr: [28995] Streamdev: Accepted new client (HTTP) 127.0.0.1:54458

    Apr 12 11:22:29 myhost vdr: [28995] ERROR: no free receiver slot!

    Apr 12 11:22:29 myhost vdr: [5619] streamdev-writer thread started (pid=28967, tid=5619, prio=high)

    Apr 12 11:22:29 myhost vdr: [5620] streamdev-livestreaming thread started (pid=28967, tid=5620, prio=high)

    Apr 12 11:22:29 myhost vdr: [5621] streamdev-writer thread started (pid=28967, tid=5621, prio=high)

    Apr 12 11:22:29 myhost vdr: [28995] ERROR: no free receiver slot!

    Apr 12 11:22:29 myhost vdr: [5622] streamdev-livestreaming thread started (pid=28967, tid=5622, prio=high)

    Apr 12 11:22:29 myhost vdr: [28995] ERROR: no free receiver slot!

    Apr 12 11:22:29 myhost vdr: [5623] streamdev-writer thread started (pid=28967, tid=5623, prio=high)

    Apr 12 11:22:29 myhost vdr: [5624] streamdev-livestreaming thread started (pid=28967, tid=5624, prio=high)

    Apr 12 11:22:29 myhost vdr: [28995] Streamdev: Accepted new client (HTTP) 127.0.0.1:54462

    Apr 12 11:22:29 myhost vdr: [28995] Streamdev: Accepted new client (HTTP) 127.0.0.1:54466

    Apr 12 11:22:29 myhost vdr: [28995] Streamdev: Accepted new client (HTTP) 127.0.0.1:54464

    Apr 12 11:22:29 myhost vdr: [28995] ERROR: no free receiver slot!

    Apr 12 11:22:29 myhost vdr: [5625] streamdev-writer thread started (pid=28967, tid=5625, prio=high)

    Apr 12 11:22:29 myhost vdr: [5626] streamdev-livestreaming thread started (pid=28967, tid=5626, prio=high)

    Apr 12 11:22:29 myhost vdr: [28995] ERROR: no free receiver slot!

    Apr 12 11:22:29 myhost vdr: [5627] streamdev-writer thread started (pid=28967, tid=5627, prio=high)

    Apr 12 11:22:29 myhost vdr: [5628] streamdev-livestreaming thread started (pid=28967, tid=5628, prio=high)

    Apr 12 11:22:29 myhost vdr: [5629] streamdev-writer thread started (pid=28967, tid=5629, prio=high)

    Apr 12 11:22:29 myhost vdr: [28995] ERROR: no free receiver slot!

    Apr 12 11:22:29 myhost vdr: [5630] streamdev-livestreaming thread started (pid=28967, tid=5630, prio=high)

    Apr 12 11:22:31 myhost vdr: [5603] streamdev-server: streamer done - writer exiting

    Apr 12 11:22:31 myhost vdr: [5603] streamdev-server: closing HTTP connection to 127.0.0.1:54440

    Apr 12 11:22:31 myhost vdr: [28995] fatal error, server exiting: Ungültiger Dateideskriptor

    Apr 12 11:22:31 myhost vdr: [28995] streamdev-server: closing HTTP connection to 127.0.0.1:34050

    Apr 12 11:22:31 myhost vdr: [5603] streamdev-writer thread ended (pid=28967, tid=5603)

    Apr 12 11:22:31 myhost vdr: [5605] streamdev-server: streamer done - writer exiting

    Apr 12 11:22:31 myhost vdr: [5605] streamdev-server: closing HTTP connection to 127.0.0.1:54442

    Apr 12 11:22:31 myhost vdr: [5605] streamdev-writer thread ended (pid=28967, tid=5605)

    Apr 12 11:22:31 myhost vdr: [5607] streamdev-server: streamer done - writer exiting

    Apr 12 11:22:31 myhost vdr: [5607] streamdev-server: closing HTTP connection to 127.0.0.1:54444

    Apr 12 11:22:31 myhost vdr: [5607] streamdev-writer thread ended (pid=28967, tid=5607)

    Apr 12 11:22:31 myhost vdr: [5609] streamdev-server: streamer done - writer exiting

    Apr 12 11:22:31 myhost vdr: [5609] streamdev-server: closing HTTP connection to 127.0.0.1:54446

    Apr 12 11:22:31 myhost vdr: [5609] streamdev-writer thread ended (pid=28967, tid=5609)

    Apr 12 11:22:31 myhost vdr: [5613] streamdev-server: streamer done - writer exiting

    Apr 12 11:22:31 myhost vdr: [5613] streamdev-server: closing HTTP connection to 127.0.0.1:54450

    Apr 12 11:22:31 myhost vdr: [5613] streamdev-writer thread ended (pid=28967, tid=5613)

    Apr 12 11:22:31 myhost vdr: [5611] streamdev-server: streamer done - writer exiting

    Apr 12 11:22:31 myhost vdr: [5611] streamdev-server: closing HTTP connection to 127.0.0.1:54448
    Apr 12 11:22:31 myhost vdr: [5611] streamdev-writer thread ended (pid=28967, tid=5611)

  • Moin,

    warum das so nicht funktioniert, kann ich dir leider auch nicht sagen.

    Da es aber mit 26 Streams läuft, würde ich es einfach mal mit zwei VDR Instanzen versuchen.

    Dann wärst du schon bei 52 und könntest damit prüfen, ob der Rechner (Ram/Netzwerk) das überhaupt packt.

    Falls das funktioniert, kannst du ja immer noch weiter forschen.


    MfG

  • Wird zwar nicht allzu viele treffen, da die Aufgabenstellung mit mehr als 50 Streams aus einem VDR-Server wohl doch eher nicht allzu alltäglich sein dürfte. Aber vielleicht interessiert's den einen oder anderen ja doch - die oben gemachten Einstellungen waren an und für sich genau das was die Lösung gebracht hat. *Mein* Problem war allerdings, dass mir das Debian-Startscript ein Bein gestellt hat und nicht das im Suchpfad befindliche Binary gestartet hat.... :rolleyes:


    Wenn man also von SUSE und den normalerweise recht gut gebauten Paketen dafür gewohnt ist dass immer nur das im Suchpfad auftaucht was auch von den Startscripten verwendet wird und (Admin-Krankheit?) zu faul ist jedes mal die komplette Befehlszeile reinzuhacken und deshalb ein "service vdr start" bevorzugt dann schiesst man sich damit logischerweise in den Fuß. Weil: Suchpfad /usr/local/bin/vdr, augerufener Pfad im Script: /usr/bin/vdr....


    vdr --version bringt also über Suchpfad die erwartete Ausgabe mit eigenem Kompilat, service vdr ..... greift auf falsches Binary zu.


    Lange Rede, gar kein Sinn - wer nicht die (evtl. sogar unnötigen?) Einschränkungen bei den Clients und Karten haben will kann mit obigen Defines die Limits auch tatsächlich ordentlich anheben. Aktuell läuft die Maschine mit VDR und Auswertung aller Radiostreams für 40 Kanäle absolut ungerührt. Beanspruchung durch den VDR ist im Vergleich zum Rest fast nicht messbar. Und im Vergleich zum Durchsatz einer aktuellen Grafikkarte auf dem PCI-E Bus ist der Durchsatz bei üblichen Programmen auch eher lächerlich. Vermutlich wurden die Einschränkungen mit Blick auf SOC's mit wenig Speicher und wenig Performance vorgenommen, für ausgewachsene PC's (ab Pentium III aufwärts und mit halbwegs vernünftigem Speicher) dürften sich die Patches aber nicht auswirken.

  • Hi,

    Schreib das doch ins Wiki, dort findet man es wieder.

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068 
    www.easyvdr.de