FreeBSD Foundation Projects
Improving the Hardware Performance Counter Support
Project Status: Completed August 6, 2007
FreeBSD Developer: Joseph Koshy
The FreeBSD Foundation, with a generous grant from Google, teamed up to sponsor Joseph Koshy in improving the hardware performance counter support in FreeBSD. The goal of the project was the addition of callgraph support in the hwpmc driver. With callgraph support, developers can more clearly visualize performance issues through the exact code paths, rather than a specific function which may only exhibit issues through one path, but not others. In addition to the improvements to this software, Google provided funding for 2 modern CPU machines for development and testing. These new machines were placed in the network performance cluster hosted by Sentex Corp in Ontario, Canada.
Following is a more detailed list of what was added:
- The hwpmc driver now supports callchain capture, for both the kernel and for user processes.
- The machine-dependent and machine-independent parts of the kernel for the i386 and amd64 architectures (the ones that hwpmc is available on) have been so enhanced to support extra funcctionality needed by hwpmc(4) for callgraph support.
- The libpmc(3) library has been enhanced to process the new information collected by the kernel module.
- The pmcstat(8) tool produces two kinds of reports using captured callchain data, (a) traditional gprof(1) callgraphs and (b) a callchain summary, for two different 'views' into the collected data.
- Manual pages for the driver hwpmc(4), command-line tool pmcstat(8), and interface library pmc(3) now reflect the new features available.
How to access the code
The callchain capture work is in CVS now.
Network Stack Virtualization Project
Project Status: In Progress
FreeBSD Developer: Marko Zec
The network stack virtualization project aims at extending the FreeBSD kernel to maintain multiple independent instances of networking state. This will allow for complete networking independence between jails on a system, including giving each jail its own firewall, virtual network interfaces, rate limiting, routing tables, and IPSEC configuration.
The prototype, which is kept in sync with FreeBSD -CURRENT, is now sufficiently stable for testing. It virtualizes the basic INET and INET6 kernel structures and subsystems, including IPFW and PF firewalls, and more. The next step is to have the IPSEC code fully virtualized, and refine and document the management APIs. The short-term goal is to deliver production-grade kernel support for virtualized networking for FreeBSD 7.0-RELEASE (as a snap-in kernel replacement), while continuing to keep the code in sync with -CURRENT for possible merging at a later date.
