All of lore.kernel.org
 help / color / mirror / Atom feed
* RE: mini-guest io emulation
@ 2006-03-13  5:04 Nakajima, Jun
  2006-03-13  8:03 ` Keir Fraser
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Nakajima, Jun @ 2006-03-13  5:04 UTC (permalink / raw)
  To: Ian Pratt, xen-devel

Ian Pratt wrote:
> Folks,
> 
> At the last summit I presented a proposal for rearchitecting the way
> we do io emulation for fully-virtualized (hvm) guests. I'd really
> like to try and get the work to implement this underway, as it cleans
> up a bunch of mess, is a prerequisite for save/restore/relocation of
> hvm guests, and is a precursor to some significant performance
> improvements. It involves a fair chunk of work, so we really want to
> try and get multiple folk working on it.
> 
> The plan is to move the io emulation code (qemu-dm) from running as a
> user-space app in domain 0 into a 'mini guest' that is effectively a
> small paravirtualized guest in the root hardware context associated
> with each hvm domain.
> 
> I guess a very high-level work plan would look something like this:
> 
> * get minios running well on x86_64; add a few simple infrastructure
> functions e.g. simple memory allocator. No need for any 'user space'
> mmu support
> * port (simplified)xenbus/netfront/blkfront to minios; test simple
> net/disk IO
> * implement enough infrastructure to allow qemu-dm to be compiled into
> minios, calling into net/blkfront for IO.
> * plumb the vmexit entry points from MMIO and in/out into minios and
> hence qemu-dm

For the "mini guest", I think it could be much easier if we
substantially strip down xenlinux rather than adding (eventually) a lot
of stuff to the current mini-os, mainly because we need probably a
multi-threaded run-time environment, scheduler, memory allocator, event
handling, drivers such as xenbus/netfront/blkfront, etc. At least, I
think we can use xenlinux as the development platform. For example,
implement the qemu-dm as a driver adding the infrastructure required
(e.g. small in-kernel glibc).

> 
> Once the above is working we'll be in good shape. We can remove all
> the skany qemu-dm support from the tools as from their POV paravirt
> and hvm guests will look identical. It should also be easy to
> implement save/restore of hvm guests -- just save the miniguest as
> part of the hvm guests', memory image. The next stage would then be
> to improve performance by enhancing the device models, e.g. adding a
> network card that suports jumbo frames and csum offload, and requires
> fewer vmexits in operation.
> 
> How best to move forward on this? Any volunteers?
> 
> Thanks,
> Ian
> 

Jun
---
Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 13+ messages in thread
* RE: mini-guest io emulation
@ 2006-03-13 18:45 Nakajima, Jun
  0 siblings, 0 replies; 13+ messages in thread
From: Nakajima, Jun @ 2006-03-13 18:45 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: Ian Pratt, xen-devel

Anthony Liguori wrote:
> Nakajima, Jun wrote:
>> For the "mini guest", I think it could be much easier if we
>> substantially strip down xenlinux rather than adding (eventually) a
>> lot of stuff to the current mini-os, mainly because we need probably
>> a multi-threaded run-time environment, scheduler, memory allocator,
>> event handling, drivers such as xenbus/netfront/blkfront, etc. At
>> least, I think we can use xenlinux as the development platform. For
>> example, implement the qemu-dm as a driver adding the infrastructure
>> required (e.g. small in-kernel glibc). 
>> 
> Once you get past vl.c, qemu-dm has very little reliance on glibc
> functions.  Since we're only trying to do hardware emulation here, I'd
> expect that vl.c would not be included.

I think it depends on how much code we borrow from Linux to get the
netfront/blkfront working. We don't need the plumbing code for
user-level apps, but we need to identify which networking/block layer
code we need for hardware emulation (and virutal device drivers, such as
VBD/VIF for HVM guests). The dependencies in the code often cause the
domino effect, ending up with a lot of codes.

> 
> I suspect stripping down Linux is going to prove harder in the long
> run.  As Jacob mentioned, you only really need a simple page
> allocator. The only reasons I can think of to use threads is XenBus
> (threads shouldn't be required to implement it) and asynchronous IO.
I agree that in the long run Linux-based mini-OS will be harder, and it
depends on how soon we need it. If it's a couple of months of timeframe
(which was in my mind), I would choose xenlinux to start with -- cut the
code as much as possible so that we only use the kernel threads and
drivers. You can easily tell if you broke it because you start from
something working fine. 

The reason we need threads and scheduling is to handle simultaneous I/O
requests from SMP HVM guests. Getting reliable SMP environment is not a
trivial thing.

Jun
---
Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 13+ messages in thread
* RE: mini-guest io emulation
@ 2006-03-13  0:06 Puthiyaparambil, Aravindh
  0 siblings, 0 replies; 13+ messages in thread
From: Puthiyaparambil, Aravindh @ 2006-03-13  0:06 UTC (permalink / raw)
  To: Ian Pratt, xen-devel; +Cc: Grzegorz Milos

Ian,

Gregor and I have been working on getting Mini-OS to run on x86_64. Here
is the status:

- The hypercall interface has been updated to reflect XenLinux. 
- x86_64 pagetable builder was added. 
- I am currently working on getting the scheduler to work in x86_64 mode
(I will check in something in a couple of days)
- I think Gregor is working on console support. 

Some of the other things that need to be done are:
- Fix traps.c
	a) To show more useful information.
	b) Fix pagetable walk.

- x86_32 PAE

- Look into the stack overrun issue.

We will shortly also have a couple of more people from Unisys investing
time in this effort. 

Thanks,
Aravindh

> -----Original Message-----
> From: xen-devel-bounces@lists.xensource.com [mailto:xen-devel-
> bounces@lists.xensource.com] On Behalf Of Ian Pratt
> Sent: Sunday, March 12, 2006 4:26 PM
> To: xen-devel
> Subject: [Xen-devel] mini-guest io emulation
> 
> 
> Folks,
> 
> At the last summit I presented a proposal for rearchitecting the way
we
> do io emulation for fully-virtualized (hvm) guests. I'd really like to
> try and get the work to implement this underway, as it cleans up a
bunch
> of mess, is a prerequisite for save/restore/relocation of hvm guests,
> and is a precursor to some significant performance improvements. It
> involves a fair chunk of work, so we really want to try and get
multiple
> folk working on it.
> 
> The plan is to move the io emulation code (qemu-dm) from running as a
> user-space app in domain 0 into a 'mini guest' that is effectively a
> small paravirtualized guest in the root hardware context associated
with
> each hvm domain.
> 
> I guess a very high-level work plan would look something like this:
> 
> * get minios running well on x86_64; add a few simple infrastructure
> functions e.g. simple memory allocator. No need for any 'user space'
mmu
> support
> * port (simplified)xenbus/netfront/blkfront to minios; test simple
> net/disk IO
> * implement enough infrastructure to allow qemu-dm to be compiled into
> minios, calling into net/blkfront for IO.
> * plumb the vmexit entry points from MMIO and in/out into minios and
> hence qemu-dm
> 
> Once the above is working we'll be in good shape. We can remove all
the
> skany qemu-dm support from the tools as from their POV paravirt and
hvm
> guests will look identical. It should also be easy to implement
> save/restore of hvm guests -- just save the miniguest as part of the
hvm
> guests', memory image. The next stage would then be to improve
> performance by enhancing the device models, e.g. adding a network card
> that suports jumbo frames and csum offload, and requires fewer vmexits
> in operation.
> 
> How best to move forward on this? Any volunteers?
> 
> Thanks,
> Ian
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 13+ messages in thread
* mini-guest io emulation
@ 2006-03-12 21:26 Ian Pratt
  2006-03-14  8:40 ` Tristan Gingold
  2006-03-15  3:03 ` Edwin Zhai
  0 siblings, 2 replies; 13+ messages in thread
From: Ian Pratt @ 2006-03-12 21:26 UTC (permalink / raw)
  To: xen-devel


Folks,

At the last summit I presented a proposal for rearchitecting the way we
do io emulation for fully-virtualized (hvm) guests. I'd really like to
try and get the work to implement this underway, as it cleans up a bunch
of mess, is a prerequisite for save/restore/relocation of hvm guests,
and is a precursor to some significant performance improvements. It
involves a fair chunk of work, so we really want to try and get multiple
folk working on it.

The plan is to move the io emulation code (qemu-dm) from running as a
user-space app in domain 0 into a 'mini guest' that is effectively a
small paravirtualized guest in the root hardware context associated with
each hvm domain. 

I guess a very high-level work plan would look something like this:

* get minios running well on x86_64; add a few simple infrastructure
functions e.g. simple memory allocator. No need for any 'user space' mmu
support
* port (simplified)xenbus/netfront/blkfront to minios; test simple
net/disk IO
* implement enough infrastructure to allow qemu-dm to be compiled into
minios, calling into net/blkfront for IO.
* plumb the vmexit entry points from MMIO and in/out into minios and
hence qemu-dm

Once the above is working we'll be in good shape. We can remove all the
skany qemu-dm support from the tools as from their POV paravirt and hvm
guests will look identical. It should also be easy to implement
save/restore of hvm guests -- just save the miniguest as part of the hvm
guests', memory image. The next stage would then be to improve
performance by enhancing the device models, e.g. adding a network card
that suports jumbo frames and csum offload, and requires fewer vmexits
in operation.

How best to move forward on this? Any volunteers?

Thanks,
Ian

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2006-03-15 10:00 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-13  5:04 mini-guest io emulation Nakajima, Jun
2006-03-13  8:03 ` Keir Fraser
2006-03-13 12:01   ` Mark Ryden
2006-03-13 12:18     ` Jacob Gorm Hansen
2006-03-13 12:02 ` Jacob Gorm Hansen
2006-03-13 12:41   ` Grzegorz Milos
2006-03-13 16:25 ` Anthony Liguori
  -- strict thread matches above, loose matches on Subject: below --
2006-03-13 18:45 Nakajima, Jun
2006-03-13  0:06 Puthiyaparambil, Aravindh
2006-03-12 21:26 Ian Pratt
2006-03-14  8:40 ` Tristan Gingold
2006-03-15  3:03 ` Edwin Zhai
2006-03-15 10:00   ` Keir Fraser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.