Re: Odd swap behavior

Rik van Riel
2000-10-04T22:13:28Z

On Wed, 4 Oct 2000, Rajagopal Ananthanarayanan wrote:
> Rik van Riel wrote:
> [ ... ]
> >
> > Please take a look at vmscan.c::refill_inactive()
> >
> > Furthermore, we don't do background scanning on all
> > active pages, only on the unmapped ones.
>
> Does that mean stack pages of processes are not included?
> Non-aggressive swap can hurt performance.

I don't really see a clean way to do that in 2.4 ...

> > Agreed, but I don't see an "easy" solution for 2.4.
>
> Ok, I have another suggestion. Suppose you had a situation
> where a page is read from disk. It has buffers. Initially
> the page is active, and then aged. Where does the page go at age = 0?
> In reading the current code it seems that it would go to
> inactive_dirty. See how deactivate_page() chooses the dirty list
> to add a page which has buffers. Of course, later page_launder()
> would do try_to_free_buffers() which discards (clean) buffer heads,
> and at that point the page is put on free_list/reclaimed.
> Would it not be more efficient to bung clean (read) pages directly
> to inactive_clean on age = 0?

I don't know if this would make any difference...

And in fact, I'm contemplating adding /all/ pages
that are deactivated to the inactive_dirty list,
since that way we'll reclaim all inactive pages
in FIFO order.

Currently we may "skip" some pages that were put
on the inactive_dirty list but were cleaned up
subsequently because we can find enough active
pages that can be moved to the inactive_clean
list immediately ...

regards,

Rik
--
"What you're running that piece of shit Gnome?!?!"
-- Miguel de Icaza, UKUUG 2000

http://www.conectiva.com/ http://www.surriel.com/