Peter Xu <pet...@redhat.com> wrote: > On Thu, Mar 23, 2017 at 09:45:09PM +0100, Juan Quintela wrote: >> Signed-off-by: Juan Quintela <quint...@redhat.com>
>> @@ -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.