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

Marco Amadori amadorim at vdavda.com
Tue Mar 18 02:09:50 PDT 2008


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


More information about the live-devel mailing list