1 Index: linux+rhel4+chaos/mm/page_alloc.c
2 ===================================================================
3 --- linux+rhel4+chaos.orig/mm/page_alloc.c
4 +++ linux+rhel4+chaos/mm/page_alloc.c
5 @@ -1972,8 +1972,12 @@ static void setup_per_zone_pages_min(voi
9 - zone->pages_low = zone->pages_min * 2;
10 - zone->pages_high = zone->pages_min * 3;
12 + * When interpreting these watermarks, just keep in mind that:
13 + * zone->pages_min == (zone->pages_min * 4) / 4;
15 + zone->pages_low = (zone->pages_min * 5) / 4;
16 + zone->pages_high = (zone->pages_min * 6) / 4;
17 spin_unlock_irqrestore(&zone->lru_lock, flags);
20 @@ -1982,24 +1986,25 @@ static void setup_per_zone_pages_min(voi
21 * Initialise min_free_kbytes.
23 * For small machines we want it small (128k min). For large machines
24 - * we want it large (16MB max). But it is not linear, because network
25 + * we want it large (64MB max). But it is not linear, because network
26 * bandwidth does not increase linearly with machine size. We use
28 - * min_free_kbytes = sqrt(lowmem_kbytes)
29 + * min_free_kbytes = 4 * sqrt(lowmem_kbytes), for better accuracy
30 + * min_free_kbytes = sqrt(lowmem_kbytes * 16)
57 static int __init init_per_zone_pages_min(void)
59 @@ -2007,11 +2012,11 @@ static int __init init_per_zone_pages_mi
61 lowmem_kbytes = nr_free_buffer_pages() * (PAGE_SIZE >> 10);
63 - min_free_kbytes = int_sqrt(lowmem_kbytes);
64 + min_free_kbytes = int_sqrt(lowmem_kbytes * 16);
65 if (min_free_kbytes < 128)
66 min_free_kbytes = 128;
67 - if (min_free_kbytes > 16384)
68 - min_free_kbytes = 16384;
69 + if (min_free_kbytes > 65536)
70 + min_free_kbytes = 65536;
71 setup_per_zone_pages_min();
72 setup_per_zone_protection();