Linux bind / dhcp iowait status

David W. Hankins David_Hankins at isc.org
Thu Mar 16 21:30:03 UTC 2006


On Wed, Mar 15, 2006 at 09:42:17AM -0500, Tom Greaser wrote:
> Its an Redhat AS 4 update 3 box with mirrored scsi Ultra 320 drives

Most Linux syslog implementations fsync() after every log message was
written before moving on to process the next one.

I've seen this cause problems because eventually the syslog buffers can
fill, and the applications that are trying to log wind up sleeping when
they try to call syslog().

We fsync() before a lease is offered to a client.  We do this because
of the way we interpret RFC2131 (some other implementations don't).
BIND also fsync()'s journal files before it responds to a DNS update
request.  For very much the same reason...don't say "Yes" unless you
would give the same answer after a reboot.

If syslog is also calling fsync(), it will do it multiple times
inbetween both DHCP's and BIND's.  It multiplies your overhead.


At any rate, have a look at your syslog.conf, and if you are funneling
BIND and DHCP traffic through it, try looking at your syslog's manpage
('syslog.conf' versions will differ from syslog-ng versions) to see
what it's doing.

In the syslog.conf case, you might want to configure a - before the
filename (or whatever your manpage says):

       You  may  prefix  each  entry with the minus ``-'' sign to
       omit syncing the file after every logging.  Note that  you
       might  lose information if the system crashes right behind
       a write attempt.  Nevertheless this might  give  you  back
       some  performance, especially if you run programs that use
       logging in a very verbose manner.

I'm not familiar enough with syslog-ng offhand.

-- 
David W. Hankins		"If you don't do it right the first time,
Software Engineer			you'll just have to do it again."
Internet Systems Consortium, Inc.		-- Jack T. Hankins


More information about the dhcp-users mailing list