Re: [PATCH] Autoregulate vm swappiness 2.6.0-test8

From: Con Kolivas
Date: Thu Oct 23 2003 - 09:58:53 EST


On Friday 24 October 2003 00:42, Martin J. Bligh wrote:
> > + * Autoregulate vm_swappiness to be application pages % -ck.
> > + */
> > + si_meminfo(&i);
> > + si_swapinfo(&i);
> > + pg_size = get_page_cache_size() - i.bufferram ;
> > + vm_swappiness = 100 - (((i.freeram + i.bufferram +
> > + (pg_size - swapper_space.nrpages)) * 100) /
> > + (i.totalram ? i.totalram : 1));
> > +
> > + /*
>
> It seems that you don't need si_swapinfo here, do you? i.freeram,
> i.bufferram, and i.totalram all come from meminfo, as far as I can
> see? Maybe I'm missing a bit ...

Well I did do it a while ago and it seems I got carried away adding and
subtracting info indeed. :-) Here's a simpler patch that does the same thing.

Con


--- linux-2.6.0-test8-base/mm/vmscan.c 2003-10-19 20:24:36.000000000 +1000
+++ linux-2.6.0-test8-am/mm/vmscan.c 2003-10-24 00:46:52.000000000 +1000
@@ -47,7 +47,7 @@
/*
* From 0 .. 100. Higher means more swappy.
*/
-int vm_swappiness = 60;
+int vm_swappiness = 0;
static long total_memory;

#ifdef ARCH_HAS_PREFETCH
@@ -600,6 +600,7 @@ refill_inactive_zone(struct zone *zone,
LIST_HEAD(l_active); /* Pages to go onto the active_list */
struct page *page;
struct pagevec pvec;
+ struct sysinfo i;
int reclaim_mapped = 0;
long mapped_ratio;
long distress;
@@ -642,6 +643,13 @@ refill_inactive_zone(struct zone *zone,
mapped_ratio = (ps->nr_mapped * 100) / total_memory;

/*
+ * Autoregulate vm_swappiness to be application pages% -ck
+ */
+ si_meminfo(&i);
+ vm_swappiness = 100 - (((i.freeram + get_page_cache_size() -
+ swapper_space.nrpages) * 100) / (i.totalram ? i.totalram : 1));
+
+ /*
* Now decide how much we really want to unmap some pages. The mapped
* ratio is downgraded - just because there's a lot of mapped memory
* doesn't necessarily mean that page reclaim isn't succeeding.