356 lines
13 KiB
XML
356 lines
13 KiB
XML
<?xml version="1.0" encoding="iso-8859-1" ?>
|
|
<!DOCTYPE report PUBLIC "-//FreeBSD//DTD FreeBSD XML Database for Status
|
|
Report//EN"
|
|
"http://www.FreeBSD.org/XML/www/share/xml/statusreport.dtd">
|
|
<!-- $FreeBSD$ -->
|
|
<report>
|
|
<date>
|
|
<month>May</month>
|
|
|
|
<year>2013</year>
|
|
</date>
|
|
|
|
<section>
|
|
<title>BSDCan 2013 DevSummit Special Status Report</title>
|
|
|
|
<p>This special status report contains a summary of the discussions
|
|
from the various working groups at the BSDCan 2013 DevSummit. The
|
|
&os; Project organizes DevSummits at various events, typically at
|
|
the major BSD conferences, so that developers can meet and discuss
|
|
matters in person.</p>
|
|
</section>
|
|
|
|
<project>
|
|
<title>Ports and Packages</title>
|
|
|
|
<contact>
|
|
<person>
|
|
<name>
|
|
<given>Erwin</given>
|
|
|
|
<common>Lansing</common>
|
|
</name>
|
|
|
|
<email>erwin@FreeBSD.org</email>
|
|
</person>
|
|
</contact>
|
|
|
|
<links>
|
|
<url href="http://people.freebsd.org/~bdrewery/poudriere-0515.pdf">
|
|
Slides on the status of Poudriere</url>
|
|
|
|
<url href="http://people.freebsd.org/~sson/imgact_binmisc/20130515-bsdcan-xbuild-ports.pdf">
|
|
Slides on QEMU-based cross-building</url>
|
|
</links>
|
|
|
|
<body>
|
|
<p>The working group on ports and packages discussed the fallout
|
|
from the security incident and the lessons learned. Old-style
|
|
binary package building is now online and the infrastructure for
|
|
building them is in a much more maintainable state. Building
|
|
<tt>pkg(8)</tt> (new-style) packages should be possible
|
|
soon.</p>
|
|
|
|
<p>Bryan Drewery presented a short talk on the status of
|
|
Poudriere, the new package builder. This is useable for building
|
|
package sets for local deployment and for the official &os;
|
|
packages. When the original package building infrastructure was
|
|
designed, it took most of a day to build a large port like
|
|
Mozilla on a high-end machine. Now, we have single machines in
|
|
the &os; cluster that can build the entire ports tree in a day.
|
|
Poudriere is designed for this model and does not rely on ports
|
|
supporting parallel builds internally. Instead, it builds each
|
|
port in a separate jail, with ports that do not depend on each
|
|
other being built in parallel when there are spare CPUs.</p>
|
|
|
|
<p>Moving forward, the project plans to decouple package releases
|
|
from base system releases. Each base system release is intended
|
|
to be backwards compatible within that release series and so any
|
|
packages for N.x should work on N.x+1. The project will build
|
|
weekly package sets for each branch that will be retained for
|
|
two weeks, with no QA, and monthly sets that will undergo QA and
|
|
will be available for 12 months.</p>
|
|
|
|
<p>Stacy Son and Brooks Davis talkes about packages for less
|
|
common architectures. Stacy has worked to bring QEMU usermode
|
|
support to &os;. This means that MIPS or ARM &os; binaries can
|
|
run on an x86 &os; system. The kernel will detect the foreign
|
|
binary and launch it in the emulator. Stacy has been using this
|
|
to create jails containing a cross compiler and shell for the
|
|
host architecture, but native libraries for the target. This
|
|
allows ports that are not cross-build aware to run configure
|
|
scripts that do things like compile executables and run them,
|
|
but still has the most processor-intensive part of the build
|
|
(compiling and linking) running outside of emulation. With this
|
|
approach, we are easily able to build weekly package sets for
|
|
MIPS and ARM on a single x86 box. For installing onto embedded
|
|
systems, there are still some open problems. The
|
|
<tt>pkg(8)</tt> infrastructure can install many packages onto a
|
|
disk image, but will not be able to run complex post-install
|
|
scripts without the target system booting.</p>
|
|
</body>
|
|
</project>
|
|
|
|
<project>
|
|
<title>UEFI</title>
|
|
|
|
<contact>
|
|
<person>
|
|
<name>
|
|
<given>Benno</given>
|
|
|
|
<common>Rice</common>
|
|
</name>
|
|
|
|
<email>benno@FreeBSD.org</email>
|
|
</person>
|
|
</contact>
|
|
|
|
<body>
|
|
<p>UEFI is the new boot firmware standard pushed by Intel. It
|
|
comes with a number of challenges, including the SecureBoot
|
|
restriction, that prevents the firmware from booting unsigned
|
|
kernels and bootloaders. This is not currently a problem, as
|
|
most systems either do not enable this restriction by default,
|
|
or make it easy to disable, but it will be more important in the
|
|
future.</p>
|
|
|
|
<p>The goal for UEFI support in &os; is to merge the bootloader
|
|
that is currently in the projects branch, which will perform
|
|
signature verification and then hand off to the more
|
|
conventional &os; bootloader. This loader will be very simple
|
|
and so will need changing (and re-signing) fairly infrequently.
|
|
The &os; Foundation will be responsible for ensuring that the
|
|
bootloader is signed and so will work with SecureBoot.</p>
|
|
|
|
<p>There are a number of restructuring and refactoring tasks that
|
|
will need to be done over the next few months to ensure that the
|
|
&os; boot process works cleanly with UEFI. These include
|
|
removing some code duplication between various platforms that
|
|
use UEFI, removing some legacy support from the i386 kernel, and
|
|
restructuring how some of the bootloader code is built.
|
|
Interaction with UEFI will be simplified once clang supports the
|
|
MS Windows calling convention (used by UEFI) when generating
|
|
UNIX binaries. Benno Rice has been working on this, with some
|
|
assistence from David Chisnall, and this support should appear
|
|
soon.</p>
|
|
</body>
|
|
</project>
|
|
|
|
<project>
|
|
<title>Network Receive Performance</title>
|
|
|
|
<contact>
|
|
<person>
|
|
<name>
|
|
<given>George</given>
|
|
|
|
<common>Neville-Neil</common>
|
|
</name>
|
|
|
|
<email>gnn@FreeBSD.org</email>
|
|
</person>
|
|
</contact>
|
|
|
|
<body>
|
|
<p>&os; has traditionally been a platform with support for very
|
|
high performance networking. This is one of the main reasons
|
|
why it was selected for the Netflix streaming appliance, which
|
|
is currently responsible for over 20% of the Internet traffic in
|
|
the USA. The goal of this session was to discuss current
|
|
bottlenecks at the receiving end of connections.</p>
|
|
|
|
<p>Modern network cards support multiple receive queues and can
|
|
deliver packets into them depending on various criteria. The
|
|
design of a good API for accessing this functionality is very
|
|
important, as it shortens the path between a packet arriving in
|
|
the card and it being delivered into a userspace process. In an
|
|
extreme case, for example with cluster applications or virtual
|
|
machines, the receive queue may be accessed directly from a
|
|
process bypassing the kernel. In a more conventional setting,
|
|
the packets should be delivered to a kernel thread on the same
|
|
CPU as the receiving process, so that the copy to userspace is
|
|
cheap.</p>
|
|
|
|
<p>The group examined a number of different proposals, including
|
|
some patches, and discussed the requirements for a general API.
|
|
This work is ongoing.</p>
|
|
</body>
|
|
</project>
|
|
|
|
<project>
|
|
<title>Beyond Buildworld...</title>
|
|
|
|
<contact>
|
|
<person>
|
|
<name>
|
|
<given>Brooks</given>
|
|
|
|
<common>Davis</common>
|
|
</name>
|
|
|
|
<email>brooks@FreeBSD.org</email>
|
|
</person>
|
|
</contact>
|
|
|
|
<body>
|
|
<p>Buildworld is the target for building the base system in the
|
|
venerable &os; build system. This session aimed to investigate
|
|
the current limitations, discuss recent improvements, and
|
|
propose future directions for this process.</p>
|
|
|
|
<p>Over recent years, &os; has been used increasingly in embedded
|
|
systems and so cross development has become a lot more
|
|
important. One of the changes recently committed by Brooks
|
|
Davis now permits building the entire base system and creating a
|
|
disk image without root privileges. This makes embedded
|
|
development easier, as a number of users can now share an
|
|
expensive development box, capabily of performing builds
|
|
quickly, without having to give all of them root.</p>
|
|
|
|
<p>This session also discussed the bmake import, which brings in
|
|
NetBSD's make along with some improvements from Juniper, which
|
|
should allow much more accurate dependency tracking and faster
|
|
parallel and incremental builds. This should have some
|
|
additional benefits to the rest of the project, for example by
|
|
making our tinderbox infrastcture, which notifies developers if
|
|
the have broken the build, able to report failures much more
|
|
quickly.</p>
|
|
|
|
<p>One frequently requested capability, which is now being
|
|
investigated by Marcel Moolenar, is the ability to build &os;
|
|
from other platforms. Currently, developing a &os;-based
|
|
embedded system requires a &os; host system for building, which
|
|
is a barrier to entry that we would like to avoid.</p>
|
|
|
|
<p>There are a number of changes to our toolchain planned for the
|
|
10.x and 11.x timescales, including replacing GNU binutils with
|
|
LLVM-based tools and importing MCLinker. These are unlikely to
|
|
be the default in 10.0, but we hope to be able to provide a
|
|
GPL-free base system as a functional option this year.</p>
|
|
</body>
|
|
</project>
|
|
|
|
<project>
|
|
<title>Virtualization</title>
|
|
|
|
<contact>
|
|
<person>
|
|
<name>
|
|
<given>Peter</given>
|
|
|
|
<common>Grehan</common>
|
|
</name>
|
|
|
|
<email>grehan@FreeBSD.org</email>
|
|
</person>
|
|
</contact>
|
|
|
|
<links>
|
|
<url href="http://people.freebsd.org/~grehan/bsdcan13_virt_ext.pdf">
|
|
Overall status slides</url>
|
|
|
|
<url href="http://people.freebsd.org/~gibbs/XenStatusBSDCan2013.pdf">
|
|
Xen status slides</url>
|
|
|
|
<url href="http://people.freebsd.org/~bryanv/pdfs/bsdcan2013_virtio.pdf">
|
|
VirtIO status slides</url>
|
|
|
|
<url href="http://people.freebsd.org/~grehan/bsdcan13_bhyve.pdf">
|
|
Bhyve slides</url>
|
|
</links>
|
|
|
|
<body>
|
|
<p>Virtualization is an increasingly important topic, with large
|
|
providers like Amazon deploying huge numbers of VMs and many
|
|
users deploying VMs on desktop systems for testing and backwards
|
|
compatibility. Today, &os; supports a wide variety of
|
|
virtualization options. This working group discussed the
|
|
current status and future directions of several of them.</p>
|
|
|
|
<p>Xen is the de-facto standard for large-scale virtualisation and
|
|
&os; has supported running as a guest for some time.
|
|
SpectraLogic has funded recent work on improving this, with two
|
|
overlapping goals. The first is to allow &os; to run as the
|
|
Domain 0 operating system. This is the operating system that
|
|
runs with elevated privilege and is allowed to talk directly to
|
|
the hardware and which must provide the virtualized devices to
|
|
the guests. This requires full paravirtualization support.
|
|
Related to this is the ability to use more paravirtualized
|
|
hardware when booting as a hardware virtualized guest. This
|
|
includes support for the new PVH mode, which uses hardware
|
|
support for memory operations but paravirtualized drivers for
|
|
everything else, giving the best performance possible with
|
|
Xen.</p>
|
|
|
|
<p>The &os; VirtualBox port is progressing well, with preliminary
|
|
support for 3D accleration in guests. The patches for
|
|
Microsoft's HyperV, provided by Microsoft, are currently being
|
|
tested with a view to incorporating them into &os; 10.</p>
|
|
|
|
<p>&os; also includes its own virtualization infrastructure, bhyve
|
|
(pronounced beehive), which is designed to support
|
|
hardware-assisted virtualization. This has made significant
|
|
progress over the past year, including now supporting AMD's
|
|
virtualization extensions as well as those from Intel. With so
|
|
many options, &os; is now very well placed in terms of
|
|
virtualization, both as a host and a guest.</p>
|
|
</body>
|
|
</project>
|
|
|
|
<project>
|
|
<title>Documentation</title>
|
|
|
|
<contact>
|
|
<person>
|
|
<name>
|
|
<given>Dru</given>
|
|
|
|
<common>Lavigne</common>
|
|
</name>
|
|
|
|
<email>dru@FreeBSD.org</email>
|
|
</person>
|
|
|
|
<person>
|
|
<name>
|
|
<given>Benedict</given>
|
|
|
|
<common>Reuschling</common>
|
|
</name>
|
|
|
|
<email>bcr@FreeBSD.org</email>
|
|
</person>
|
|
</contact>
|
|
|
|
<body>
|
|
<p>The documentation working group met during the main sessions
|
|
and also had several productive evenings improving the state of
|
|
&os; documentation.</p>
|
|
|
|
<p>The &os; Handbook has undergone some significant updates
|
|
recently and there is work underway to create a snapshot that
|
|
will be available as a professionally published print edition.
|
|
There are still some sections in need of updates before this can
|
|
happen and the documentation team is working on engaging the
|
|
relevant developers to review this content.</p>
|
|
|
|
<p>The &os; web site redesign was discussed. Currently, many of
|
|
the most commonly accessed pages are difficult to navigate to.
|
|
Its visual design is also somewhat dated. The documentation
|
|
team is working to design an improved structure and has several
|
|
offers of assistance with the appearance.</p>
|
|
|
|
<p>The &os; Project is international and many of the contributors
|
|
do not have English as their first language. To encourage more
|
|
participation from the rest of the world, it is important to
|
|
have high-quality translations of the documentation. PC-BSD
|
|
uses pootle (available from the &os; ports tree) to assist with
|
|
keeping translations consistent and up to date and we are
|
|
evaluating doing the same for &os;.</p>
|
|
|
|
<p>The documentation team plans to have a Docs Hackathon colocated
|
|
with the Cambridge DevSummit in August.</p>
|
|
</body>
|
|
</project>
|
|
</report>
|