Re: [PATCH] mm: Save soft-dirty bits on swapped pages

From: Andy Lutomirski
Date: Wed Jul 24 2013 - 14:22:15 EST


On Wed, Jul 24, 2013 at 11:15 AM, Cyrill Gorcunov <gorcunov@xxxxxxxxx> wrote:
> On Wed, Jul 24, 2013 at 10:42:24AM -0700, Andy Lutomirski wrote:
>> >
>> > Lets just be clear about the problem first: the vmscan pass referred to
>> > above happens only on clean pages, so the soft dirty bit could only be
>> > set if the page was previously dirty and got written back. Now it's an
>> > exercise for the reader whether we want to reinstantiate a cleaned
>> > evicted page for the purpose of doing an iterative migration or whether
>> > we want to flip the page in the migrated entity to be evicted (so if it
>> > gets referred to, it pulls in an up to date copy) ... assuming the
>> > backing file also gets transferred, of course.
>
> Good question! I rather forward it to Pavel as an author for soft dirty
> bit feature. Pavel?
>
>> I think I understand your distinction. Nonetheless, given the loss of
>> the soft-dirty bit, the migration tool could fail to notice that the
>> pages was dirtied and subsequently cleaned and evicted. I'm
>> unconvinced that doing this on a per-PTE basis is the right way,
>> though.
>
> I fear for tracking soft-dirty-bit for swapped entries we sinply have
> no other place than pte (still i'm quite open for ideas, maybe there
> are a better way which I've missed).

I know approximately nothing about how swap and anon_vma work.

For files, sticking it in struct page seems potentially nicer,
although finding a free bit might be tough. (FWIW, I have plans to
free up a page flag on x86 some time moderately soon as part of a
completely unrelated project.) I think this stuff really belongs to
the address_space more than it belongs to the pte.

How do you handle the write syscall?

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/