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

Re: [Xen-ia64-devel] Re: PMT table for XEN/IA64 (was: RE: Transparentparavirtualization vs. xen paravirtualization)



I'm still not clear about the details.  Could you outline the changes
that you want to make to Xen/ia64?

Would DomU have a PMT?  Surely DomU should not know about real machine
addresses, that should be hidden behind the grant table interface.
Otherwise migration, save/restore, etc. are difficult (as they have
found on x86).

Do you know how x86 shadow_translate mode works?  Perhaps we should
use that as an example.

Matt


On Mon, Oct 31, 2005 at 05:11:09PM +0800, Tian, Kevin wrote:
> Matt Chapman wrote:
> > 1. Packet arrives in a Dom0 SKB.  Of course the buffer needs
> >    to be page sized/aligned (this is true on x86 too).
> > 2. netback steals the buffer
> > 3. netback donates it to DomU *without freeing it*
> > 4. DomU receives the frame and passes it up its network stack
> > 5. DomU gives away other frame(s) to restore balance
> > 6. Dom0 eventually receives extra frames via its balloon driver
> > 
> > 5 and 6 can be done lazily in batches.  Alternatively, 4 and 5
> > could be a single "flip" operation.
> 
> The solution will work with some tweaks.  But is there any obvious benefit 
> than PMT approach used on x86? (If yes, you should suggest to xen-devel;-) 
> Usually we want a different approach for either "can't do on this 
> architecture" or "far better performance than existing one". Or else why we 
> derail from Xen design for extra maintainance effort.  This extra effort has 
> causing us 2+ weeks to get VBD up to support DomU for the last 2 upstream 
> merges
> 
> > 
> > I think this is not significantly different from x86.
> > 
> > I'm not saying this is necessarily better than a PMT solution,
> > but I want to discuss the differences and trade-offs.  By PMT
> > I assume you mean to make Dom0 not 1:1 mapped, and then give
> > it access to the translation table?  Can you describe how the
> > above works differently with a PMT?
> 
> 
> Simply saying the work flow, PMT approach is similar with backend/frontend 
> needed to touch PMT table for ownership change. However do you evaluate how 
> many tricky changes required to support Domain0 with gpn=mfn upon existing 
> code? For example,
>       - Backend drivers are not bound to dom0, which can also be used by domU 
> as driver domain. At that time, 1:1 mapping has no sense there.  There are 
> some talks on DomU servers as driver IO already.
>       - You need ensure all available pages granted to dom0. That means you 
> need change current dom0 allocation code. 
>       - You need to change current vnif code with - unknown - #ifdefs and 
> workarounds, since you implement a new behavior on top of different approach.
>       - ... (maintenance!)
> 
> So if you implement a VM from scratch, then definitely your approach is 
> worthy of trying since no limitation there. However since we work on XEN, we 
> should take advantage of current Xen design as possible, right? ;-)
> 
> > 
> > One disadvantage I see of having Dom0 not 1:1 is that superpages
> > are more difficult, we can't just use the guest's superpages.
> 
> 
> Superpages are optimization option, and we still need to support incontiguous 
> pages as a basic requirement. You can still add option to allocate contiguous 
> pages for guest even with PMT table, since para-virtualization is cooperative.
> 
> > 
> > Also, are there paravirtualisation changes needed to support a
> > PMT?  I'm concerned about not making the paravirtualisation
> > changes too complex (I think x86 Xen changes the OS too much).
> > Also, it should be possible to load Xen frontend drivers into
> > unmodified OSs (on VT).
> 
> 
> We need balance between new designs and maintainance effort. Currently 
> Xiaofeng Lin from Intel is working on para-drivers for unmodified domain, and 
> both VBD & VNIF are working for x86 VT domains already and are reviewing by 
> Cambridge. This work is based on PMT table.
> 
> Kevin
> > 
> > On Mon, Oct 31, 2005 at 01:28:43PM +0800, Tian, Kevin wrote:
> >> Hi, Matt,
> >> 
> >>    The point here is how to check donated frame done and where "free"
> >> actually happens in domU. Currently Linux network driver utilizes
> >> zero-copy to pass received packet up without any copy. In this case,
> >> the receive pages are allocated from skbuff, which however is freed
> >> by upper layer instead of vnif driver itself. To let dom0 know when
> >> the donated page is done, you may either:     
> >>    - Copy content from donated page to local skbuff page, and then
> >> notify dom0 immediately at the cost of performance 
> >>    - Modify upper layer code to register "free" hook which notify dom0
> >> if done at the cost of more modification to common code and bias
> >> from x86.  
> >> 
> >>    Definitely there're other possibilities to make it "working" by
> >> this approach and even more alternatives. However the point we
> >> really want to emphasize here is that we can move towards x86
> >> solution by adding PMT, with best performance and less maintenance
> >> effort. That can actually minimize our future re-base effort when
> >> para-drivers keep going. ;-)     
> >> 
> >> Thanks,
> >> Kevin
> >> 
> >>> -----Original Message-----
> >>> From: Matt Chapman [mailto:matthewc@xxxxxxxxxxxxxxx]
> >>> Sent: 2005å10æ31æ 13:09
> >>> To: Tian, Kevin
> >>> Cc: Dong, Eddie; xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> >>> Subject: Re: [Xen-ia64-devel] Re: PMT table for XEN/IA64 (was: RE:
> >>> Transparentparavirtualization vs. xen paravirtualization)
> >>> 
> >>> Yes, I think I understand the problem now.
> >>> 
> >>> The way I imagine this could work is that Dom0 would know about all
> >>> of the memory in the machine (i.e. it would be passed the original
> >>> EFI memmap, minus memory used by Xen).
> >>> 
> >>> Then Dom0 would donate memory for other domains (=ballooning).
> >>> Dom0 can donate data frames to DomU in the same way - by granting
> >>> the frame and not freeing it.  When DomU donates a data frame to
> >>> Dom0, Dom0 frees it when it is done, and now the kernel can use it.
> >>> 
> >>> What do you think of this approach?
> >>> 
> >>> Matt
> >>> 
> >>> 
> >>> On Mon, Oct 31, 2005 at 11:09:04AM +0800, Tian, Kevin wrote:
> >>>> Hi, Matt,
> >>>>  It's not related to mapped virtual address, but only for
> >>>> physical/machine pfn. 
> >>> Current vnif backend (on x86) works as:
> >>>> 
> >>>> 1. Allocate a set of physical pfns from kernel
> >>>> 2. chop up the mapping between physical pfn and old machine pfn
> >>>> 3. Transfer ownership of old machine pfn to frontend
> >>>> 4. Allocate new machine pfn and bound to that physical pfn
> >>>> (In this case, there's no ownership return from frontend for
> >>>> performance reason) 
> >>>> 
> >>>>  If without PMT table (Assuming guest==machine for dom0), that
> >>>> means you 
> >>> have to hotplug physical pfns from guest (based on page
> >>> granularity) based on current vnif model. Or maybe you have better
> >>> alternative without PMT, and without big change to existing vnif
> >>> driver simultaneously? 
> >>>> 
> >>>> Thanks,
> >>>> Kevin
> >>>> 
> >>>>> -----Original Message-----
> >>>>> From: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
> >>>>> [mailto:xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
> >>>>> Matt Chapman Sent: 2005å10æ31æ 10:59 To: Dong, Eddie
> >>>>> Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> >>>>> Subject: [Xen-ia64-devel] Re: PMT table for XEN/IA64 (was: RE:
> >>>>> Transparentparavirtualization vs. xen paravirtualization)
> >>>>> 
> >>>>> Hi Eddie,
> >>>>> 
> >>>>> The way I did it was to make the address argument to grant
> >>>>> hypercalls in/out; that is, the hypervisor might possibly return
> >>>>> a different address than the one requested, like mmap on UNIX.
> >>>>> 
> >>>>> For DomU, the hypervisor would map the page at the requested
> >>>>> address.  For Dom0, the hypervisor would instead return the
> >>>>> existing address of that page, since Dom0 already has access
> >>>>> to the whole address space.
> >>>>> 
> >>>>> (N.B. I'm referring to physical/machine mappings here; unlike
> >>>>> the x86 implementation where the grant table ops map pages
> >>>>> directly into virtual address space).
> >>>>> 
> >>>>> Matt
> >>>>> 
> >>>>> 
> >>>>> On Fri, Oct 28, 2005 at 10:28:08PM +0800, Dong, Eddie wrote:
> >>>>>>>  Page flipping should work just fine
> >>>>>>> in the current design; Matt had it almost working (out of tree)
> >>>>>>> before he went back to school.
> >>>>>>> 
> >>>>>> Matt:
> >>>>>>        Dan mentioned that you had VNIF work almost done without PMT
> >>>>>> table support for dom0, Can you share the idea with us?
> >>>>>>        Usually VNIF swap page between dom0 and domU so that network
> >>>>>> package copy (between dom0 native driver and domU  frontend
> >>>>>> driver) can be avoided and thus achieve high performance. With
> >>>>>> this swap, we can no longer assume dom0 gpn=mfn. So what did you
> >>>>>>        ever propose to port VNIF without PMT table? Thanks a lot, eddie
> >>>>> 
> >>>>> _______________________________________________
> >>>>> Xen-ia64-devel mailing list
> >>>>> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> >>>>> http://lists.xensource.com/xen-ia64-devel
> > 
> > _______________________________________________
> > Xen-ia64-devel mailing list
> > Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-ia64-devel

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.