RE: [RFC Design Doc]Speed up live migration by skipping free pages

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

 



> > > Sorry, why do I think what? That ram_addr_t is not guaranteed to
> > > equal GPA of the block?
> > >
> >
> > I mean why do you think that's can't guaranteed to work.
> > Yes, ram_addr_t is not guaranteed to equal GPA of the block. But I
> > didn't use them as GPA. The code in the filter_out_guest_free_pages()
> > in my patch just follow the style of the latest change of
> ram_list.dirty_memory[].
> >
> > The free page bitmap got from the guest in my RFC patch has been
> > filtered out the 'hole', so the bit N of the free page bitmap and the
> > bit N in ram_list.dirty_memory[DIRTY_MEMORY_MIGRATION]->blocks are
> > corresponding to the same guest page.  Right?
> > If it's true, I think I am doing the right thing?
> >
> >
> > Liang
> 
> There's no guarantee that there's a single 'hole'
> even on the PC, and we want balloon to be portable.
> 

As long as we know how many 'hole' and where the holes are.
we can filter out them. QEMU should have this kind of information.
I know my RFC patch passed an arch specific free page bitmap is not
a good idea. So in my design, I changed this by passing a loose free page
bitmap which contains the holes, and let QEMU to filter out the holes
according to some arch specific information. This can make balloon be portable.
  
> So I'm not sure I understand what your patch is doing, do you mean you pass
> the GPA to ram addr mapping from host to guest?
> 

No, my patch passed the 'lowmem', which helps to filter out the hole from host to guest.
The design has changed this.

> That can be made to work but it's not a good idea, and I don't see why would
> it be faster than doing the same translation host side.
> 

It's faster because there is no address translation, most of them are bitmap operation.

Liang

> 
> > > E.g. HACKING says:
> > > 	Use hwaddr for guest physical addresses except pcibus_t
> > > 	for PCI addresses.  In addition, ram_addr_t is a QEMU internal
> > > address
> > > 	space that maps guest RAM physical addresses into an intermediate
> > > 	address space that can map to host virtual address spaces.
> > >
> > >
> > > --
--
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