[Live-devel] live555MediaServer performance: 95 stream max per process + dumb test suite

Glen Gray slaine at slaine.org
Wed Mar 19 15:44:10 PDT 2008


Hey Marco,

Did you make any progress diagnosing this problem ?

--
Glen Gray
slaine at slaine.org




On 18 Mar 2008, at 09:09, Marco Amadori wrote:
> Il Monday 17 March 2008 23:11:52 Ross Finlayson ha scritto:
>>> So it seems to be a strange threading or concurrency problem
>>
>> Unlikely, because the LIVE555 code is single-threaded.
>
> Do you think it could be easely extended to be multithreaded?
>
>> You're clearly running into a resource limit; the question now is:
>> Which resource?
>
> Nice question. I intially thought that my performance issue was a  
> FAQ :-(
>
>> Because your 95-stream limit seems to be happening
>> per process (rather than machine-wide), the first thing I would look
>> at is increasing the maximum number of open files (sockets) per
>> process.
>
> No, 95-96 it is not a limit like "I cannot accept other clients" but  
> just a
> visual quality limit, I could reach like 300 streams before hitting  
> disk IO
> 100%. Anyway, "ulimit -a" reports 1024 open files max as default on  
> debian.
>
>> Linux has a way to increase this (I'm not sure of the
>> details, though).
>
> Yes, ulimit can increase that, but I reported no differences  
> increasing max
> open files.
>
>> Of course, down the road you need to also consider running into
>> limits of network bandwidth and/or file system bandwidth.
>
> Bandwith seems to me to not be not really an issue, because on that  
> machine I
> have 3 bonded gibabit interfaces used for like 6% each (at 95  
> streams).
>
> I will investigate filesystem bandwitdth but I have reported same  
> limits
> between ext3, ext3 with largefile4 and xfs (ranging from 3 sas 10k  
> to 6 sas
> 15k).
>
> So I'm little clueless, anyone did similar tests* before?
>
> * My test system is like that, you need to generate a list of movies
> streamables by live555MediaServer like the one below and invoke  
> "test_rtsp.sh
> $filelist $url $baseport", you could then add streams until a client  
> starts
> to lose frames/packets:
>
> $ filelist=/srv/movies/list
> $ url=rtsp://10.0.0.10:8554
> $ baseport=1500
>
> $ cat $filelist
> b00560.mpg.ts
> b00635.mpg.ts
> b00711.mpg.ts
> b00729.mpg.ts
> b00752.mpg.ts
> b00753.mpg.ts
> b00759.mpg.ts
> b00760.mpg.ts
> b00762.mpg.ts
> b00798.mpg.ts
>
> $ cat test_rtsp.sh
> #!/bin/sh
>
> MOVIES=$1
> URL=$2
> BASEPORT=$3
>
> i=0
>
> for movie in `cat $MOVIES` ; do
>        sleep 3
>        PORT=$(( $BASEPORT + $i ))
>        #echo $i: openRTSP -r -p $PORT $URL/$movie
>        echo $i: openRTSP -p $PORT $URL/$movie
>        openRTSP -p $PORT $URL/$movie > /dev/null 2>&1 &
>        i=$(( i+2 ))
> done
>
> -- 
> ESC:wq
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live555.com
> http://lists.live555.com/mailman/listinfo/live-devel



More information about the live-devel mailing list