[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CVS Update@mea.: zmailer
On Wed, May 10, 2000 at 01:21:26PM +0400, Eugene Crosser wrote:
> > - ZENV var SCHEDULERDIRHASH drives the degree of
> > hash subdirs at the scheduler, and tells the
> > router to send tasks directory to those subdirs.
> Good! Maybe that'd widen a bit the bottleneck that currently the
> scheduler disk queue is...
That thing is one of tricks intended to solve overload problems
we have at Sonera's most active smtp relay server.
Possibly we get rid of 2 rename()s, and replace 10 link()/unlink()s
with 4 rename()s. I think it drops message lifetime directory ops
down from 19 (+ta usage) down to 11 (+ta usage).
I count rename() as 2 ops, open() and unlink() are one, each.
> [curently our mail system is on two quite powerful Suns: dual 440 MHz
> with 512 Mb RAM. Typical load average is about 0.5 but typical busy
> level on the filesystem carrying the spool/postoffice is 50-60%.
> All writes, nearly zero reads. The filesystem is on disksuite-mirrored
> ultrawide 10000rpm disks on different SCSI controllers.]
Add there transaction log devices, and you have our setup (although
our CPUs are just 300 MHz ones.)
In couple days time we change the postoffice filesystem to VeritasFS (vxfs),
which does have better directory processing - we think.
Another issue is that scheduler input pre-scanning assimilates things
quickly enough into the pre-scan queue, but then syncweb() is called
way too infrequently to get things into the processing proper.
(But then my new code may be calling it *too* frequently..)
I need yet to write a tool to create the hash directories for the
postoffice subdirs. There are tricks like using as large a block-
size as possible at the filesystem, and then pre-contructing directory
size to be in order of 60 kB (which may depend on operating system
and filesystem.. sometimes too large hurts even when it isn't
fragmented all over the place..)
("pre-allocate directory" meaning what long time ago was done at
filesystem creation with an external script -- now mkfs tends to
do it internally.)
/Matti Aarnio <email@example.com>