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>