过去五年Linux2.6内核发布的简短回顾

On 2010年11月4日, in linux, news, by netoearth

Phoronix.com今天将他们对Linux系统的研究发挥到了极致:从2005年年中的2.6.12,到正在开发中的2.6.37,五年多来的26个Linux内核版本来了个“群英荟萃”!

Linux系统内核这26个版本的具体发布时间依次如下:

2.6.12-2005.6.17
2.6.13-2005.8.29
2.6.14-2005.10.17
2.6.15-2006.1.3
2.6.16-2006.3.20
2.6.17-2006.6.17
2.6.18-2006.9.20
2.6.19-2006.11.29
2.6.20-2007.2.5
2.6.21-2007.4.25
2.6.22-2007.7.8
2.6.23-2007.10.9
2.6.24-2008.1.24
2.6.25-2008.4.17
2.6.26-2008.7.13
2.6.27-2008.10.9
2.6.28-2008.12.25
2.6.29-2009.3.23
2.6.30-2009.6.9
2.6.31-2009.9.9
2.6.32-2009.12.3
2.6.33-2010.2.24
2.6.34-2010.5.16
2.6.35-2010.8.1
2.6.36-2010.10.20
2.6.37-(开发中)

小结:

这是我们第一次看到如此庞大规模的Linux系统内核测试,结果也让我们开了眼。单凭印象,很多用户和开发人员可能会认为随着Linux系统内核的功能特性越来越丰富、体积越来越庞大,性能应该会逐步倒退,但事实上在大部分情况下这五年来的性能都维持了惊人的稳定,也有不少地方虽然反复升降但是总体来看是呈进步趋势的。

根据测试,整体性能有所改进的项目包括John The Ripper、Himeno、PostMark、FS-Mark、Threaded I/O Tester和代码编译相关等等,明显倒退的则有只有GnuPG、Loopback TCP Network Performance、Ozone,其他都是波澜不惊。

2.6.29、2.6.30无疑是最有趣的两个版本。前者是2.6.2x系列的终结之作,也是2009年的第一 个正式版,带来了Intel内核模式设定、Btrfs文件系统试验性支持、SquashFS集成、WiMAX初步支持、eCryptfs文件名加密等众多 新特性,但不少项目中却是最差劲的,而且落后的不是一星半点。随后的2.6.30又带来了NILFS2和EXOFS文件系统、IEEE 802.11w支持、Tomoyo、LZMA/BZIP2内核镜像压缩、完整管理架构等等,性能上不但一雪前耻,还有了很大的飞跃。接下来的几个版本经常 出现倒退,但整体趋势还是好的,特别是还要几个月才会面世的2.6.37版又有所提速。

Linux 2.6.12 [17 June 2005]: The Linux 2.6.12 kernel introduced page-out throttling, multi-level security for SELinux, address space randomization, cpusets, I/O barrier support for serial ATA devices, IPv6 support no longer being marked experimental, hot-pluggable parallel ports, and device mapper multi-path support.

Linux 2.6.13 [29 August 2005]: Noteworthy features for the Linux 2.6.13 kernel included execute-in-place support, i386 CPU hot-plugging support, voluntary preemption, inotify, an improved CFQ IO scheduler, DRM support for VIA Unichrome chipsets, ACL support for NFSv3, kexec and kdump integration, and a new driver for trusted computing / TPM.

Linux 2.6.14 [27 October 2005]: Introduced in the Linux 2.6.14 kernel was a NUMA-aware SLAB allocator, SELinux memory improvements, spin-lock consolidation, detection support for soft-lockups, FUSE (File-system in User-Space) integration, and initial ATI Radeon R300 3D support.

Linux 2.6.15 [3 January 2006]: The Linux 2.6.15 kernel presented many VFS changes, page-table scalability improvements, demand faulting for huge pages, cooperating processes for the anticipatory I/O scheduler, NTFS file-system write support, and ATA pass-thru with the libata driver. For some perspective, this is the kernel that was used by Fedora Core 5, Gentoo 2006.0, Ubuntu 6.06 LTS, and others.

Linux 2.6.16 [20 March 2006]: The Linux 2.6.16 kernel release introduced Oracle’s OCFS2 clustering file-system, support for the CELL processor, support for moving the physical location of pages between nodes on NUMA systems, high-resolution timers, the configfs file-system, and a number of driver updates. SuSE 10.1 and Mandriva 2007 picked up this release.

Linux 2.6.17 [17 June 2006]: The third official Linux kernel release of 2006 brought support for Sun’s Niagara CPUs, the Broadcom bcm43xx WiFi driver, the splice I/O mechanism, a scheduler domain for optimizing CPU scheduling on multi-core systems, block queue I/O tracing, RAID5 re-shaping support, and performance improvements to EXT3 by mapping multiple blocks at once.

Linux 2.6.18 [20 September 2006]: Some of the Linux 2.6.18 features included the Lockdep kernel lock validator, SMPnice, swapless page migration, a major libata driver update with support for features like NCQ (Native Command Queuing) and hot-plugging, the default I/O scheduler becoming CFQ, and a variety of new drivers. Fedora Core 6 and PCLinuxOS 2007 shipped with this kernel.

Linux 2.6.19 [29 November 2006]: The Linux 2.6.19 kernel was the last release of 2006 and it brought eCryptfs, the first experimental snapshot of EXT4 in the mainline Linux kernel, physical CPU hot-plug and memory hot-add on x86_64, support for building x86 kernels with GCC stack protection, vectored a-synchronization I/O, IDE PATA drivers using libata, and the usual collection of driver updates. This kernel made its way into Ubuntu 7.04, the Feisty Fawn.

Linux 2.6.20 [5 February 2007]: The first 2007 kernel release for Linux brought Sony PlayStation 3 support, KVM virtualization, i386 para-virtualization, x86 re-locatable kernel support, I/O accounting, and a generic HID layer.

Linux 2.6.21 [25 April 2007]: New to the Linux kernel in April of 2007 was the Virtual Machine Interface (VMI), KVM updates to support para-virtualization and live migration along with a stable user-space interface and CPU hot-plug support, a tick-less kernel / dynticks.

Linux 2.6.22 [8 July 2007]: Just after the 2007 US Independence Day was marked by the introduction of the new SLUB allocator, a new wireless stack, a new IEEE-1394 Firewire stack, and a variety of new Linux hardware drivers. This kernel was found with Mandriva Linux 2008 and openSUSE 10.3.

Linux 2.6.23 [9 October 2007]: Those recovering from Oktoberfest in 2007 had the new CFS process scheduler to look at along with on-demand read-ahead, LGuest virtualization, a partial merge of Xen virtualization, KVM SMP guests and speed improvements, and improvements to the experimental EXT4 support. Fedora 8 shipped Linux 2.6.23.

Linux 2.6.24 [24 January 2008]: Bringing in 2008 was the Linux 2.6.24 kernel with tick-less kernel support for x86_64, CFS improvements, anti-fragmentation patches, USB authorization, and x86_32/x86_64 arch reunification. Ubuntu 8.04 LTS and openSUSE 11.0 used this kernel.

Linux 2.6.25 [17 April 2008]: Some of the highlights for the Linux 2.6.25 kernel included the introduction of the memory resource controller, real-time group scheduling, RCU pre-emption support, better process memory usage management, Latencytop support, and more EXT4 file-system updates.

Linux 2.6.26 [13 July 2008]: In the summer of ’08 new in the Linux kernel world was KVM virtualization support on IA64/PowerPC/S390 architectures, much-improved Linux web-camera support, wireless mesh networking 802.11s draft support, x86 PAT support, minor updates to EXT3/EXT4, and various other work.

Linux 2.6.27 [9 October 2008]: This kernel release introduced delayed allocation support for the EXT4 file-system for improved disk performance, block layer data integrity support, multi-queue networking support, MMIOtrace support, support for external firmware, and support for up to 4096 CPUs on Linux x86. Ubuntu 8.10 used this kernel.

Linux 2.6.28 [25 December 2008]: Just before ending out 2008 was the Linux 2.6.28 kernel that marked the EXT4 file-system as now being stable, integration of GEM (the Graphics Execution Manager) developed by Intel for in-kernel GPU memory management and a pre-requisite for kernel mode-setting (KMS), and memory management scalability improvements.

Linux 2.6.29 [23 March 2009]: The first Linux kernel release of 2009 brought support for Intel kernel mode-setting, experimental support for the Btrfs file-system, SquashFS integration, initial WiMax support, eCryptfs file-name encryption, and a no journal mode for EXT4. Linux 2.6.29 was also the first kernel to introduce staging drivers and this release was represented by the Tuz mascot while Tux took a short holiday.

Linux 2.6.30 [9 June 2009]: Prominent features of this summer 2009 kernel update brought the NILFS2 and EXOFS file-systems, IEEE 802.11w support, Tomoyo, LZMA/BZIP2 kernel image compression support, and the integrity management architecture.

Linux 2.6.31 [9 September 2009]: Just before going off to Oktoberfest 2009 was the Linux 2.6.31 kernel release with initial USB 3.0 support, ATI Radeon kernel mode-setting support, improved desktop interactivity when the system is under memory pressure, kmemcheck / kmemleak integration, and integration of the kernel performance counters infrastructure.

Linux 2.6.32 [3 December 2009]: The last kernel release of 2009 brought Btrfs file-system improvements, memory de-duplication support, ATI Radeon R600/R700 DRM 3D and kernel mode-setting support, a low-latency mode for the CFQ scheduler, tracing improvements, and run-time power management.

Linux 2.6.33 [24 February 2010]: Finally getting to this year’s kernels we have Linux 2.6.33. The Linux 2.6.33 kernel introduced the Nouveau driver for finally having open-source DRM/KMS support for NVIDIA graphics processors within the mainline Linux kernel, support for Xen POV-on-HVM guests, swappable KSM pages, memory compressed swapping via Compcache, the KMS page-flipping ioctl, the VMware Virtual GPU driver, and Google Android support being dropped from the mainline Linux kernel.

Linux 2.6.34 [16 May 2010]: In May of this year we had the Linux 2.6.34 kernel release that brought Btrfs file-system updates, a-synchronous suspend/resume support within the power management code, and basic GPU switching support.

Linux 2.6.35 [1 August 2010]: Before ending out the summer was the 2.6.35 kernel with support for transparent spreading of incoming network load across all available CPU cores, direct I/O support for the Btrfs file-system, an experimental journal mode for the XFS file-system, Intel VA-API H.264/VC1 video acceleration support, ATI Radeon power management, and memory compaction.

Linux 2.6.36 [20 October 2010]: Coming out just last month was the Linux 2.6.36 kernel with KMS+KDB integration, concurrency-managed work-queues, Intel Intelligent Power Sharing support, improved VM-related desktop responsiveness, improved open-source graphics, and AppArmor integration.

Linux 2.6.37 [Unreleased]: For the Linux 2.6.37 kernel testing we used a Git snapshot of the Linus 2.6 Git tree as of 2010-10-31 (one day short of the Linux 2.6.37-rc1 kernel release), since this kernel will not be released for a few months. Some of the new features of the Linux 2.6.37 kernel include a number of DRM improvements, an Intel Poulsbo driver, Broadcom’s open-source 802.11n WiFi driver, various core improvements, and the Big Kernel Lock (BKL) has finally been eliminated from the core kernel code.

It is quite amazing the features introduced into the Linux kernel just in the past five years and how they have matured, but let us see now how the performance has changed.

Comments are closed.