On 04/09/2013 03:10 AM, KOSAKI Motohiro wrote:
>> This approach works on any task via it's proc, and can be used on different
>> tasks in parallel.
>>
>> Also, Andrew was asking for some performance numbers related to the change.
>> Now I can say, that as long as soft dirty bits are not cleared, no 
>> performance
>> penalty occur, since the soft dirty bit and the regular dirty bit are set at 
>> the same time within the same instruction. When soft dirty is cleared via 
>> clear_refs, the task in question might slow down, but it will depend on how
>> actively it uses the memory.
>>
>>
>> What do you think, does it make sense to develop this approach further?
> 
> When touching mmaped page, cpu turns on dirty bit but doesn't turn on soft 
> dirty.

Yes. BTW, I've just thought that "soft" in soft dirty should be read as 
softWARE,
i.e. this bit is managed by kernel, rather than CPU.

> So, I'm not convinced how to use this flag. Please show us your userland 
> algorithm
> how to detect diff.

It's like this:

1. First do "echo 4 > /proc/$pid/clear_refs".
   At that point kernel clears the soft dirty _and_ the writable bits from all 
ptes
   of process $pid. From now on every write to any page will result in #pf and 
the
   subsequent call to pte_mkdirty/pmd_mkdirty, which in turn will set the soft 
dirty
   flag.

2. Then read the /proc/$pid/pagemap (well, /proc/$pid/pagemap2 when it will 
appear)
   and check the soft-dirty bit reported there (in this RFC patch it's the
   PM_SOFT_DIRTY one). If set, the respective pte was written to since last call
   to clear refs. 

Thanks,
Pavel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to