Messages in this thread | | | Date | Sat, 20 Jun 1998 14:37:36 -0700 (PDT) | From | Dean Gaudet <> | Subject | Re: Thread implementations... |
| |
On Sat, 20 Jun 1998, Larry McVoy wrote:
> : Even with the debugging problems solved, linuxthreads are heavier > : than solaris pthreads or NT fibers. > > So how about quantifying that a bit and show us some numbers and how they > affect things in real life?
As a matter of fact I can quantify this somewhat.
NSPR provides two modes of operation on linux -- one uses pthreads, the other users a portable userland threads library (the standard setjmp/longjmp deal although it uses sigsetjmp/siglongjmp, and needs a little more optimization). I've ported apache 1.3 to NSPR as an experiment for future versions of apache. I built the non-debugging versions of the NSPR library, linked my apache-nspr code against it, and set up a rather crude benchmark.
% dd if=/dev/zero of=htdocs/6k bs=1024 count=6 (the squid folks used to tell me 6k was the average object size on the net, maybe the number is different these days)
% zb 127.0.0.1 /6k -p 8080 -c 10 -t 10 -k (this is zeusbench asking for the 6k document, 10 simultaneous clients (it uses select to multiplex), run for 10 seconds, use keep-alive persistent http connections)
With pthreads it achieves 811 req/s. With user threads it achieves 1024.40 req/s.
The machine is a single cpu ppro 200 with 128Mb of RAM running 2.1.104.
Caveats: While NSPR has been designed extremely well, and the interfaces don't show any immediate problems with doing underlying optimizations, it's certainly not top speed yet. This applies in both cases however. NSPR has a hybrid user/system model that lives on top of pthreads, I haven't tried it yet (it's not ported to linux according to the docs).
I can do comparisons with the process-model based apache, and I used to have a native pthreads port of apache... but the latter is out of date now because I switched my efforts to NSPR in order to have greater portability (including win32).
Larry does lmbench have a threads component that can benchmark different threads libraries easily? I have to admit I'm not terribly familiar with lmbench... but if you've got some benchmarks you'd like me to run I can try them. Or you can try them -- NSPR comes with mozilla, after downloading the tarball, "cd mozilla/nsprpub", then do "make BUILD_OPT=1" to get the user-threads version, and do "make BUILD_OPT=1 USE_PTHREADS=1" to get the pthreads version.
Dean
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |