Linux 内核的发展


介绍 2.6.28 和 2.6.29 版本中的新特性

生命的必然不仅包括死亡和纳税,还包括 GNU/Linux? 操作系统的发展,最新的两个内核发布的确没有让人失望。2.6.28 和 2.6.29 版本包含了大量新的功能,比如先进的企业存储协议、两个新的文件系统、WiMAX 宽带网络支持以及存储完整性检查。通过本文了解为何现在就应该升级 Linux 内核。

2008 年底,2.6.28 版本的内核出现。随后,通向下一版本 —2.6.29— 的通道也打开了。由于 Linux 内核采用的是一种分布式的开发过程,所以它并不总能清楚一个特定内核发布中会有什么(或集成了什么),但是这两个最新发布不管是从短期还是从长期来看都是很有意思的。2.6.28 中一个有趣的里程碑是该版本的 Linux 的源代码首次超过 1000 万行(参见图 1,它使用了来自 Heise Online 的源代码行计数数据)。

最新 2.6 内核内的源代码行数

图 1. 最新 2.6 内核内的源代码行数

这两个发布引入了新的文件系统(一个已经稳定,一个尚在实验中)、对图形和可视化的新支持,以及新的企业存储特性。接下来,我先大致介绍 2.6.28 中的一些主要新特性,然后再介绍 2.6.29 带来的新特性。

2.6.28 中的新特性

Linux 内核 2.6.28 在 2008 年 12 月 24 日发布(2009 年 2 月已经是第 5 个发布版)。2.6.28 第一个的发布版包括大量更改,以至于它自身的更改日志文件大小已接近 6MB。最新的这个发布版很稳定,被用作 Ubuntu 9.04 Jaunty Jackalope 的内核。

第 4 扩展文件系统

第 4 扩展文件系统(The fourth extended file system)的名字 ext4 是由 ext4dev 改变而来的,这意味着它已经足够稳定,可以常规使用。Ext4 源自第 3 扩展文件系统(ext3),并具有更好的性能、特性和可靠性。Ext4 允许使用 exabyte 文件系统,这种系统支持的文件数量更多、体积更大、目录结构更深。它还包括多块和延迟块分配,以提升性能。Ext4 既具有前向兼容性又具有后向兼容性(这意味着根据所使用的特性,ext4 文件系统可挂载在 ext3 磁盘格式之上,反之亦然)。通过大规模的改变可以逐渐将文件系统从 ext3 迁移到 ext4。有关 ext4 文件系统的更多信息,请参见 参考资料。

虽然 ext4 能够成为未来新的标准 Linux 文件系统,但是其他的文件系统也在不断出现,甚至能够提供更好的伸缩性和特性。Btrfs 就是这类文件系统之一,它现在已经成为了 2.6.29 内核中的一种试验文件系统。Btrfs 是一种兼容 Linux 的文件系统(参阅 GNU Public License [GPL]),它的特性与知名的 ZFS 不相上下。

Graphics Execution Manager 内存管理

过去一年的时间内,Linux 在图形堆栈领域取得了实质性进展。毫不奇怪,正是在该领域内,图形处理器(GPU)为呈现提供了有用协助。在很多情况下,GPU 比它们所协助的中央处理器(CPU)更为强大。

为了支持当前以及未来的 GPU,Linux 图形堆栈有一个领域需要提高,即内存管理,包括缓冲管理、页影射、放置和缓存。这一点极为必要,因为图形应用程序(尤其是三维应用程序)能够消耗大量内存。而借助 Graphics Execution Manager (GEM),就能够使用现有的内核子系统(比如使用共享内存文件系统或 shmfs 来管理图形对象)管理混入内核的图形数据。

引导跟踪器

虽然引导 Linux 所需的时间已经逐渐缩减,但是还是有人认为引导时间过长。因此,引导时间还需要不断地监查。此内核包含了这样一个新特性,即可以测量和记录 init 调用的时间。然后可以使用它们可视化引导的流程和性能。该过程是可配置的(要求必须启用收集数据的功能),但是一旦数据收集完毕,就可以使用离线脚本(包括图形描述)对这些数据进行分析,而这最终会导致更短的引导时间和更为优化的引导过程。此更新还融入了调用线程的过程标识符(PID)以便可以平行查看引导过程。

冻结器

为了在暂停操作系统期间将其迁移到一个新的主机(比如虚拟机 [VM]),我们专门设计了一个称为冻结(和解冻)的新功能。这个新特性能够让任务组或文件系统冻结并保持在冻结时状态,然后再解冻并重新引入这个任务组或文件系统。

任务在容器 的上下文中被冻结,这个模式能在用户空间级别(一个内核支持多个用户空间)虚拟化操作系统。这种新功能能够在主机之间迁移一组过程,这对均衡负载非常有用。也可以冻结文件系统来支持文件系统备份的快照。目前,文件系统冻结是通过具有参数 FIFREEZE 或 FITHAW 的 ioctl 来实现的。

在容器的外面,这个新冻结/解冻模式还可以用于检查点。在这种应用中,可以以特定的间隔(检查点)冻结一组相关的进程,然后解冻特定的时间点以回到某个已知状态。

虚拟内存伸缩性的改进

由于 Linux 在虚拟系统中应用的增加 — 尤其是具有多处理器和大量内存的系统 — 扩展内存的使用对性能非常重要。Kernel 2.6.28 包含了与内存有关的大量的伸缩性改进。例如,这个内核维护分开的 Least Recently Used (LRU) 列表,一个用于文件支持的页,另一个用于交换支持的页。这就使得内核能够更多地集中于交互支持的页,而不是文件支持的页,因为前者更有可能被写入到磁盘。

另一项更改分离了可收回的页和不可收回的页(比如通过 mlock 锁定的页)。以这种方式,分页代码就无需迭代 LRU 内不可收回的页,这使具有大量页的系统的性能得到提高。

  • 1
  • 2
  • 3
  • 下一页

相关内容