Thread (35 messages) 35 messages, 6 authors, 2019-08-19

Re: [PATCH v5 2/6] mm/page_idle: Add support for handling swapped PG_Idle pages

From: Konstantin Khlebnikov <hidden>
Date: 2019-08-13 19:24:24
Also in: linux-doc, linux-fsdevel, linux-mm, lkml

On Tue, Aug 13, 2019 at 6:37 PM Joel Fernandes [off-list ref] wrote:
On Tue, Aug 13, 2019 at 05:04:50PM +0200, Michal Hocko wrote:
quoted
On Wed 07-08-19 13:15:55, Joel Fernandes (Google) wrote:
quoted
Idle page tracking currently does not work well in the following
scenario:
 1. mark page-A idle which was present at that time.
 2. run workload
 3. page-A is not touched by workload
 4. *sudden* memory pressure happen so finally page A is finally swapped out
 5. now see the page A - it appears as if it was accessed (pte unmapped
    so idle bit not set in output) - but it's incorrect.

To fix this, we store the idle information into a new idle bit of the
swap PTE during swapping of anonymous pages.

Also in the future, madvise extensions will allow a system process
manager (like Android's ActivityManager) to swap pages out of a process
that it knows will be cold. To an external process like a heap profiler
that is doing idle tracking on another process, this procedure will
interfere with the idle page tracking similar to the above steps.
This could be solved by checking the !present/swapped out pages
right? Whoever decided to put the page out to the swap just made it
idle effectively.  So the monitor can make some educated guess for
tracking. If that is fundamentally not possible then please describe
why.
But the monitoring process (profiler) does not have control over the 'whoever
made it effectively idle' process.

As you said it will be a guess, it will not be accurate.
Yep. Without saving idle bit in swap entry (and presuming that all swap is idle)
profiler could miss access. This patch adds accurate tracking almost for free.
After that profiler could work with any pace without races.
I am curious what is your concern with using a bit in the swap PTE?

(Adding Konstantin as well since we may be interested in this, since we also
suggested this idea).

thanks,

 - Joel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help