RHEL3/Changelog.rmap History
<<
>>
Prefs
   1The tenth maintenance release of the 15th version of the reverse
   2mapping based VM is now available.
   3This is an attempt at making a more robust and flexible VM
   4subsystem, while cleaning up a lot of code at the same time.
   5The patch is available from:
   6
   7           http://surriel.com/patches/2.4/2.4.21-pre7-rmap15j
   8and        http://linuxvm.bkbits.net/
   9
  10
  11My big TODO items for a next release are:
  12  - finetune the O(1) VM code for strange corner cases
  13  - add pte-highmem defines for more architectures
  14  - highmem tweaks
  15
  16rmap 15j:
  17  - agressive inode reclaim on highmem boxes              (me)
  18  - OOM killer tweaks, hopefully better now               (me)
  19  - better higher-order page allocations                  (me)
  20  - small updates and tweaks
  21rmap 15i:
  22  - drop behind only drops really new pages               (Arjan van de Ven)
  23  - lots of VM tuning left and right                      (Arjan, Ingo, me)
  24rmap 15h:
  25  - fix obscure SMP race                                  (Ben LaHaise, me)
  26  - fix smp races with bufferhead reclaim                 (Andrew Morton, me)
  27  - architecture updates                                  (various)
  28  - add barrier to page_unlock_rmap                       (Pete Zaitcev)
  29rmap 15g:
  30  - more ppc64 pte-highmem stuff                          (Julie DeWandel)
  31  - hammer pte-highmem stuff                              (Jim Paradis)
  32  - reclaim buffer heads under memory pressure            (me)
  33rmap 15f:
  34  - remove pte-highmem compat define from ieee1394        (Marc-C. Petersen)
  35  - clean up scan_active_list after suggestion from hch   (me)
  36  - lock ordering fix                                     (me)
  37  - add barrier() to page_chain_lock()                    (Pete Zaitcev)
  38  - fix pte-highmem defines for ppc64                     (Julie DeWandel)
  39  - add pte-highmem defines for s390 & s390x              (Pete Zaitcev)
  40rmap 15e:
  41  - make reclaiming unused inodes more efficient          (Arjan van de Ven)
  42    | push to Marcelo and Andrew once it's well tested !
  43  - fix DRM memory leak                                   (Arjan van de Ven)
  44  - fix potential infinite loop in kswapd                 (me)
  45  - clean up elevator.h (no IO scheduler in -rmap...)     (me)
  46  - page aging interval tuned on a per zone basis, better
  47    wakeup mechanism for sudden memory pressure           (Arjan, me)
  48rmap 15d:
  49  - compatability with PREEMPT patch                      (me)
  50    | fairly ugly, but should work
  51  - bugfix for the pte_chain allocation code              (Arjan van de Ven)
  52rmap 15c:
  53  - backport and audit akpm's reliable pte_chain alloc
  54    code from 2.5                                         (me)
  55  - reintroduce cache size tuning knobs in /proc          (me)
  56    | on very, very popular request
  57rmap 15b:
  58  - adjust anon/cache work table                          (me)
  59  - make active_age_bias a per-active list thing          (me)
  60  - don't wake up kswapd early from mark_page_accessed    (me)
  61  - make sure pte-chains are cacheline aligned with PAE   (me, Andrew Morton)
  62  - change some O(1) VM thresholds                        (me)
  63  - fix pte-highmem backport                              (me)
  64  - 2.5 backport: pte-highmem                             (Ben LaHaise)
  65  - 2.5 backport: large cacheline aligned pte-chains      (Ben LaHaise)
  66  - 2.5 backport: direct pte pointers                     (Ben LaHaise)
  67  - undo __find_pagecache_page braindamage                (Christoph Hellwig)
  68rmap 15a:
  69  - more agressive freeing for higher order allocations   (me)
  70  - export __find_pagecache_page, find_get_page define    (me, Christoph, Arjan)
  71  - make memory statistics SMP safe again                 (me)
  72  - make page aging slow down again when needed           (Andrew Morton)
  73  - first stab at fine-tuning arjan's O(1) VM             (me)
  74  - split active list in cache / working set              (me)
  75  - fix SMP locking in arjan's O(1) VM                    (me)
  76rmap 15:
  77  - small code cleanups and spelling fixes for O(1) VM    (me)
  78  - O(1) page launder, O(1) page aging                    (Arjan van de Ven)
  79  - resync code with -ac (12 small patches)               (me)
  80rmap 14c:
  81  - fold page_over_rsslimit() into page_referenced()      (me)
  82  - 2.5 backport: get pte_chains from the slab cache      (William Lee Irwin)
  83  - remove dead code from page_launder_zone()             (me)
  84  - make OOM detection a bit more agressive               (me)
  85rmap 14b:
  86  - don't unmap pages not in pagecache (ext3 & reiser)    (Andrew Morton, me)
  87  - clean up mark_page_accessed a bit                     (me)
  88  - Alpha NUMA fix for Ingo's per-cpu pages               (Flávio Leitner, me)
  89  - remove explicit low latency schedule zap_page_range   (Robert Love)
  90  - fix OOM stuff for good, hopefully                     (me)
  91rmap 14a:
  92  - Ingo Molnar's per-cpu pages (SMP speedup)             (Christoph Hellwig)
  93  - fix SMP bug in page_launder_zone (rmap14 only)        (Arjan van de Ven) 
  94  - semicolon day, fix typo in rmap.c w/ DEBUG_RMAP       (Craig Kulesa)
  95  - remove unneeded pte_chain_unlock/lock pair vmscan.c   (Craig Kulesa)
  96  - low latency zap_page_range also without preempt       (Arjan van de Ven)
  97  - do some throughput tuning for kswapd/page_launder     (me)
  98  - don't allocate swap space for pages we're not writing (me)
  99rmap 14:
 100  - get rid of stalls during swapping, hopefully          (me)
 101  - low latency zap_page_range                            (Robert Love)
 102rmap 13c:
 103  - add wmb() to wakeup_memwaiters                        (Arjan van de Ven)
 104  - remap_pmd_range now calls pte_alloc with full address (Paul Mackerras)
 105  - #ifdef out pte_chain_lock/unlock on UP machines       (Andrew Morton)
 106  - un-BUG() truncate_complete_page, the race is expected (Andrew Morton, me)
 107  - remove NUMA changes from rmap13a                      (Christoph Hellwig)
 108rmap 13b:
 109  - prevent PF_MEMALLOC recursion for higher order allocs (Arjan van de Ven, me)
 110  - fix small SMP race, PG_lru                            (Hugh Dickins)
 111rmap 13a:
 112  - NUMA changes for page_address                         (Samuel Ortiz)
 113  - replace vm.freepages with simpler kswapd_minfree      (Christoph Hellwig)
 114rmap 13:
 115  - rename touch_page to mark_page_accessed and uninline  (Christoph Hellwig)
 116  - NUMA bugfix for __alloc_pages                         (William Irwin)
 117  - kill __find_page                                      (Christoph Hellwig)
 118  - make pte_chain_freelist per zone                      (William Irwin)
 119  - protect pte_chains by per-page lock bit               (William Irwin)
 120  - minor code cleanups                                   (me)
 121rmap 12i:
 122  - slab cleanup                                          (Christoph Hellwig)
 123  - remove references to compiler.h from mm/*             (me)
 124  - move rmap to marcelo's bk tree                        (me)
 125  - minor cleanups                                        (me)
 126rmap 12h:
 127  - hopefully fix OOM detection algorithm                 (me)
 128  - drop pte quicklist in anticipation of pte-highmem     (me)
 129  - replace andrea's highmem emulation by ingo's one      (me)
 130  - improve rss limit checking                            (Nick Piggin)
 131rmap 12g:
 132  - port to armv architecture                             (David Woodhouse)
 133  - NUMA fix to zone_table initialisation                 (Samuel Ortiz)
 134  - remove init_page_count                                (David Miller)
 135rmap 12f:
 136  - for_each_pgdat macro                                  (William Lee Irwin)
 137  - put back EXPORT(__find_get_page) for modular rd       (me)
 138  - make bdflush and kswapd actually start queued disk IO (me)
 139rmap 12e
 140  - RSS limit fix, the limit can be 0 for some reason     (me)
 141  - clean up for_each_zone define to not need pgdata_t    (William Lee Irwin)
 142  - fix i810_dma bug introduced with page->wait removal   (William Lee Irwin)
 143rmap 12d:
 144  - fix compiler warning in rmap.c                        (Roger Larsson)
 145  - read latency improvement   (read-latency2)            (Andrew Morton)
 146rmap 12c:
 147  - fix small balancing bug in page_launder_zone          (Nick Piggin)
 148  - wakeup_kswapd / wakeup_memwaiters code fix            (Arjan van de Ven)
 149  - improve RSS limit enforcement                         (me)
 150rmap 12b:
 151  - highmem emulation (for debugging purposes)            (Andrea Arcangeli)
 152  - ulimit RSS enforcement when memory gets tight         (me)
 153  - sparc64 page->virtual quickfix                        (Greg Procunier)
 154rmap 12a:
 155  - fix the compile warning in buffer.c                   (me)
 156  - fix divide-by-zero on highmem initialisation  DOH!    (me)
 157  - remove the pgd quicklist (suspicious ...)             (DaveM, me)
 158rmap 12:
 159  - keep some extra free memory on large machines         (Arjan van de Ven, me)
 160  - higher-order allocation bugfix                        (Adrian Drzewiecki)
 161  - nr_free_buffer_pages() returns inactive + free mem    (me)
 162  - pages from unused objects directly to inactive_clean  (me)
 163  - use fast pte quicklists on non-pae machines           (Andrea Arcangeli)
 164  - remove sleep_on from wakeup_kswapd                    (Arjan van de Ven)
 165  - page waitqueue cleanup                                (Christoph Hellwig)
 166rmap 11c:
 167  - oom_kill race locking fix                             (Andres Salomon)
 168  - elevator improvement                                  (Andrew Morton)
 169  - dirty buffer writeout speedup (hopefully ;))          (me)
 170  - small documentation updates                           (me)
 171  - page_launder() never does synchronous IO, kswapd
 172    and the processes calling it sleep on higher level    (me)
 173  - deadlock fix in touch_page()                          (me)
 174rmap 11b:
 175  - added low latency reschedule points in vmscan.c       (me)
 176  - make i810_dma.c include mm_inline.h too               (William Lee Irwin)
 177  - wake up kswapd sleeper tasks on OOM kill so the
 178    killed task can continue on its way out               (me)
 179  - tune page allocation sleep point a little             (me)
 180rmap 11a:
 181  - don't let refill_inactive() progress count for OOM    (me)
 182  - after an OOM kill, wait 5 seconds for the next kill   (me)
 183  - agpgart_be fix for hashed waitqueues                  (William Lee Irwin)
 184rmap 11:
 185  - fix stupid logic inversion bug in wakeup_kswapd()     (Andrew Morton)
 186  - fix it again in the morning                           (me)
 187  - add #ifdef BROKEN_PPC_PTE_ALLOC_ONE to rmap.h, it
 188    seems PPC calls pte_alloc() before mem_map[] init     (me)
 189  - disable the debugging code in rmap.c ... the code
 190    is working and people are running benchmarks          (me)
 191  - let the slab cache shrink functions return a value
 192    to help prevent early OOM killing                     (Ed Tomlinson)
 193  - also, don't call the OOM code if we have enough
 194    free pages                                            (me)
 195  - move the call to lru_cache_del into __free_pages_ok   (Ben LaHaise)
 196  - replace the per-page waitqueue with a hashed
 197    waitqueue, reduces size of struct page from 64
 198    bytes to 52 bytes (48 bytes on non-highmem machines)  (William Lee Irwin)
 199rmap 10:
 200  - fix the livelock for real (yeah right), turned out
 201    to be a stupid bug in page_launder_zone()             (me)
 202  - to make sure the VM subsystem doesn't monopolise
 203    the CPU, let kswapd and some apps sleep a bit under
 204    heavy stress situations                               (me)
 205  - let __GFP_HIGH allocations dig a little bit deeper
 206    into the free page pool, the SCSI layer seems fragile (me)
 207rmap 9:
 208  - improve comments all over the place                   (Michael Cohen)
 209  - don't panic if page_remove_rmap() cannot find the
 210    rmap in question, it's possible that the memory was
 211    PG_reserved and belonging to a driver, but the driver
 212    exited and cleared the PG_reserved bit                (me)
 213  - fix the VM livelock by replacing > by >= in a few
 214    critical places in the pageout code                   (me)
 215  - treat the reclaiming of an inactive_clean page like
 216    allocating a new page, calling try_to_free_pages()
 217    and/or fixup_freespace() if required                  (me)
 218  - when low on memory, don't make things worse by
 219    doing swapin_readahead                                (me)
 220rmap 8:
 221  - add ANY_ZONE to the balancing functions to improve
 222    kswapd's balancing a bit                              (me)
 223  - regularize some of the maximum loop bounds in
 224    vmscan.c for cosmetic purposes                        (William Lee Irwin)
 225  - move page_address() to architecture-independent
 226    code, now the removal of page->virtual is portable    (William Lee Irwin)
 227  - speed up free_area_init_core() by doing a single
 228    pass over the pages and not using atomic ops          (William Lee Irwin)
 229  - documented the buddy allocator in page_alloc.c        (William Lee Irwin)
 230rmap 7:
 231  - clean up and document vmscan.c                        (me)
 232  - reduce size of page struct, part one                  (William Lee Irwin)
 233  - add rmap.h for other archs (untested, not for ARM)    (me)
 234rmap 6:
 235  - make the active and inactive_dirty list per zone,
 236    this is finally possible because we can free pages
 237    based on their physical address                       (William Lee Irwin)
 238  - cleaned up William's code a bit                       (me)
 239  - turn some defines into inlines and move those to
 240    mm_inline.h (the includes are a mess ...)             (me)
 241  - improve the VM balancing a bit                        (me)
 242  - add back inactive_target to /proc/meminfo             (me)
 243rmap 5:
 244  - fixed recursive buglet, introduced by directly
 245    editing the patch for making rmap 4 ;)))              (me)
 246rmap 4:
 247  - look at the referenced bits in page tables            (me)
 248rmap 3:
 249  - forgot one FASTCALL definition                        (me)
 250rmap 2:
 251  - teach try_to_unmap_one() about mremap()               (me)
 252  - don't assign swap space to pages with buffers         (me)
 253  - make the rmap.c functions FASTCALL / inline           (me)
 254rmap 1:
 255  - fix the swap leak in rmap 0                           (Dave McCracken)
 256rmap 0:
 257  - port of reverse mapping VM to 2.4.16                  (me)
 258