From: Hyman Huang(黄勇) <huangy81@xxxxxxxxxxxxxxx> dirty_pages is used to calculate dirtyrate via dirty ring, when enabled, kvm-reaper will increase the dirty pages after gfns being dirtied. Signed-off-by: Hyman Huang(黄勇) <huangy81@xxxxxxxxxxxxxxx> --- accel/kvm/kvm-all.c | 6 ++++++ include/hw/core/cpu.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 2e96b77b31..52cba1b094 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -506,6 +506,9 @@ int kvm_init_vcpu(CPUState *cpu, Error **errp) } } + cpu->dirty_pages = 0; + cpu->stat_dirty_pages = false; + ret = kvm_arch_init_vcpu(cpu); if (ret < 0) { error_setg_errno(errp, -ret, @@ -739,6 +742,9 @@ static uint32_t kvm_dirty_ring_reap_one(KVMState *s, CPUState *cpu) cur->offset); dirty_gfn_set_collected(cur); trace_kvm_dirty_ring_page(cpu->cpu_index, fetch, cur->offset); + if (cpu->stat_dirty_pages) { + cpu->dirty_pages++; + } fetch++; count++; } diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 044f668a6e..973c193501 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -375,6 +375,8 @@ struct CPUState { struct kvm_run *kvm_run; struct kvm_dirty_gfn *kvm_dirty_gfns; uint32_t kvm_fetch_index; + uint64_t dirty_pages; + bool stat_dirty_pages; /* Used for events with 'vcpu' and *without* the 'disabled' properties */ DECLARE_BITMAP(trace_dstate_delayed, CPU_TRACE_DSTATE_MAX_EVENTS); -- 2.24.3