On Tue, Mar 14, 2017 at 09:38:46AM +0100, Juan Quintela wrote:
>Chao Fan <fanc.f...@cn.fujitsu.com> wrote:
>> In function cpu_physical_memory_sync_dirty_bitmap, file
>> include/exec/ram_addr.h:
>>
>> if (src[idx][offset]) {
>>     unsigned long bits = atomic_xchg(&src[idx][offset], 0);
>>     unsigned long new_dirty;
>>     new_dirty = ~dest[k];
>>     dest[k] |= bits;
>>     new_dirty &= bits;
>>     num_dirty += ctpopl(new_dirty);
>> }
>>
>> After these codes executed, only the pages not dirtied in bitmap(dest),
>> but dirtied in dirty_memory[DIRTY_MEMORY_MIGRATION] will be calculated.
>> For example:
>> When ram_list.dirty_memory[DIRTY_MEMORY_MIGRATION] = 0b00001111,
>> and atomic_rcu_read(&migration_bitmap_rcu)->bmap = 0b00000011,
>> the new_dirty will be 0b00001100, and this function will return 2 but not
>> 4 which is expected.
>> the dirty pages in dirty_memory[DIRTY_MEMORY_MIGRATION] are all new,
>> so these should be calculated also.
>#
>> Signed-off-by: Chao Fan <fanc.f...@cn.fujitsu.com>
>> Signed-off-by: Li Zhijian <lizhij...@cn.fujitsu.com>
>>
>> ---
>> v2: Remove the parameter 'num_dirty_pages_init'
>>     Fix incoming parameters of trace_migration_bitmap_sync_end
>
>Reviewed-by: Juan Quintela <quint...@redhat.com>
Hi Juan,

Thank you for your review!

>
>Just curious, does this change show any difference in any load?
I think this method can show the new dirty pages more precisely than
before, so it's helpful to determine the cpu throttle value.

You can see this mail:
https://lists.gnu.org/archive/html/qemu-devel/2017-01/msg03479.html

And according to Daniel's suggestion, 'inst-dirty-pages-rate' in my
old patch isn't needed anymore after this patch:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg436183.html

Thanks,
Chao Fan
>
>Later, Juan.
>
>



Reply via email to