Search squid archive

Re: Is it true that even threaded Squid can't benefit from SMP systems?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A couple lessons learned from my end, both in my own experience and picked up from various squid-users threads...

I've said this before, but never underestimate the value of kernel page cache. If you need to scale the box, put in as much RAM as you can afford.

Also, as has been said before, squid + RAID = PAIN (particularly RAID5). Performance will be much better if you can set up multiple physical disks under separate cache_dirs, thus allowing async reads to take place in parallel. If disk redundancy is a must, stick with RAID 1 pairs (multiple RAID 1 pairs work well, particularly with a hardware controller).

If your traffic load is mostly small ( ~ < 1 MB ) objects, consider utilizing COSS storage as an alternative to AUFS; this will give you much more bang for the buck if you're serving large numbers of small objects, since it eliminates the overhead of the millions of of open()/ close() kernel system calls you'd see with AUFS.

If you find yourself hitting the single-core CPU bottleneck due to squid's main loop, it is possible to run multiple squids on a box, although each one requires its own cache storage. If you need to move to this, consider configuring one of more "front-end" squids that refer queries to multiple "back-end" parent caches via CARP to eliminate duplicating object storage.

HTH,

-Chris

On May 19, 2009, at 8:47 AM, rihad wrote:

Jeff Pang wrote:
rihad:

But what about Posix threads & Async IO? (./configure --enable- async-io=2 ...)? Don't they take advantage of multiple CPUs/cores/ cache_dirs?

Yes Async-IO benefits from multi-cpu on disk IO, if you're using it.
Squid's main daemon is a single process, that benefits nothing from SMP system.

Since disk I/O is often the bottleneck (given enough RAM), it can be said that, thanks to async I/O, Squid mostly scales well to the number of CPUs, issuing several disk I/O operations simultaneously & asynchronously, so it can proceed to execute the main loop without waiting for I/O completion? In that case that part of the FAQ needs updating, I guess.



[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux