[1/5] from: maarten:vrijheid at: 8-Mar-2004 21:26
Async http 1.0 file server for progressive downloads of divx, mp3, MPEG-2: http://www.surfnetters.nl/maarten/snuffstream.zip As little as 259 kB it gives little load on your system when sending out multiple divx's and mp3's. Linux version will follow. From the README: What is snuffstream? Snuffstream is a simple http 1.0 server that supports GET requests. Its main purpose is serving large files, very very fast with little impact on your system. I wrote it cuz I wanted to view 6mbit MPEG-2 (DVD) easily, but it works for all kinds of files. You can adapt config.r for your local "media" base directory and add different mime types if you like. You can also change the default port on which it listens in config.r, and the default mime-type. It should also work for serving static html files and all sorts of other content. I tested it with Quickime 6.5, WM 9, VLC 0.7.0 (www.videolan.org, *really* th ebest player) and Mozilla and IE. Technically speaking it is not streaming but progressive download what it does as it uses HTTP 1.0. Depending on the player/filetype you may get a progressive download or a normal download. VLC seems to do progressive very good. With QT and WM your mileage may vary. Start watching/listening/... today! --Maarten
[2/5] from: andreas::bolka::gmx::net at: 10-Mar-2004 13:39
Monday, March 8, 2004, 9:26:57 PM, Maarten wrote:
> Async http 1.0 file server for progressive downloads of divx, mp3, > MPEG-2: http://www.surfnetters.nl/maarten/snuffstream.zip > As little as 259 kB it gives little load on your system when sending > out multiple divx's and mp3's.
Wow! I must confess, I'm impressed! To summarize my first experiences: Snuffstream performs reasonably good, in fact it performs so good, that measuring it against Apache made sense. Considering Snuffstream's size, it's memory and CPU usage while running I'm inclined to say that is a very interesting product, although I'm (obviously) not yet able to tell about long-time performance or various issues that may arise in "real world" deployment. From what I can tell at the moment, I consider Snuffstream a viable HTTP server for static file serving purposes, especially when a personal server (e.g. running on your "desktop" machine) is required. It's a serious competitor to established products in this sector, especially when we consider Snuffstream's "just drop it somewhere" installation. Further, due to it's size and reasonable performance, embedding Snuffstream in custom applications that require static HTTP file serving seems to be an obvious fit. Finally, Snuffstream seems to be _very_ suited for it's marketed purpose, namely as VLC server. Once I have more data on long-time stability, I'll report again :) Finally, some test results that lead me to above conclusions: 1) Downloading a 481 MB file first with wget and then with Firefox. Snuffstream: - wget: download at 5.38 MB/s - Firefox: download at roughly 4.0 MB/s - Both: the process's CPU usage stays between 2% to 10% - Both: process size keeps constantly at around 5 MB Apache: - wget: download at 7.58 MB/s - Firefox: download at roughly 3.9 MB/s - Both: CPU usage at 0% - Both: process size total (2 processes) at around 6.5 MB 2) Simulated load requesting a 9 byte .txt file. Snuffstream's config.r has been modified to serve *.txt as text/plain. 2.1) 1 worker, 100 sequential requests: - snu: 150 req/sec, 6.8 ms avg time per req - apa: 400 req/sec, 2.6 ms avg time per req 2.2) 2 parallel workers, 100 sequential requests each: - snu: 150 req/sec, 13.3 ms - apa: 400 req/sec, 4.9 ms 2.3) 10 parallel workers, 10 sequential requests each: - snu: 150 req/sec, 67.0 ms - apa: 380 req/sec, 25.0 ms 2.4) 50 parallel workers, 2 sequential requests each: - snu: 100 req/sec, 500.7 ms - apa: 200 req/sec, 250.3 ms 3) Simulated load requesting a 3 KByte .gif file. Snuffstream and Apache are both configured to serve this as application/octet-stream. 3.1) 1 worker, 100 sequential requests: - snu: 150 req/sec - apa: 400 req/sec 3.2) 10 parallel workers, 10 sequential requests each: - snu: 144 req/sec - apa: 380 req/sec My test setup: A P4-M 1.6, 512 MB RAM, 7200 RPM IDE HDD, WinXP SP1. Snuffstream version as avail from Maarten's site, Apache 2.0.48, downloads using GNU Wget 1.8.2 and Mozilla Firefox 0.8. Load tests using a slightly customized version of ApacheBench Version 2.0.40-dev (Revision: 1.120, apache-2.0). Disclaimer: These tests make no scientific claim. Test setup information is provided for informal purposes. -- Best regards, Andreas
[3/5] from: maarten:vrijheid at: 10-Mar-2004 14:08
Wow!! Thanks for the great tests. Now what I will improve is caching. Presently there is no in-memory cache, that is why the numbers are pretty constant, I guess. I'll try to fiddle with it some more. With large files it surely works nicely for a "media" http server. You know that I have been wanting to integrate this with presence (IM) and I hope to base that on MSN, so you can watch/listen from your buddylist (only). Given these figures it is reasonable to expect this to work on an average system. --Maarten Andreas Bolka wrote:
[4/5] from: antonr:iinet:au at: 11-Mar-2004 0:30
I appreciate the time taken to make these tests Andreas, and Maarten, well, you're just too good to be true. Anton.
[5/5] from: greggirwin:mindspring at: 10-Mar-2004 12:52
AR> I appreciate the time taken to make these AR> tests Andreas, and Maarten, well, you're just AR> too good to be true. I'd like to second and third that! Very much appreciated! -- Gregg