• Andrew Morton's avatar
    [PATCH] VM dirty page balancing · 9ae30597
    Andrew Morton authored
    - The balance_dirty_pages() logic is simply wrong.  It goes:
    
    	if (value > threshold)
    		go_and_write(value - threshold);
    
      which is just fine for a single process writing data.  But
      for many processes, they *all* go and bring things back into
      balance, and too much data gets written out.
    
    - The
    
    	go_and_write(this much)
    
      logic is inoperative, because I turned off the ->writeback_mapping()
      function in ext2.  So a call to writeback_unlocked_inodes(this_much)
      doesn't actually decrement and test *this_much.  It will walk every
      inode, all the time.  Silly.
    
    So quickly fixing the above things, the amount of dirty+writeback
    memory in the machine nicely stabilises at 500 megabytes across
    the run.
    9ae30597
page-writeback.c 14.9 KB