EuroBSDCon 2008 - George Neville-Neil - Multicast Performance in FreeBSDSource: EuroBSDCon
Added: 22 October 2008
Tags: eurobsdcon, eurobsdcon2008, multicast, freebsd, george neville-neilMP3 (1 byte, 39 minutes), OGG (1 byte, 39 minutes), PDF (1 byte, n pages)
In the past ten years most of the research in network
protocols has gone into TCP, leaving UDP to languish
as a local configuration protocol. While the majority
of Internet traffic is TCP, UDP remains the only
IP protocol that works over multicast and as such
has some specific, and interesting uses in some
areas of computing. In 2008 we undertook a study
of the performance of UDP multicast on both 1Gbps
and 10Gbps Ethernet networks in order to see if
changing the physical layer of the network would
give a linear decrease in packet latency. To measure
the possible gains we developed a new network
protocol test program, mctest, which is capable of
recording packet round trip times from many hosts
simultaneously and which we believe accurately
represents how many environments use multicast. The
mctest program has been integrated into FreeBSD and
is now being used to verify the proper operation
of multicast on various pieces of 10Gbps hardware.

EuroBSDCon 2008 - George Neville-Neil - Four years of summer of codeSource: EuroBSDCon
Added: 22 October 2008
Tags: eurobsdcon, eurobsdcon2008, google soc, george neville-neilMP3 (1 byte, 27 minutes), OGG (1 byte, 27 minutes), PDF (1 byte, n pages)
The Google Summer of Code is a program designed to
provide students with real world experience
contributing to open source projects during the
summer break in university studies. Each year Google
selects a number of open source projects to act as
mentoring organizations. Students are invited to
submit project proposals for the open source projects
that are most interesting to them. FreeBSD was one
of the projects selected to participate in the
inaugural Summer of Code in 2005 and we have
participated each year since then. Over the past 4
years a total of 79 students have participated in
the program and it has become a very significant
source of new committers to FreeBSD. This talk will
examine in detail the selection criteria for projects,
the impact that successful projects have had, and
some suggestions for how we can better leverage
this program in the future.

Many modern CPUs provide on chip counters for
performance events such as retiring instructions
and cache misses. The hwpmc driver and libraries
in FreeBSD give systems administrators and programmers
access to APIs which make it possible to measure
performance without modifying source code and with
minimal intrusion into application execution. This
talk will be a brief introduction to HWPMC, and how
to use it.

Bio: George Neville-Neil is the co-author with Kirk
McKusick of The Design and Implementation of the
FreeBSD Operating System. He works on networking
an operating systems for fun and profit.

Network Protocol Development Tools and Techniques for FreeBSD
(211 Mb)Source: Bay Area FreeBSD Users Group
Added: 10 August 2006
Tags: bafug, presentation, freebsd, packet construction set, george neville-neilOur Topic:
Network Protocol Development Tools and Techniques for FreeBSD
Our Speaker:
George Neville-Neil, co-author of the "Design and
Implementation of the FreeBSD Operating System"
"daemon" book.
Our Topic:
While computers have gotten faster and more powerful
the tools we use to develop network protocols, such
as TCP, UDP, IPv4 and IPv6 have not. Most network
protocols are developed, in C, in the kernel, and
require a lot of work to test. Over the past year
or so I have been working with virtual machines, a
couple of pieces of open source software, and begun
developing a library for use in protocol testing.
This talk will cover three topics:

Developing and testing kernel code with Virtual Machines

Finding good tests for networking code

Packet Construction Set (PCS) a new library for
writing protocol tests

With the advent of widespread SMP and multicore CPU
architectures it was necessary to implement a new
scheduler in the FreeBSD operating system. The
SCHEDULE scheduler was added for the 5 series of
FreeBSD releases and has now matured to the point
where it is the default scheduler in the 7.1 release.
While scheduling processes was a difficult enough
task in the uniprocessor world, moving to multiple
processors, and multiple cores, has significantly
increased the number of problems that await engineers
who wish to squeeze every last ounce of performance
out of their system. This talk will cover the basic
design of SCHEDULE and focus a great deal of attention
on how to tune the scheduler for different workloads,
using the sysctl interfaces that have been provided
for that purpose.

Understanding and tuning a scheduler used to be
done only by operating systems designers and perhaps
a small minority of engineers focusing on esoteric
high performance systems. With the advent of
widespread multi-processor and multi-core architectures
it has become necessary for more users and
administrators to decide how to tune their systems
for the best performance. The SCHEDULE scheduler
in FreeBSD provides a set of sysctl interfaces for
tuning the scheduler at run time, but in order to
use these interfaces effectively the scheduling
process must first be understood. This presentation
will give an overview of how SCHEDULE works and
then will show several examples of tuning the system
with the interfaces provided.

The goal of modifying the scheduler's parameters
is to change the overall performance of programs
on the system. One of the first problems presented
to the person who wants to tune the scheduler is
how to measure the effects of their changes. Simply
tweaking the parameters and hoping that that will
help is not going to lead to good results. In our
recent experiments we have used the top(1) program
to measure our results.

In this tutorial I will describe how to write and
maintain network drivers in FreeBSD and use the
example of the Intel Gigabit Ethernet driver (igb)
throughout the course.

Students will learn the basic data structures and
APIs necessary to implement a network driver in
FreeBSD. The tutorial is general enough that it can
be applied to other BSDs, and likely to other
embedded and UNIX like systems while being specific
enough that given a device and a manual the student
should be able to develop a working driver on their
own. This is the first of a series of lectures on
network that I am developing over the next year or
so.