> -----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/ > > > >> 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. Regards, Jay Zhou _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm