Peter Xu <[email protected]> wrote:
> On Thu, Mar 23, 2017 at 09:45:09PM +0100, Juan Quintela wrote:
>> Signed-off-by: Juan Quintela <[email protected]>
>> @@ -693,13 +694,13 @@ static void migration_bitmap_sync(RAMState *rs)
>> }
>>
>> if (migrate_use_xbzrle()) {
>> - if (rs->iterations_prev != acct_info.iterations) {
>> + if (rs->iterations_prev != rs->iterations) {
>> acct_info.xbzrle_cache_miss_rate =
>> (double)(acct_info.xbzrle_cache_miss -
>> rs->xbzrle_cache_miss_prev) /
>> - (acct_info.iterations - rs->iterations_prev);
>> + (rs->iterations - rs->iterations_prev);
>
> Here we are calculating cache miss rate by xbzrle_cache_miss and
> iterations. However looks like xbzrle_cache_miss is counted per guest
> page (in save_xbzrle_page()) while the iteration count is per host
> page (in ram_save_iterate()). Then, what if host page size not equals
> to guest page size? E.g., when host uses 2M huge pages, host page size
> is 2M, while guest page size can be 4K?
Good catch. Will have to think about this. You are right. I will
change that later.
Thanks, Juan.