On Wed, 16 Jun 2010 19:45:29 -0400
Rik van Riel<riel@xxxxxxxxxx> wrote:
On 06/16/2010 07:37 PM, Andrew Morton wrote:
This would have been badder in earlier days when we were using the
scanning priority to decide when to start unmapping pte-mapped pages -
page reclaim would have been recirculating large blobs of mapped pages
around the LRU until the priority had built to the level where we
started to unmap them.
However that priority-based decision got removed and right now I don't
recall what it got replaced with. Aren't we now unmapping pages way
too early and suffering an increased major&minor fault rate? Worried.
We keep a different set of statistics to decide whether to
reclaim only page cache pages, or both page cache and
anonymous pages. The function get_scan_ratio parses those
statistics.
I wasn't talking about anon-vs-file. I was referring to mapped-file
versus not-mapped file. If the code sees a mapped page come off the
tail of the LRU it'll just unmap and reclaim the thing. This policy
caused awful amounts of paging activity when someone started doing lots
of read() activity, which is why the VM was changed to value mapped
pagecache higher than unmapped pagecache. Did this biasing get
retained and if so, how?
Does thrash-avoidance actually still work?
I do not believe prev_priority will be very useful here, since
we'd like to start out with small scans whenever possible.
Why?
In that case, the prev_priority logic may have introduced the
kind of behavioural bug you describe above...
And one has to wonder: if we're making these incorrect decisions based
upon a bogus view of the current scanning difficulty, why are these
various priority-based thresholding heuristics even in there? Are they
doing anything useful?
The prev_priority code was useful when we had filesystem and
swap backed pages mixed on the same LRU list.
No, stop saying swap! ;)
It's all to do with mapped pagecache versus unmapped pagecache. "ytf
does my browser get paged out all the time".