Profiling and Debugging the FreeBSD Kernel

Date Added: May 2009
Format: PDF

This paper provides an overview of the Profiling and Debugging tools available for FreeBSD 7.0 and later. These tools enable the developer to demystify the Kernel's internal workings, identify performance bottlenecks and determine appropriate parameter tuning. The paper should help reduce the guesswork involved in tuning the performance of FreeBSD, promoting actions informed by measurement. FreeBSD provides a rich toolset to aid a developer writing Kernel code. The paper discusses the tools and techniques that can aid the performance profiling of Kernelcode on FreeBSD 7.0. Kernel debugging and the management of multiple Kernel versions are also discussed. The default Kernel that FreeBSD installs is optimized for most workloads and supports the most commonly used hardware. This is referred to as the GENERIC Kernel. To query the Kernel a system is currently using, invoke the "Uname -a" command. An alternative process scheduler for FreeBSD is called the ULE scheduler. It has been shown to provide better performance for some workloads and replaces 4BSD as the default scheduler in more recent versions of FreeBSD (> FreeBSD 7.0). It is available in older versions of FreeBSD but must be enabled in the Kernel profile at compile time. But covers the tools found to be useful in improving the performance of FreeBSD Kernel code. As discussed, PmcStat was found to be the most useful of all the tools.