Re: [RFC PATCH 1/2] vmscan don't isolate too many pages

Rik van Riel
2009-07-07T18:59:45Z

KOSAKI Motohiro wrote:

> FAQ
> -------
> Q: Why do you compared zone accumulate pages, not individual zone pages?
> A: If we check individual zone, #-of-reclaimer is restricted by smallest zone.
> it mean decreasing the performance of the system having small dma zone.

That is a clever solution! I was playing around a bit with
doing it on a per-zone basis. Your idea is much nicer.

However, I can see one potential problem with your patch:

+ nr_inactive += zone_page_state(zone, NR_INACTIVE_ANON);
+ nr_inactive += zone_page_state(zone, NR_INACTIVE_FILE);
+ nr_isolated += zone_page_state(zone, NR_ISOLATED_ANON);
+ nr_isolated += zone_page_state(zone, NR_ISOLATED_FILE);
+ }
+
+ return nr_isolated > nr_inactive;

What if we ran out of swap space, or are not scanning the
anon list at all for some reason?

It is possible that there are no inactive_file pages left,
with all file pages already isolated, and your function
still letting reclaimers through.

This means you could still get a spurious OOM.

I guess I should mail out my (ugly) approach, so we can
compare the two :)