Port-xen archive

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

Project "Xen Paravirtualized Multi Processor Support"



        Hello,

the i386 and amd64 ports of NetBSD both offer extensive support for the
Xen Hypervisor. This includes running a NetBSD kernel in paravirtualised (PV)
mode as the dom0 (the virtual machine instance controlling the hardware of
the host system) and domU (a normal virtual instance). Support for
paravirtualization is mandatory for dom0 and greatly improves performance
of a domU as no hardware emulation is required. Paravirtualization also
allows using Xen on CPUs without hardware virtualization support.

At the moment NetBSD doesn't support using multiple CPUs (or CPU cores)
when it runs in paravirtualised mode. This is not only a severe performance 
limitation on modern x86 hardware it also makes NetBSD a suboptimal
platform for use on Amazon EC2 service (which uses images of paravirtualized
Xen domU systems).

The Core team and the Board of the NetBSD project have created the attached
specification for funded development to add Xen Paravirtualized Multi Processor
Support to NetBSD. If you are interested in realizing this project send
a proposal to <core%NetBSD.org@localhost> and <board%NetBSD.org@localhost>, 
please.

        Kind regards

Matthias Scheler
On behalf of the board of directors

$NetBSD: 201009-XenMP,v 1.1 2010/09/05 13:51:46 tron Exp $

Targeted Development
====================

1. Project name

201009 - Xen Paravirtualized Multi Processor Support

2. Project Description

The i386 and amd64 ports of NetBSD both offer extensive support for the
Xen Hypervisor. This includes running a NetBSD kernel in paravirtualised (PV)
mode as the dom0 (the virtual machine instance controlling the hardware of
the host system) and domU (a normal virtual instance). Support for
paravirtualization is mandatory for dom0 and greatly improves performance
of a domU as no hardware emulation is required. Paravirtualization also
allows using Xen on CPUs without hardware virtualization support.

At the moment NetBSD doesn't support using multiple CPUs (or CPU cores)
when it runs in paravirtualised mode. This is not only a severe performance 
limitation on modern x86 hardware it also makes NetBSD a suboptimal
platform for use on Amazon EC2 service (which uses images of paravirtualized
Xen domU systems).

The goal of this project is to add the Xen Paravirtualized Multi Processor
Support to NetBSD. This will require a number of kernel changes. The most
significant part will be improvements to the machine-dependent portion of
the virtual memory system. The i386 and amd64 ports use atomic operations
to update PTE entries to avoid using locking. This approach can however not
be used under Xen where the page table is mapped read-only in the kernel.
Updates require calls to the HyperVisor which are currently protected in
an SMP-unsafe manner via spl(9) functions.

3. Deliverables

In order of priority:

  * NetBSD PV domU using multiple CPUs for amd64, i386 and i386PAE
  * NetBSD PV dom0 using multiple CPUs for amd64, i386 and i386PAE

4. Brief outline of expected timescales, and milestones

Suggested milestones are:
   1. Probing and startup of secondary CPUs by a domU kernel,
      receiving clock interrupts on all CPUs.
   2. A domU kernel with an SMP-safe pmap(9) implementation that
      allows to fully use multiple CPUs.
   3. An SMP-safe dom0 kernel

Additional stretch goals are:
   4. SMP-safe Xen frontend and backend drivers.
   5. Interrupt distribution across different CPUs

It is expected that the first two milestones will take the most time as
they form the majority of the project.

6. Brief explanation of skillset needed

Knowledge of Xen internals and i386 and x86_64 instruction set.

7. Test Suites to be delivered

Performance comparisons between a NetBSD Xen paravirtualized domU using
multiple CPUs and a NetBSD HVM domU using the same number of CPUs.

Project Developer
=================

8. Login name of developer allocated

9. Brief outline of skillset of developer


Notes
=====

10.  Core will manage all the targeted development projects
11.  A presence on IRC (mollari.NetBSD.org), #NetBSD channel is recommended.
12.  Payment will be triggered by board approval, going on a
recommendation from core, when the project has finished, and when all
aspects of the project have been delivered
13.  No interim payments will be made
14.  Any board or core members who are bidding for, or carrying out, any
work must declare an interest; they must then recuse themselves from
everything related to targeted development on that project
15.  Weekly progress reports will be made to developers@, stating
progress from previous week, expected work for the next week, and any
issues or concerns that may arise. A maximum of 6 lines is wanted.

Attachment: pgp11ZpVYmqRN.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index