Re: [RFC][PATCH] lru_add_drain_all() don't use schedule_on_each_cpu()

KOSAKI Motohiro
2008-10-29T07:17:30Z

> I believe that we still have the lru_drain_all() called from the fault
> path [with mmap_sem held] in clear_page_mlock(). We call
> clear_page_mlock() on COW of an mlocked page in a VM_LOCKED vma to
> ensure that we don't end up with an mlocked page in some other task's
> non-VM_LOCKED vma where we'd then fail to munlock it later. During
> development testing, Rik encountered scenarios where a page would
> encounter a COW fault while it was still making its way to the LRU via
> the pagevecs. So, he added the 'drain_all() and that seemed to avoid
> this scenario.

Agreed.

> Now, in the current upstream version of the unevictable mlocked pages
> patches, we just count any mlocked pages [vmstat] that make their way to
> free*page() instead of BUGging out, as we were doing earlier during
> development. So, maybe we can drop the lru_drain_add()s in the
> unevictable mlocked pages work and live with the occasional freed
> mlocked page, or mlocked page on the active/inactive lists to be dealt
> with by vmscan.

hm, okey.
maybe, I was wrong.

I'll make "dropping lru_add_drain_all()" patch soon.
I expect I need few days.
make the patch: 1 day
confirm by stress workload: 2-3 days

because rik's original problem only happend on heavy wokload, I think.