[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