[PATCH] VM dirty page balancing
authorAndrew Morton <akpm@zip.com.au>
Thu, 2 May 2002 09:04:12 +0000 (02:04 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Thu, 2 May 2002 09:04:12 +0000 (02:04 -0700)
commit9ae30597b1a4b2ef9b79ccf891d1a62814090962
tree75cfc27e2c1d871c5da47ba97c19324a39f4e882
parentafae6f7c365789d7751133f09324aa00bd5b595d
[PATCH] VM dirty page balancing

- 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.
fs/ext2/inode.c
fs/proc/proc_misc.c
include/linux/page-flags.h
mm/filemap.c
mm/page-writeback.c
mm/page_alloc.c