450 streaming clients, 3 machines and 3 Gb NICs

So I built this thing called run.pl to run N simultaneous instances of a command. To use it, you type

run.pl N the_command_you_want_to_run_N_times_simultaneously

So if I want to run 10 uname’s on my laptop …

landman@lightning:~$ ./run.pl 10 uname
O[1]: Linux
O[2]: Linux
O[3]: Linux
O[4]: Linux
O[5]: Linux
O[6]: Linux
O[7]: Linux
O[8]: Linux
O[9]: Linux
O[10]: Linux

Cool huh …
Ok. Now lets see how many mplayers will swamp the NIC and CPU. Note that I am convinced (before starting) that I might be lucky to get 10-20 players going simultaneously before running out of CPU power.
Nuh uh (slang for “no”).
On cuda1, our CUDA development box, with 16 GB ram and 4x Opteron 2222 processors, we were able to sustain 200 simultaneous mplayers going out over the network and playing “The Brain That Wouldn’t Die!” 2+GB MPEG movie, at 740×480, 29.9 fps with stereo audio.
So I loaded up a number of machines with this. Most I could get going initially were 450 simultaneous mplayers on 3 different machines. A little more effort and I was able to hit 600, but I started getting framing errors in the mplayers. This was amusing.
But during this time, with 450 simultaneous streams of 4 different movies, each over 2GB in size, our little JackRabbit (running the 32 bit version of windows 2003 server enterprise edition), was using about 1/5 of its native network capacity.
Maybe we will try this with Windows 2008 server at some point. Nice to know that at full tilt, we should be able to source more than 3000 simultaneous VOD streams at 740×480 at 30 fps or so with stereo sound.