Subject: understanding NMBCLUSTERS
To: None <current-users@netbsd.org>
From: Matt Doughty <mdoughty@japan.ea.com>
List: current-users
Date: 10/24/2002 14:26:09
I have for some time run a realatively high traffic webserver (30GB+ daily)
and have been bitten several times by the exhausted mclpool problem. I have
followed the prescribed treatment of increasing the NMBCLUSTERS option in the
kernel.  I had achieved relative trouble free operation with NMBCLUSTERS=8192
on 1.5.2, but for a variety of reasons I moved my boxes to current recently.
I have since then had a recurence of the mclpool buffer issues.  A week ago
I jumped NMBCLUSTERS=16384 after having the webserver hammered into the 
ground.  Last night I was forced to jump to NMBCLUSTERS=32768 after having
so much traffic that mclpools were exhausted again.  My question at this
point is two fold:

1. Does this seem normal? What kind of traffic pattern would exhaust 
a server with nmbclusters set to 16384? Should I be looking for other
contributing factors or is this just reality for a web server push
30GB of traffic a day?

2. When the pool gets exhausted It ends up taking hours to get into
the box to stop the webserver, and change settings to deal with the
problem. Is there anyway to monitor mcl pool usage so I can deal with
the problem proactively.  I know I can see some statistics with vmstat -m,
but I can't tell how close I am to the limit, this maybe due to poor
undertstanding of the output however.  Ideally, there would be some way
to see the pool statics from a cron job so I can scale back the
web server appropriately.  Alternately, is there a way to reserve some
of the pool for specific services, say ssh, so that I can atleast log
into the server and fix things by hand?

I would appreciate any help I can get on this. 

--Matt