poor memory management severely impacts VLM's scalability
Version: 2.0.4 (I've tried two versions: a) apt-get from Ubuntu official repository; b) manually compiled with source from VideoLan's official website)
OS: Ubuntu Server 12.04.1 LTS amd64
Hardware: Deployed VLM on two machines: a) Dell PowerEdge R410 blade server (Intel Xeon E5620, 2.40GHz, 4 cores 16 threads, 4GB Mem, 100GB SSD); b) Asus EeePC 1015PW netbook (Intel Atom N570, 1.66GHz, 2 cores 4 threads, 2GB Mem, 100GB SSD)
Problem: VLM supports limited number of VoD streamings in parallel.
Details: I deployed VLM on aforementioned platforms. (server setup script attached) Input files were identical copies of a 15-minute-long mp4 video. A very powerful machine was employed to run N instances of VLC media player (2.0.4) as clients, each requiring a distinct video from server. The client was setup with flags ``--no-audio --no-video --no-spu''. Consecutive VLC instances on the client machine were started with a 0.1sec interval. The client machine was too powerful to be bottleneck. When N reached 250~280+ on blade server (or ~170 on netbook), many streamings started to terminate earlier than 15 minutes. This problem is repeatable and deterministic.
Diagnosis: VLM kept eating memory even when all videos start to transfer. When no enough memory on server was available, some plays on client terminate. I believe this reflects poor memory management of VLM because the server should consume constant memory after all videos are started theoretically. My experience with another VoD server implementation also suggests the number of concurrent streaming requests supported should be at least doubled on the same platform. I also enabled ``--enable-optimize-memory'' flag in my compiled version which didn't eliminate the problem.
P.S. I need the situation be improved ASAP and start to look into the code myself.