Re: Results: pre6 vs pre6+zlatko's_patch vs pre5 vs arcavm13

Andrea Arcangeli
1999-01-10T18:36:55Z

On Sat, 9 Jan 1999, Linus Torvalds wrote:

> Can you run pre6+zlatko with just the mm/page_alloc.c one-liner reverted
> to pre5? That is, take pre6+zlatko, and just change

I have no time to try code these days :(

> try_to_free_pages(gfp_mask, freepages.high - nr_free_pages);
>
> back to
>
> try_to_free_pages(gfp_mask, SWAP_CLUSTER_MAX);
>
> That particular one-liner was almost certainly a mistake, it was done on
> the mistaken assumption that the clustering problem was due to
> insufficient write-time clustering - while zlatko found that it was
> actually due to fragmentation in the swap area. With zlatkos patch, the
> original SWAP_CLUSTER_MAX is probably better and almost certainly results
> in smoother behaviour due to less extreme free_pages..

I don't know which is zlatkos patch but my point is that it's
try_to_free_pages that has to care to be balanced and to do things at
best. I want to be allowed to ask try_to_free_pages to free any kind of
space and such function has to run _always_ efficient.

My current free_user_and_cache() (arca-vm-13) is bad because it doesn't
swapout aggressively. I am fixing it right now. When I'll have finished
I'll post the new patch.

BTW, the reason pre6 is slower than my current _bad_ free_user_and_cache()
(arca-vm-13) in low memory machines is that in high memory machines the
freepages.min is something like 255 while in low memory machines
freepages.min it's close to SWAP_CUSTER_MAX. So in low memory machines the
swapout cluster has to be reduced (because now swapout doesn't free
pages). free_user_and_cache() has to care about these issues and I see
plain wrong to hardwire the swap cluster size to a constant number since
the freepages values are dynamic (and also changable via sysctl).

I am not sure of all this, but this is currently my thought.

Comments?

Andrea Arcangeli