Measuring Ubuntu's Boot Performance
Last year leading up to the release of Ubuntu 7.04 "Feisty Fawn" and Ubuntu 7.10 "Gutsy Gibbon" we had published several articles looking at various aspects of this desktop Linux distribution. These articles had varied from looking at Ubuntu's power consumption for the past six major releases to presenting the visual history of Ubuntu and how its graphics have evolved since Ubuntu 4.10. With Ubuntu 8.04 "Hardy Heron" shipping in just two months, we are once again looking at Ubuntu from several points of view. In this article, we are looking at Ubuntu's boot performance for the past five releases through the use of Bootchart for measuring its boot time, disk throughput, and the running processes.
While we have published hundreds of articles looking at various aspects of Linux desktop performance, one area we haven't covered much with Ubuntu (or any other Linux distribution for that matter) is surrounding the boot performance. However, there is an excellent open-source package available for analyzing the Linux boot process and that is Bootchart. Bootchart works by modifying GRUB (or the LILO boot-loader) to load a boot logger (bootchartd) that records system information such as the CPU statistics, idle times, disk statistics, and running processes. Once the system has fully booted, the information is written to the disk and can then be visualized using the Bootchart Java application that creates a performance/dependency chart in PNG, SVG, or EPS image formats. The latest release of Bootchart is v0.9, which had happened back in 2005.
Bootchart has been around for several years and can be found in the package repositories of most Linux distributions, with Ubuntu being no exception. Installing Bootchart in any of the recent Ubuntu releases is as easy as sudo apt-get install bootchart, which will install and automatically modify GRUB to utilize Bootchart when booting to Linux. The results of Bootchart on Ubuntu are written as PNG graphs in /var/log/bootchart/. Written to the graph are the complete boot time, CPU and disk usage, and the boot processes along with the time they've started, ended, and utilization data.
With Bootchart we have went back and performed clean installations of Ubuntu 6.06.1 LTS, Ubuntu 6.10, Ubuntu 7.04, Ubuntu 7.10, and an Ubuntu 8.04 LTS development build to analyze their boot performance. The Ubuntu 8.04 development copy was a daily build from February 7. We had installed each of these Ubuntu releases to a Lenovo ThinkPad R52 notebook, which contained an Intel Pentium M 750 processor, 2GB of DDR2-533 memory, ATI Mobility Radeon X300 64MB, and 80GB IDE 5400RPM hard drive. With each of these fresh Ubuntu installations, we had maintained the default settings and package sets with the lone addition being Bootchart.
To recap some of the major packages used in these five Ubuntu releases, the Ubuntu 6.06.1 LTS ships with the Linux 2.6.15 kernel and X.Org 7.0.0. Ubuntu 6.10 ships with Linux 2.6.17 and X.Org 7.1.1, Ubuntu 7.04 is greeted by Linux 2.6.20 and X.Org 7.2.0, and Ubuntu 7.10 deploys the Linux 2.6.22 kernel with X.Org 7.2 / X Server 1.3. Our development build of Ubuntu 8.04 (and the final release) will ship with the Linux 2.6.24 kernel and X Server 1.4.1 (or the pre-release).