大规模 - 非一致存储访问体系结构(NUMA)和大型机

除了以上所提及的新硬件类型的支持之外,新的Linux内核发行版也包含了对大型服务器(一些运行i386处理器,也有些运行其他处理器)更多的支持。对Linux来说,这样的特性是新近加入的,还有许多优化工作需要完成。这是一个Linux发展相当迅速的领域,我们能够预计在不久的将来,Linux将成为此领域的有力竞争者。

在此方面最大的改变就是Linux对NUMA服务器的最新支持。NUMA(非一致存储访问)在多进程世界里是超越SMP以及提升多处理器系统效率的一个进步。SMP系统的设计上有着许多和对应单处理器系统类似的局限性。其中最大的设计局限之一就是系统中只有唯一的一块内存区,所有的处理器对它都平等地对它进行访问。在多处理器系统里,这样会在同一条内存总线上的多处理器之间引起相当高的竞争,导致性能瓶颈。NUMA服务器,通过引入了以下的理念解决了这个问题:对于某个特定的处理器,一些内存比其他一些的更为接近(close)。可以这样简单地设想(同时技术上也不会有严重错误),你的系统有许多包含了处理器、内存以及其他元件(比如I/O扩展卡)。系统中有很多这样的卡,它们可以相互通讯;显而易见,相对其他卡上的内存,每块卡上的处理器能更快的访问本地内存(自己的卡上内存)。从许多角度上看,NUMA体系结构就是一个紧密耦合的集群特例。

为了给NUMA主机提供良好的支持,Linux十分必要在许多方面进行调整,以使新模型更具效率。首先,建立了一个内部拓扑API,以使内核知道处理器和内存以及其他IO设备间的相互关系。有了内部拓扑API的支持,Linux的进程调度器可以理解这些关系,并且会尝试优化任务以达到最佳的本地资源使用。此外,许多NUMA主机在各个节点(nodes)的线性内存区域之间存在空洞(holes)。新内核已经能够合理的处理这种不连续情况。内核还有许多其他使得Linux可以支持高端(high-end)主机的变化,这也是内核发展的一个明确方向。再过一年,我们可以期待Linux在高端机型上效率以及其他方面的进步。

深入Linux

除了横向支持越来越多的硬件,Linux 2.6还在已支持的平台上根据硬件的性能提升进行了改进。这些针对特定CPU的优化包括:Transmeta的Crusoe系列,Intel’s Pentium 4 Xeon、Pentium 3-M、Pentium 4-M 和AMD移动处理器。新版本Linux还解决了某些Athlon处理器自身的bug导致的问题。Linux 2.6还解决了在某些多于16个处理器的系统启动时偶尔会挂起的问题,尽管这个bug不会影响大多数用户的正常使用。

超线程

在Linux 2.6中不算新鲜,内核在2.4.17发布中就已经开始包含对Intel P4处理器的超线程(Hyperthreading)的支持(在这里提及它,一是因为它并没有包含在2.4最初的发布中,二是自那以后内核又有了很大的改变)。超线程使得单个的处理器可以伪装成操作系统看来二个或更多的多个处理器。最令人激动的是,Linux是第一个把超线程特性引入市场的操作系统,尽管早在一年前Intel就发布了兼容的处理器。有传闻说,微软在对支持超线程的CPU按一个CPU还是按两个CPU收取授权费(license)的问题上拿不定主意。Linux的开放模型(以及没有基于cpu的授权)使得Linux操作系统第一个支持这个新特性。显然,一个处理器就算扮作两个处理器工作,它还是一个处理器,性能并不能因此增加很多。2.5中调度器和其他一些部分在有了新的优化,使得处理器的超线程可以真正的发挥作用。如果是在2.4下加入超线程支持,结果就不一定了,有时性能还会下降。

容量 -- 可扩展性的进展

除了对NUMA的支持,Linux 2.6在处于食物链顶端的Intel服务器方面,也有一些变动。最重要的就是对Intel的物理地址扩展(PAE)的完全支持,使得较新的32位的x86系统可以访问高达64GB的内存,但仅仅限于页面映射模式。另外,通过加强对高级可编程中断控制器(APIC)的支持,多处理器系统之上的IRQ均衡(balancing)大大提升。

在许多其他方面,内部限制在可能的地方都有所放松。Linux系统上用户和用户组的数目从65000越升到了超过40亿(实际就是16位到32位的变化)。这使得Linux在之前可能超越限制的大型文件和认证服务器上更加实用。类似的,进程标识号(PID)的数目也从32000升到10亿。这个改变,与其他PID子系统优化一起,将提高在十分繁忙或是长期工作的系统上的应用程序的启动性能。尽管同时打开的文件最大数目并没有增加,但是Linux 2.6不会再要求你预先设定限制值;限制值会随着系统的运行自动调整。最后,Linux 2.6包含了改进的64位的块设备支持(当然块设备本身应当支持64位模式),即使是在i386这样的32位平台。这样一来,文件系统的存储上限可达 2TB。


相关内容