The
bdflush Kernel Daemon
The bdflush kernel daemon is a simple kernel
daemon that provides a dynamic response to the system having too many dirty
buffers; buffers that contain data that must be written out to disk at some
time. It is started as a kernel thread at system startup time and, rather
confusingly, it calls itself ``kflushd'' and that is the name that you will see
if you use the ps
command to show the processes in the system. Mostly this daemon sleeps waiting
for the number of dirty buffers in the system to grow too large. As buffers are
allocated and discarded the number of dirty buffers in the system is checked.
If there are too many as a percentage of the total number of buffers in the
system then bdflush
is woken up. The default threshold is 60% but, if the system is desperate for
buffers, bdflush
will be woken up anyway. This value can be seen and changed using the update command:
# update -d
bdflush version 1.4
0: 60 Max fraction of LRU list to examine for
dirty blocks
1: 500 Max number of dirty blocks to write each
time bdflush activated
2: 64 Num of clean buffers to be loaded onto
free list by refill_freelist
3: 256 Dirty block threshold for activating
bdflush in refill_freelist
4: 15 Percentage of cache to scan for free
clusters
5: 3000 Time for data buffers to age before
flushing
6: 500 Time for non-data (dir, bitmap, etc)
buffers to age before flushing
7: 1884 Time buffer cache load average constant
8: 2 LAV ratio (used to determine threshold
for buffer fratricide).
All of the dirty buffers are
linked into the BUF_DIRTY
LRU list whenever they are made dirty by having data written to them and bdflush tries to write a reasonable
number of them out to their owning disks. Again this number can be seen and
controlled by the update command and the default is 500 (see above).
No comments:
Post a Comment