linux/mm
Andrew Morton 210fe53030 [PATCH] vmscan: balancing fix
Revert a patch which went into 2.6.8-rc1.  The changelog for that patch was:

  The shrink_zone() logic can, under some circumstances, cause far too many
  pages to be reclaimed.  Say, we're scanning at high priority and suddenly
  hit a large number of reclaimable pages on the LRU.

  Change things so we bale out when SWAP_CLUSTER_MAX pages have been
  reclaimed.

Problem is, this change caused significant imbalance in inter-zone scan
balancing by truncating scans of larger zones.

Suppose, for example, ZONE_HIGHMEM is 10x the size of ZONE_NORMAL.  The zone
balancing algorithm would require that if we're scanning 100 pages of
ZONE_HIGHMEM, we should scan 10 pages of ZONE_NORMAL.  But this logic will
cause the scanning of ZONE_HIGHMEM to bale out after only 32 pages are
reclaimed.  Thus effectively causing smaller zones to be scanned relatively
harder than large ones.

Now I need to remember what the workload was which caused me to write this
patch originally, then fix it up in a different way...

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-06 08:33:27 -08:00
..
bootmem.c [PATCH] FRV: Clean up bootmem allocator's page freeing algorithm 2006-01-06 08:33:26 -08:00
fadvise.c
filemap_xip.c
filemap.c [PATCH] find_lock_page(): call __lock_page() directly. 2006-01-06 08:33:26 -08:00
filemap.h
fremap.c VM: add common helper function to create the page tables 2005-11-29 14:03:14 -08:00
highmem.c
hugetlb.c [PATCH] hugepages: fold find_or_alloc_pages into huge_no_page() 2006-01-06 08:33:23 -08:00
internal.h [PATCH] FRV: Clean up bootmem allocator's page freeing algorithm 2006-01-06 08:33:26 -08:00
Kconfig [PATCH] mm: update split ptlock Kconfig 2005-11-23 16:08:38 -08:00
madvise.c [PATCH] madvise(MADV_REMOVE): remove pages from tmpfs shm backing store 2006-01-06 08:33:22 -08:00
Makefile
memory_hotplug.c [PATCH] memhotplug: __add_section remove unused pgdat definition 2006-01-06 08:33:21 -08:00
memory.c [PATCH] mm: pfault optimisation 2006-01-06 08:33:27 -08:00
mempolicy.c [PATCH] Remove old node based policy interface from mempolicy.c 2006-01-06 08:33:23 -08:00
mempool.c
mincore.c
mlock.c
mmap.c Make sure we copy pages inserted with "vm_insert_page()" on fork 2005-12-16 10:21:23 -08:00
mprotect.c [PATCH] unpaged: private write VM_RESERVED 2005-11-22 09:13:42 -08:00
mremap.c Make sure we copy pages inserted with "vm_insert_page()" on fork 2005-12-16 10:21:23 -08:00
msync.c mm: re-architect the VM_UNPAGED logic 2005-11-28 14:34:23 -08:00
nommu.c mm: re-architect the VM_UNPAGED logic 2005-11-28 14:34:23 -08:00
oom_kill.c
page_alloc.c [PATCH] mm: bad_page optimisation 2006-01-06 08:33:26 -08:00
page_io.c
page-writeback.c [PATCH] re-export clear_page_dirty_for_io() 2005-11-18 07:49:45 -08:00
pdflush.c
prio_tree.c
readahead.c [PATCH] add AOP_TRUNCATED_PAGE, prepend AOP_ to WRITEPAGE_ACTIVATE 2006-01-03 11:45:42 -08:00
rmap.c [PATCH] mm: rmap optimisation 2006-01-06 08:33:27 -08:00
shmem.c [PATCH] madvise(MADV_REMOVE): remove pages from tmpfs shm backing store 2006-01-06 08:33:22 -08:00
slab.c [PATCH] slab: remove alloc_pages() calls 2005-11-13 18:14:12 -08:00
sparse.c
swap_state.c [PATCH] mm: free_pages_and_swap_cache opt 2006-01-06 08:33:24 -08:00
swap.c [PATCH] unpaged: unifdefed PageCompound 2005-11-22 09:13:42 -08:00
swapfile.c [PATCH] mm/swapfile.c: unexport total_swap_pages 2005-11-07 07:54:07 -08:00
thrash.c [PATCH] temporarily disable swap token on memory pressure 2005-11-28 14:42:25 -08:00
tiny-shmem.c
truncate.c [PATCH] reiser4: vfs: add truncate_inode_pages_range() 2006-01-06 08:33:22 -08:00
vmalloc.c [PATCH] kernel-doc: fix warnings in vmalloc.c 2005-11-07 07:53:56 -08:00
vmscan.c [PATCH] vmscan: balancing fix 2006-01-06 08:33:27 -08:00