[comp.unix.i386] Buffer flushing

davidsen@sixhub.UUCP (Wm E. Davidsen Jr) (05/04/90)

  Most flavors of SysV and some BSD systems have a process which does a
sync from time to time, such as "update." When the kernel is configured
to have a large number of buffers the result is a slowdown in
performance for disk intensive tasks.

  Many versions provide a tuning parameter which allows this to happen
more or less often, but it still happens all at once. What I would like
is a way to force or at least encourage the system to write dirty
buffers out as a idle task, so that if the CPU is available and there
are dirty buffers they are queued, but only at some faitly slow rate,
perhaps 3-5% of the buffers per second.

  Obviously the best place for this is in the kernel code, but realizing
that it isn't going to go there for a number of systems, is there
another way to get this effect? I have tried having a very low priority
process which slowly reads through a very large file. This helps on some
systems, but on others the clean (read) beffers are reused rather than
write out a dirty buffer.

  I also tried a process (low priority again) which does a sync every
three seconds. This works somewhat better, in that I trade a big
slowdown one a minute or so for a small slowdown all the time. Still not
satisfactory.

  Okay, now how about suggestions.
-- 
bill davidsen - davidsen@sixhub.uucp (uunet!crdgw1!sixhub!davidsen)
    sysop *IX BBS and Public Access UNIX
    moderator of comp.binaries.ibm.pc and 80386 mailing list
"Stupidity, like virtue, is its own reward" -me