On Wed, Dec 11, 2019 at 11:34 AM Jens Axboe <axboe@xxxxxxxxx> wrote: > > I can't tell a difference in the results, there's no discernable > difference between NOT calling mark_page_accessed() or calling it. > Behavior seems about the same, in terms of pre and post page cache full, > and kswapd still churns a lot once the page cache is filled up. Yeah, that sounds like a bug. I'm sure the RWF_UNCACHED flag fixes it when you do the IO that way, but it seems to be a bug relardless. Does /proc/meminfo have everything inactive for file data (ie the "Active(file)" line is basically zero?). Maybe pages got activated other ways (eg a problem with the workingset code)? You said "See patch below", but there wasn't any. That said, it's also entirely possible that even with everything in the inactive list, we might try to shrink other things first for whatever odd reason.. The fact that you see that xas_create() so prominently would imply perhaps add_to_swap_cache(), which certainly implies that the page shrinking isn't hitting the file pages... Linus