The nitty gritty
The proceedings of the Linux Symposium 2009 provide wide-ranging background information on Linux
by Thorsten Leemhuis
Text versions of the presentations given at the Linux Symposium 2009 are now available as a PDF file. They provide wide-ranging information on current and future Linux kernel-related developments. The spectrum ranges from profiling using Ftrace, through recent changes to the PCI subsystem intended to make suspend and standby more robust, to the latest developments, such as topology patches, in 2.6.31 and the Kernel Shared Memory infrastructure planned for 2.6.32.
The organisers of, and speakers at, the Linux Symposium (formerly the Ottawa Linux Symposium/OLS), held in Montreal in July, have once again released text versions of many of the presentations given at the event. These contain much more than just the usual presentation slides – the proceedings 340 page document contain heaps of information relating to all aspects of Linux.
Since speakers included numerous kernel developers, many of the presentations deal with the background to current, or future, Linux kernel-related developments. Nevertheless, there are also several presentations dealing with userspace software. This article touches on some of the topics addressed at the Linux Symposium of more importance for Linux and its future with the aim of helping you find your way around the original presentations.
Please note the numbered PDF page links in this article only open the referenced page directly in the browser if you are using Adobe Reader. Otherwise, we recommend you download the PDF file, and browse it in your preferred viewer.
Consolidating memory areas
Three Red Hat employees submitted a presentation entitled "Increasing memory density by using KSM" (page 19). The abbreviation stands for "Kernel Shared Memory" or "Kernel Samepage Merging" depending on taste, and refers to a framework which searches memory from multiple processes for identical memory pages – if it finds any, it combines them into a single page, reducing memory usage by freeing up the now unused copies. The presentation explains how this is able to work without leading to chaos when one process makes changes to a shared memory page.
KSM was primarily developed for the KVM (Kernel-based Virtual Machine) virtualisation solution; the developers see large potential savings where multiple similar guest operating systems are running on a single computer. According to the developers, in this sort of set-up, large parts of the data stored in the guests' virtual RAM are identical.
KSM was originally scheduled to be merged into version 2.6.31 of the main Linux development tree, but KSM and kernel developers subsequently agreed that there were a number of further changes still needing implementation and agreed to aim to merge into 2.6.32. Work on these changes is currently on schedule. Background information on KSM can be found in the LWN.net articles "/dev/ksm: dynamic memory sharing" and "KSM tries again". The patent problems outlined in the articles do not appear to relate to the code to be merged into Linux.
The presentation "Transcendent Memory and Linux" (page 191) by three Oracle employees deals with various aspects of memory management for guest systems (there has also been a recent article on this topic in Linux Weekly News). "Linux-based virtualisation for HPC clusters" (page 221) by researchers from the French state research centre CNRS looks at virtualisation in HPC clusters.
Taking a closer look
The fact that speed analysis and debugging are hot topics in the Linux world right now is illustrated by the large number of presentations on this issue.
In "Measuring Function Duration with Ftrace" (page 47), for example, Tim Bird from Sony explains how to use the Ftrace (function tracer) tracking framework, which was merged into the kernel in Linux 2.6.27. With it, the code execution time required for any particular function can be measured so sections of code that are ripe for optimisation can be found. In his presentation, Bird describes the current state of affairs with the ever changing tracing infrastructure and explains how to restrict analysis to specific areas of the kernel using filters. A number of recent LWN.net articles have also taken a look at Ftrace, including "A look at ftrace" and "On the value of static tracepoints".
Tracing was also the subject of the presentation "Combined Tracing of the Kernel and Applications with LTTng" (page 87). The approach described in this article uses LTTng, which was developed independently from the kernel and relies on a kernel patch.
Jason Baron's presentation "Dynamic Debug" (page 39) looks at error tracing. He discusses the use of the "Dynamic Debug" framework, which has been integrated into the main Linux development tree since version 2.6.28. This can be used to turn on certain kernel outputs retroactively in order to determine the cause of a problem – previously it had usually been necessary to recompile the kernel with debugging options activated.
The presentation from IBM's Prasad Krishnan, entitled "Hardware Breakpoint (or watchpoint) usage in Linux Kernel" (page 149), goes into the intricacies of profiling and tracing. Analysing memory dumps is the topic of "Programmatic Kernel Dump Analysis On Linux" (page 251).