That was a big lump of patch, and I need to get all the other
MM developers to say "yes, we can live with this". Everything which
takes the LRU lock needed to be redone to get the holdtimes and
acquisition frequency down.
It's quite unfeasible for 2.4. The only 2.4 kernel which
has the in_interrupt() check is Andrea's. And, I assume,
the SuSE production kernel. So empirically, we're probably OK there.
But the RH kernel has AIO (yes?) which may change the picture.
A simple little hack which would prevent it in 2.4 would be,
in __free_pages_ok():
if (PageLRU(page)) {
if (in_interrupt()) {
SetPageFoo(page);
return;
}
lru_cache_del(page);
}
and in shrink_cache(), inside pagemap_lru_lock:
if (PageFoo(page)) {
__lru_cache_del(page);
BUG_ON(page_count(page) != 0);
page_cache_get(page);
__free_page(page);
continue;
}
This is basically Dave's "defer it to process context", with kswapd
doing the work.
-
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/