Re: swapping and the value of /proc/sys/vm/swappiness

From: Con Kolivas
Date: Tue Sep 14 2004 - 18:04:00 EST


Marcelo Tosatti wrote:
On Tue, Sep 14, 2004 at 11:31:53AM -0700, Florin Andrei wrote:

On Mon, 2004-09-06 at 16:27, Andrew Morton wrote:

Con Kolivas <kernel@xxxxxxxxxxx> wrote:

The change was not deliberate but there have been some other people report significant changes in the swappiness behaviour as well (see archives). It has usually been of the increased swapping variety lately. It has been annoying enough to the bleeding edge desktop users for a swag of out-of-tree hacks to start appearing (like mine).

All of which is largely wasted effort.

From a highly-theoretical, ivory-tower perspective, maybe; i am not the
one to pass judgement.
From a realistic, "fix it 'cause it's performing worse than MSDOS
without a disk cache" perspective, definitely not true.

I've found a situation where the vanilla kernel has a behaviour that
makes no sense:

http://marc.theaimsgroup.com/?l=linux-kernel&m=109237941331221&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=109237959719868&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=109238126314192&w=2

A patch by Con Kolivas fixed it:

http://marc.theaimsgroup.com/?l=linux-kernel&m=109410526607990&w=2

I cannot offer more details, i have no time for experiments, i just need
a system that works. The vanilla kernel does not.


Have you tried to decrease the value of /proc/sys/vm/swappiness to say 30 and see what you get?

Andrew's point is that we should identify the problem - Con's patch
rewrites swapping policy.

I already answered this. That hard swappiness patch does not really rewrite swapping policy. It identifies exactly what has changed because it does not count "distress in the swap tendency". Therefore if the swappiness value is the same, the mapped ratio is the same (in the workload) yet the vm is swappinig more, it is getting into more "distress". The mapped ratio is the same but the "distress" is for some reason much higher in later kernels, meaning the priority of our scanning is getting more and more intense. This should help direct your searches.

These are the relevant lines of code _from mainline_:

distress = 100 >> zone->prev_priority
mapped_ratio = (sc->nr_mapped * 100) / total_memory;
swap_tendency = mapped_ratio / 2 + distress + vm_swappiness
if (swap_tendency >= 100)
- reclaim_mapped = 1;


That hard swappiness patch effectively made "distress == 0" always.

Con
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/