Thanks Pauli for sharing this information.

i have aslo tried same kind of setup on Redhat

i am interested if any have run benchmarking on
(linux 2.4+squid-2.5) and (linux 2.6+epoll squid-3)

Thanks and Regards



--- Pauli Borodulin <[EMAIL PROTECTED]> wrote:
> Hello,
> 
> I tried the latest Squid3 today on Debian Sarge
> (testing) with Linux 
> 2.6.3, NPTL and epoll and I was quite satisfied with
> it after a small 
> test run. For everyone else interested trying it, I
> wrote a small 
> howto-stylish description how to do it quite easily.
> 
> If you don't know what NPTL and epoll are and why
> Linux 2.6 is (afaik) 
> better for Squid3 than 2.4, here are short
> explanations:
> 
> NPTL (The Native POSIX Thread Library for Linux) is
> a new thread library 
> for Linux which is going to replace the old
> LinuxThreads-library 
> distributed with glibc by many Linux-distributions.
> Old implementation 
> is based on the principles outlined by the kernel
> developers at the time 
> the code was written, 1996. Since that, many new
> kernel extensions have 
> been introduced to kernel which makes it possible to
> create a new thread 
> library far better than the old LinuxThreads in
> scalability and 
> performance. For example Redhat has already included
> NPTL in their Red 
> Hat Linux 9 and Enterprise-editions and others will
> probably follow. 
> Squid uses threads for example with aufs. For more
> information about 
> NPTL and it's design, read
> http://people.redhat.com/drepper/nptl-design.pdf
> 
> Epoll is a replacement for poll which is used to
> delivery network events 
> from kernel mode to user mode (here, Squid3).
> Because Squid3 heavily 
> depends on network I/O, efficient delivery of events
> is vital. For more 
> information about epoll and it's efficiency (for
> example compared to 
> traditional poll), check 
>
http://www.xmailserver.org/linux-patches/nio-improve.html
> 
> Linux 2.6 kernel introduced (for example) a new mmap
> syscall which is 
> O(1) compared to the old implementation of O(n). For
> cache/proxy servers 
> it is important to map files into memory instead of
> having a buffer and 
> reading the file contents into the buffer. Mapping
> the file into memory 
> directly leaves more free memory for operating
> system to do I/O 
> buffering. This is what the mmap syscall is used
> for. What does O(1) and 
> O(n) mean, then? O(1) (ordo one) means that the
> operation (execution of 
> mmap syscall) is always executed in a fixed time --
> number of mapped 
> pages doesn't matter. O(n) (ordo n) means that the
> number of pages has 
> an effect on the execution time (here, linear) --
> the more pages, the 
> longer it takes. There's a page on the WWW that has
> some benchmarks 
> about BSD and Linux but also  Linux 2.4 and 2.6.
> This page is located at 
> http://bulk.fefe.de/scalability
> 
> After this short (hopefully) explanatory part, I
> assume that you have at 
> least base install of Sarge running and have some
> knowledge on using apt 
> and compiling stuff (like Linux kernel). Also
> remember that if you use 
> epoll, you can't use delay pools or deferred reads
> (there is a notice 
> about this in comm_epoll.cc).
> 
> 1. Install all Debian packages needed to compile 2.6
> kernel and Squid3 
> (you will need at least libc6-dev, bin86, binutils,
> make, gcc and g++).
> 
> 2. Install Debian package "module-init-tools" which
> is needed for 
> loading modules of 2.6 kernel. Sarge's scripts are
> smart enough to check 
> which kernel version (2.4 or 2.6) you're running and
> uses the correct 
> version of these tools, so you don't have to worry
> about this if you 
> want to revert back to 2.4 kernel later.
> 
> 3. Get the source code for 2.6 (for example from
> www.kernel.org's 
> mirror), compile and reboot with it. This is needed
> for NPTL and epoll 
> to work (it will work with 2.4 too, but it will need
> some serious patching).
> 
> 4. Install Debian package "libc6-i686". This is an
> i686 optimized 
> version of libc6 (so you will need a i686 class CPU,
> ie. "uname -m" 
> should print "i686"). What's more important, it
> includes NPTL instead of 
> LinuxThreads.
> 
> 5. Extract Squid3 sources and execute configure.
> Remember to include 
> "--enable-epoll --with-pthreads" on your configure
> line among other 
> parameters you want.
> 
> 6. Remove all occurences of "-lepoll" from Squid3's
> src/Makefile. This 
> has to be done because Sarge's libc6-dev already
> contains epoll support 
> and separate epoll library is not needed (Squid3
> will probably figure 
> this out itself in future). I counted four
> occurences. Then compile 
> Squid with "make" and install it with "make
> install".
> 
> 7. You should now have Squid3 compiled with NPTL and
> epoll. Go have fun 
> with it.
> 
> And always the so needed disclaimer: I do not take
> any responsibility if 
> something goes wrong and so on. Squid3 is not yet
> production ready so do 
> not expect too much.
> 
> Comments and corrections on the list, please. :-)
> 
> 
> Regards,
> -- 
> .------------------------------------------ -
> | Pauli Borodulin       | snail.                 .
> | email. [EMAIL PROTECTED] | Haukkam�enkatu 1 F 69  |
> [EMAIL PROTECTED]
> | gsm. +358 44 5555381  | 33560 Tampere, Finland |
> http://boro.fixel.org
>
'------------------------------------------------------------------
> -- -


__________________________________
Do you Yahoo!?
Get better spam protection with Yahoo! Mail.
http://antispam.yahoo.com/tools

Reply via email to