Hi Jay, On 2020/3/11 15:34, Zhoujian (jay) wrote: > > >> -----Original Message----- >> From: zhukeqian >> Sent: Wednesday, March 11, 2020 3:20 PM >> To: Marc Zyngier <maz@xxxxxxxxxx> >> Cc: kvmarm@xxxxxxxxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; >> linux-kernel@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; Zhoujian (jay) >> <jianjay.zhou@xxxxxxxxxx>; Sean Christopherson >> <sean.j.christopherson@xxxxxxxxx>; Paolo Bonzini <pbonzini@xxxxxxxxxx>; >> James Morse <james.morse@xxxxxxx>; Julien Thierry >> <julien.thierry.kdev@xxxxxxxxx>; Suzuki K Poulose <suzuki.poulose@xxxxxxx> >> Subject: Re: [RFC] KVM: arm64: support enabling dirty log graually in small chunks >> >> Hi Marc, >> >> On 2020/3/10 21:16, Marc Zyngier wrote: >>> On 2020-03-10 08:26, zhukeqian wrote: >>>> Hi Marc, >>>> >>>> On 2020/3/9 19:45, Marc Zyngier wrote: >>>>> Kegian, >>> >>> [...] >>> >>>>> Is there a userspace counterpart to it? >>>>> >>>> As this KVM/x86 related changes have not been merged to mainline >>>> kernel, some little modification is needed on mainline Qemu. >>> >>> Could you please point me to these changes? >> I made some changes locally listed below. >> >> However, Qemu can choose to enable KVM_DIRTY_LOG_INITIALLY_SET or not. >> Here I made no judgement on dirty_log_manual_caps because I just want to >> verify the optimization of this patch. >> >> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index >> 439a4efe52..1611f644a4 100644 >> --- a/accel/kvm/kvm-all.c >> +++ b/accel/kvm/kvm-all.c >> @@ -2007,14 +2007,16 @@ static int kvm_init(MachineState *ms) >> s->coalesced_pio = s->coalesced_mmio && >> kvm_check_extension(s, >> KVM_CAP_COALESCED_PIO); >> >> - s->manual_dirty_log_protect = >> + uint64_t dirty_log_manual_caps = >> kvm_check_extension(s, >> KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2); >> - if (s->manual_dirty_log_protect) { >> - ret = kvm_vm_enable_cap(s, >> KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2, 0, 1); >> + if (dirty_log_manual_caps) { >> + ret = kvm_vm_enable_cap(s, >> KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2, 0, >> + dirty_log_manual_caps); >> if (ret) { >> warn_report("Trying to enable >> KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2 " >> "but failed. Falling back to the legacy mode. "); >> - s->manual_dirty_log_protect = false; >> + } else { >> + s->manual_dirty_log_protect = true; >> } >> } > > FYI: I had submitted a patch to the Qemu community some days ago: > https://patchwork.kernel.org/patch/11419191/ This is very helpful, thanks. > >>> >>>> As I tested this patch on a 128GB RAM Linux VM with no huge pages, >>>> the time of enabling dirty log will decrease obviously. >>> >>> I'm not sure how realistic that is. Not having huge pages tends to >>> lead to pretty bad performance in general... >> Sure, this has no effect on guests which are all of huge pages. >> >> For my understanding, once a guest has normal pages (maybe are initialized at >> beginning or dissloved from huge pages), it can benefit from this patch. > > Yes, I agree. > I will send PATCH v1 soon. > > > Regards, > Jay Zhou > > . > Thanks, Keqian _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm