Re: [PATCH 3/6] KVM: Dirty memory tracking for performant checkpointing and improved live migration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/29/2016 2:19 PM, Radim Krčmář wrote:
> 2016-04-28 19:58+0000, Cao, Lei:
>> On 4/28/2016 5:13 AM, Huang, Kai wrote:
>>> One general comment: won't it be better if you devide kvm_mt and make it 
>>> embedded to kvm_memory_slot? In my understanding the main difference 
>>> between bitmap and your log-dirty mechanism is you are using list not 
>>> bitmap, and I think make the dirty_gfn_list embedded to kvm_memory_slot 
>>> should simplify lots of your code.
>>
>> It's true that one difference of the new mechanism is the use of list 
>> instead of bitmap. Another difference is that the dirty list is per
>> vcpu, instead of per memory slot. This is so that the list can be updated
>> without holding a lock. 
> 
> A writeup of alternatives behind your decision would be welcome.
> 
> Per-vcpu structures seems crucial with higher amount of VCPUs and
> putting per-vcpu into kvm_memory_slots would either take much more
> memory, or wouldn't scale as well.
> 
> Separating from kvm_memory_slot has its share of issues too, though,
> because slot id can stand for different slots during runtime.
> (Most/all can be solved by forbidding uses that lead to them, so
>  userspace would be to blame if memory tracking worked incorrectly.
>  E.g. reconfiguring a slot without pausing vcpus and draining dirty
>  pages.)
>

Good point. Our per-vcpu dirty list is separate from kvm_memory_slot. I'll
look into the changing slot id issue.
 
>> It should be noted that what is saved on the dirty list is 
>> (mem slot id|offset), not gfn.
> 
> Current compaction causes a problem.  Slot id is u32, but gnflist stores
> only bottom 16 bits while upper 16 contain important address space.
> And 48 bit offset isn't enough for GPA sizes above 60 bits.
> 
> Compaction can reserve up to PAGE_SHIFT bits.  KVM must BUILD_BUG_ON()
> if KVM_ADDRESS_SPACE_NUM and KVM_MEM_SLOTS_NUM don't fit.  (We'll be
> this reworking compaction as soon as per-vcpu address spaces arrive,
> because KVM_MEM_SLOTS_NUM already takes 9 bits.)
> 

memory slot id is currently defined as short. If I understand correctly,
you are saying that it'll become u32 when per-vcpu address space arrives,
right? It's certainly an issue for the current compaction. I'll need to
rework it.

Thanks!
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux