The release of Ubuntu 10.04 LTS "Lucid Lynx" is quickly approaching next month and it will arrive with a whole set of new features and improvements including a faster boot process, a long-awaited new theme, the Nouveau driver to replace the crippled xf86-video-nv driver, the unveiling of the Ubuntu One Music Store, integration of Plymouth, Ubuntu ARM advancements, and many other advancements for this Linux distribution. While it may not be as exciting as looking at these new end-user features, in this article we are testing out the available kernels for Ubuntu 10.04. Besides the standard Linux 2.6.32 kernel used in the Lucid release, there is also a specialized server kernel as well as a new -preempt kernel is now available. We are looking at how these different kernels perform and how they compare to the mainline Linux kernels with the 2.6.32, 2.6.33, and 2.6.34-rc1 releases.
When it comes to the kernel configurations, several items separate the Ubuntu server kernel from the default. Among the configuration changes is the server kernel uses the Deadline scheduler (CONFIG_DEFAULT_DEADLINE) rather than CFQ (CONFIG_DEFAULT_CFQ), no forced preemption (CONFIG_PREEMPT_NONE) rather than voluntary preemption with the default kernel (CONFIG_PREEMPT_VOLUNTARY), support for memory hot-plugging and removal (CONFIG_MEMORY_HOTPLUG, CONFIG_MEMORY_HOTPLUG_SPARSE, CONFIG_MEMORY_HOTREMOVE, CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE, CONFIG_ACPI_HOTPLUG_MEMORY), the VirtIO drivers being built into the kernel rather than a module (CONFIG_VIRTIO_BLK, CONFIG_VIRTIO_NET, CONFIG_VIRTIO, CONFIG_VIRTIO_RING, CONFIG_VIRTIO_PCI), and Parallel SCSI Transport Attributes being built into the kernel (CONFIG_SCSI_SPI_ATTRS). Other configuration items built into Ubuntu's server kernel include CONFIG_ARCH_MEMORY_PROBE and CONFIG_SCSI_SYM53C8XX_2.
Changed between the default kernel and the preempt kernel is enabling CONFIG_PREEMPT for making much of the kernel preemptible rather than the default kernel using CONFIG_PREEMPT_VOLUNTARY, changing the default timer to 1000Hz (CONFIG_HZ_1000), and enabling CONFIG_DEBUG_PREEMPT in the kernel. This -preempt kernel is new in Ubuntu 10.04 and is not available in earlier Ubuntu releases. The -generic, -preempt, and -server kernels were all at version 2.6.32-16 at the time of testing. There is also a Realtime (RT) kernel available in Ubuntu Lucid, but it is currently based on the older Linux 2.6.31 kernel. We were unable to test out this real-time kernel due to DRM problems with the Linux 2.6.31 kernel and our newer ATI Radeon graphics card. The only other kernel available in Ubuntu Lucid is for virtual machines and it is a 2.6.32 kernel that is designed for EC2 machines. There was talk recently of a new low-latency kernel where the CPU frequency scaling support (such as Enhanced Intel SpeedStep Technology and AMD Cool 'n Quiet) would be disabled along with the CPU idle governor, but those changes are not present in any kernel within the Lucid repository at this time.
We compared these three kernels from the Ubuntu Lucid repository against the mainline Linux kernels offered through Ubuntu's mainline kernel PPA. We benched the Linux 126.96.36.199, 2.6.33, and 2.6.34-rc1 releases for comparison. Between the mainline 2.6.32 kernel package and the Ubuntu 2.6.32-16-generic kernel, some of the configuration in the latter include enabling support for user name-spaces (CONFIG_USER_NS), kernel same-page merging (CONFIG_KSM), recovery from hardware memory errors (CONFIG_MEMORY_FAILURE), run-time power management core functionality (CONFIG_PM_RUNTIME), support for large single files (CONFIG_SFI), and driver modules for many more hardware components than what is found enabled in the mainline package. The additional modules being built represent most of the configuration differences.
For testing out the three Ubuntu kernels and three latest mainline kernels we used one of our test systems that had an AMD Opteron 2384 Quad-Core 2.7GHz "Shanghai" processor, a Tyan Thunder n3600B (S2927) motherboard, 4GB of ECC Registered memory, a 64GB OCZ Agility EX SSD, and an ATI Radeon HD 4870 graphics card driving a Dell S2409W 24-inch LCD display. We performed a clean installation of Ubuntu 10.04 using a daily development snapshot from 2009-03-13 that was running with GNOME 2.29.92, X.Org Server 1.7.5, xf86-video-radeon 6.12.191, GCC 4.4.3, and the default EXT4 file-system. All testing was done with 64-bit kernels and using the Ubuntu amd64 installation.
We ran the kernel tests available through the Phoronix Test Suite with the Lyngen 2.6 Alpha 1 release for providing these kernel benchmarks. On the following pages are the results from Tremulous, OpenArena, Urban Terror, Apache, PostgreSQL, Apache compilation, 7-Zip compilation, Parallel BZIP2 compression, GnuPG encryption, IOzone, Dbench, FS-Mark, Bullet Physics, and dcraw image conversion.