On Mon, Mar 02, 2009 at 11:26:24PM +0100, Ondřej Caletka wrote:
Frederik Kriewitz napsal(a):
On Mon, Mar 2, 2009 at 5:14 PM, Ondřej Caletka <O.Caletka@sh.cvut.cz> wrote:
You can try rtp2httpd, simple program of mine for just this purpose. http://shell.sh.cvut.cz/~oskar/blog/index.php?entry=entry090107-213013
Thank you. Too late for me now, I already hacked something together myself.
I took a quick look at I and noticed that you're forking a new process for each connection. Did you ever test it with a lot of clients?
No, I did not test more than cca. 6 clients. In my setup, the limiting factor is Fast Ethernet :), CPU usage is very low.
Typically all threaded/forked models fall apart because the working set gets bigger than the caches. Just think about 600 stacks, buffers, fd tables etc So a single threaded (per cpu), non blocking, event driven approach most of the time scales much better. My guess is that with getstream on a half way modern cpu the TS packet never actually gets read twice from memory - It gets received by DMA from the DVB card, gets copied to the userspace buffer which also puts it into the cache. And before it gets evicted from the cache the TS packet will be written to the kernel buffers which will on any decent hardware be sent by DMA to the networking card. Flo -- Florian Lohoff flo@rfc822.org +49-171-2280134 Those who would give up a little freedom to get a little security shall soon have neither - Benjamin Franklin