Thread (23 messages) 23 messages, 4 authors, 2004-01-30

Re: [BENCHMARKS] Namesys VM patches improve kbuild

From: Nick Piggin <hidden>
Date: 2004-01-24 01:07:03

Nikita Danilov wrote:
Nick Piggin writes:
quoted

Nikita Danilov wrote:
quoted
Nick Piggin writes:
quoted
[...]
quoted
But those cold mapped pages are basically ignored until the
reclaim_mapped threshold, however they do continue to have their
referenced bits cleared - hence page_referenced check should
become a better estimation when reclaim_mapped is reached, right?
Right.

I still am a bit skeptical that the LRU lists are actually LRU,
however I'm running out of other explainations for your patch's
improvements :)
They are not LRU, it is impossible (and useless) to have LRU in the VM.

The problem that we have, and that dont-rotate-active-list tries to
address, is that two different LRU _approximations_ are maintained
within the same page queues. This patch tries (lazily) to separate pages
handled differently so that they don't interfere with each other.
Yes, but why doesn't my small patch have the same effect?
It doesn't do it by nicely seperating mapped and non mapped
pages like yours, but it should do something similar: ignore
all mapped pages until the reclaim_mapped threshold.
quoted
One ideas I had turns out to have little effect for kbuild, but
it might still be worth including?

When reclaim_mapped == 0 mapped referenced pages are treated
the same way as mapped unreferenced pages, and the referenced
info is thrown out. Fixed by not clearing referenced bits.
I think that purpose of having active/inactive lists in the first place
is to tell hot pages from cold one. Hotness of page is estimated on the
basis of how frequently it has been accessed _recently_: if page was
accessed while migrating through the active list---it is hot. When the
memory pressure increases, the active list is scanned more aggressively
and the time that the page spends on it (which is the time it has to get
a reference) decreases, thus adjusting VM's notion of the hotness.

By not clearing the referenced bit, one loses the ability to tell recent
accesses from the old ones. As a result, all mapped pages that were ever
accessed from the bootup would appear as hot when reclaim_mapped is
reached.
But by clearing the referenced bit when below the reclaim_mapped
threshold, you're throwing this information away.

Say you have 16 mapped pages on the active list, 8 referenced, 8 not.
You do a !reclaim_mapped scan. Your 16 pages are now in the same
order and none are referenced. You now do a reclaim_mapped scan and
reclaim 8 pages. 4 of them were the referenced ones, 4 were not.

With my change, you would reclaim all 8 non referenced pages.


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help