Messages in this thread | | | Date | Wed, 27 Oct 2004 06:44:45 +0200 | From | Andrea Arcangeli <> | Subject | Re: lowmem_reserve (replaces protection) |
| |
On Tue, Oct 26, 2004 at 08:43:08PM -0700, Andrew Morton wrote: > Nick Piggin <nickpiggin@yahoo.com.au> wrote: > > > > It actually can overscan lower zones a little bit, because > > whenever any higher zone in the pgdat is low on memory, then > > it and all zones below it get scanned too. > > Because we know that all of the eligible zones are below pages_low. kswapd > will then work to bring all the relevant zones back to pages_high.
entering the loop is easy and shrinking all zones is easy.
is how much to free from each zone in kswapd that won't work as 2.4 did with only pages_high.
what we'll happen is that we'll blindly free a few pages from each zone, but then we'll be allowed to allocate the highmem pages, and not the normal/dma pages. So after allocating the highmem pages we invoke kswapd again and it frees again some highmem/normal/dma pages but we keep only using the highmem ones. So for a while we may be rolling over only the highmem lru and ignoring all freed pages from the normal/dma zones.
2.4 would have freed all pages from the lower zones first (without this additional rolling over the highmem zone). Though it's a bit hard to compare since 2.4 had a global lru.
The bigger the highmem zone, the less it will matter the stuff that can be cached in the low zones. And the smaller the highemm zone the less imbalancing will be generated since the reservation will be minuscle on the lower zones. So perhaps it already works fine, but this is not 2.4 was working (I'm sure to make it work like 2.4 you'd need to add the lowmem_reserve in the when-to-stop-kswapd math). But maybe it works even better this way? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |