Raise default dirty data limits, per: http://marc.info/?l=linux-kernel&m=123707714231039&w=2 Also lower default swappiness from 60 to 40. --- work-2.6.29.4.orig/mm/page-writeback.c +++ work-2.6.29.4/mm/page-writeback.c @@ -66,7 +66,7 @@ static inline long sync_writeback_pages( /* * Start background writeback (via pdflush) at this percentage */ -int dirty_background_ratio = 5; +int dirty_background_ratio = 7; /* * dirty_background_bytes starts at 0 (disabled) so that it is a function of @@ -83,7 +83,7 @@ int vm_highmem_is_dirtyable; /* * The generator of dirty data starts writeback at this percentage */ -int vm_dirty_ratio = 10; +int vm_dirty_ratio = 15; /* * vm_dirty_bytes starts at 0 (disabled) so that it is a function of @@ -94,12 +94,12 @@ unsigned long vm_dirty_bytes; /* * The interval between `kupdate'-style writebacks, in jiffies */ -int dirty_writeback_interval = 5 * HZ; +int dirty_writeback_interval = 3 * HZ; /* * The longest number of jiffies for which data is allowed to remain dirty */ -int dirty_expire_interval = 30 * HZ; +int dirty_expire_interval = 10 * HZ; /* * Flag that makes the machine dump writes/reads and block dirtyings. --- work-2.6.29.4.orig/mm/vmscan.c +++ work-2.6.29.4/mm/vmscan.c @@ -118,7 +118,7 @@ struct scan_control { /* * From 0 .. 100. Higher means more swappy. */ -int vm_swappiness = 60; +int vm_swappiness = 40; long vm_total_pages; /* The total number of pages which the VM controls */ static LIST_HEAD(shrinker_list);