: sysctl to tune async and sync bdflush triggers
PATCH 1/1 : sysctl to tune async and sync bdflush triggers
Hi,
At the moment the synchronous flush trigger for bdflush is hardwired to be double the asynchronous one. This is a pain for people with lots of RAM.
This patch adds a new variable to the bdflush sysctl so both can be tuned independently. It also sets the defaults to 40% and 80% for async and sync flushing. This has worked fine on my test machines (128M RAM and 2G RAM).
btw: does anything still touch these dummy entries?
Cheers,
Anton
fs/buffer.c +7 -6
@@ -122,16 +122,17 @@when trying to refill buffers. */ int interval;/* jiffies delay between kupdate flushes */ int age_buffer;/* Time for normal buffer to age before we flush it */ -int dummy1;/* unused, was age_super */ +int nfract_sync;/* Percentage of buffer cache dirty to +activate bdflush synchronously */ int dummy2;/* unused */ int dummy3;/* unused */ } b_un;unsigned int data[N_PARAM ]; -} bdf_prm = {{40, 500, 64, 256, 5*HZ, 30*HZ, 5*HZ, 1884, 2}}; +} bdf_prm = {{40, 500, 64, 256, 5*HZ, 30*HZ, 80, 0, 0}};/* These are the min and max parameter values that we will allow to be assigned */ -int bdflush_min[N_PARAM ] = {0 ,10 ,5 ,25 ,0 ,1 *HZ ,1 *HZ ,1 ,1 }; -int bdflush_max[N_PARAM ] = {100 ,50000 ,20000 ,20000 ,600 *HZ ,6000 *HZ ,6000 *HZ ,2047 ,5 }; +int bdflush_min[N_PARAM ] = {0 ,10 ,5 ,25 ,0 ,1 *HZ ,0 ,0 ,0 }; +int bdflush_max[N_PARAM ] = {100 ,50000 ,20000 ,20000 ,600 *HZ ,6000 *HZ ,100 ,0 ,0 };/* * Rewrote the wait-routines to use the "new" wait-queue functionality,
@@ -1036,9 +1037,9 @@ dirty = size_buffers_type[BUF_DIRTY ] >>PAGE_SHIFT ; tot =nr_free_buffer_pages (); - dirty *=200 ; + dirty *=100 ; soft_dirty_limit = tot * bdf_prm.b_un.nfract; - hard_dirty_limit = soft_dirty_limit *2 ; + hard_dirty_limit = tot * bdf_prm.b_un.nfract_sync;/* First, check for the "real" dirty limit. */ if (dirty > soft_dirty_limit) {
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/