Re: [squid-users] Squid and OS tuning

From: K K <kkadow@dont-contact.us>
Date: Wed, 4 Apr 2007 15:03:22 -0500

On 4/4/07, Vadim Pushkin <wiskbroom@hotmail.com> wrote:
> Does anyone have any OS tips for Sparc/Solaris? (preferably 8).

Sell the Sparc, buy two Sun-badged AMD64 machines to run FreeBSD on?

Until recently I ran a number of large caches on Solaris 8/Sparc,
serving as parent caches for child caches used by thousands of
clients. Here's my settings:

First thing, ignore the tuning suggestions for SunOS 2.6, few 2.6
options apply to Solaris 8, and even fewer to Solaris 10 (Speaking of
which, if your hardware supports 10, upgrading may give performance
improvements).

configure --enable-async-io --enable-cache-digests
--enable-underscores --enable-pthreads --enable-storeio=ufs,aufs
--enable-removal-policies=lru,heap

First, I disable 'nscd' in Solaris startup, instead I actually ran a
local 'dnscache' resolver on each box, so squid.conf had
"dns_nameservers 127.0.0.1", and also set fqdncache_size relatively
high.

In the squid startup script, use 'ndd' to force network parameters:
        /usr/sbin/ndd -set /dev/tcp tcp_ip_abort_cinterval 29000
        /usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 45000
        /usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 32767
        /usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 32767
        /usr/sbin/ndd -set /dev/udp udp_xmit_hiwat 16384
        /usr/sbin/ndd -set /dev/udp udp_recv_hiwat 16384
        /usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 32772

The cache_dir is 'aufs', on a drive dedicated to the squid cache, and
formatted specially for squid, with the fragsize set equal to the
blocksize.

While counter intuitive, it seems to help performance if you set
cache_mem and maximum_object_size_in_memory both to relatively low
values (a good start would be 30% of total RAM, and 64K,
respectively), and trust the Solaris memory management to keep popular
objects in memory.

Lastly, I rebuilt squid using the custom logging patch, and disabled
local cache_access and cache_store logging, instead sending access
events to a remote loghost via syslog. This made it easier to do
central accounting for a pool of caches, and also gave a small
performance gain, as there is less overhead in emitting a UDP packet
than in writing to disk.

Kevin "Not kidding about selling the Sparc" Kadow
Received on Wed Apr 04 2007 - 14:03:50 MDT

This archive was generated by hypermail pre-2.1.9 : Tue May 01 2007 - 12:00:01 MDT