编者按:多年以来,在服务器界一直是硬件技术的发展独领风骚,操作系统等服务器平台软件只处于配角位置。但是至少从今年开始,这种状况有了扭转的态势。特别是在兼容32位计算的扩展64位硬件平台面世后的很长一段时间内,由于没有相配套的64位操作系统平台,在实际应用中也只能望64位而兴叹!人们随之也顿悟:原来在服务器的实际应用案例中,相比硬件技术而言,服务器平台软件更起到了决定成败的作用。
因此,我们组织了本次产品主题,针对操作系统和基础架构工具两大类核心服务器平台软件的最新发展做详细介绍,并对用户的选购提出合理的建议。
硬件引起连锁反应
最近几年来,多核心和支持虚拟化技术的硬件平台对操作系统提出了新的挑战。但是,单纯分别来看两个技术,就会失去把这两者联系和融合起来的最大机会。由于虚拟化本身需要更多的计算资源,尤其是虚拟另外一个平台上的操作系统和软件,对硬件资源是一个沉重的压力,它们必须在硬件上提供足够多的计算资源才有可能让虚拟化成为真正可用的东西。
为了进一步提高硬件的利用率,硬件厂商对多线程的热情也很高昂。通过在一个物理核心内实现多个线程,达到在逻辑上多个处理器的目的,这样能够提高处理器的利用率。不过,不同的操作系统和软件本身对硬件资源的要求并不一致,加上算法和其他方面的差异,性能提高幅度差异比较大。虽然一些软件号称最大性能提升幅度会达到30%,但经过我们的实际测试,这个数字应该维持在15%左右,除非两个或多个线程需要的计算资源正好可以互补,则需另当别论。
不管用何种手段实现的虚拟化,在处理器上划分逻辑空间,并且虚拟化具体的硬件实现机制,是需要在性能上付出一定的代价,在一个硬件平台上虚拟化的数量也是有限的。虽然IBM号称全新的AIX 5L 5.3能够最大支持一个处理器10个分区,实际的性能还是会遭到怀疑。何况,一般用户也不会用到这个程度,即便是处理器再快,面对十个分区的各个应用也是相当不容易的。
多核的机理相去甚远,也有可能会决定操作系统层面上的不同。作为紧紧依赖和影响硬件平台的操作系统,本身应该要充分理解和利用硬件平台的特性,而在目前多核处理器上,有数种设计概念,导致在最后的实现机制上存在巨大差异。
像AMD的Opteron处理器,由于核心内部集成内存控制器,并且内核之间可以通过高速的HyperTransport进行通信,这种相当理想化的结构充分实现了NUMA特性,具有理论上无限的可扩展性。这个架构在I/O和内存带宽上,理论上是呈线性增长,与节点和处理器的数量成正比。软件就必须充分利用这个特性,把资源充分分散在各个节点或者处理器,以便能够在读取数据的时候,具有类似硬盘RAID0的加速效果。
惟一制约它的就是远程访问可能需要花时间,并且Cache一致性也许要消耗大量的资源,这是它的软肋所在。但是这个做法正在为越来越多的硬件平台所采用,只不过Opteron相对来说更熟悉,在架构上也很典型。IBM的Power5架构与之类似,Intel也将通过集成内存控制器,降低内存访问时间延迟,同时提升处理器系统的可扩展性。
另外一种多核系统是如同Intel处理器那样,每个核有单独的二级缓存,但是内存的访问需要通过一个外置的控制器来实现,所以两个核之间不能同时访问内存,那样将导致冲突。并且,核与核之间的信息交流也会在一定程度上阻碍性能的提高,这两项相互冲突的任务它们无法同时进行。因此,在一些并行编程考虑周全的应用中,性能的提升会相当明显,但是一旦脱离这样的软件环境,就会有比较大的差异。这种方式注定了只能在中低端服务器中使用,无法进行大规模的扩展,Cache的一致性问题也将在一定程度上损害本来可以的性能提升,加上操作系统的限制,我们目前所能看到的性能提升大概为87%。这对一个双核系统来说,不算一个让人高兴的数据,性能提升的幅度还达不到要求,好处可能来自价格便宜以及计算密度的提高。
Cell采取了另外一种策略,在一个芯片中提供一个平衡负载的主控芯片以及8个协同处理基元。主控芯片是一个64位的PPC,而8个协同处理基元表面上与完整的处理器没有区别,但是更为简单。这些处理基元可以通过协同主控芯片,实现矢量和标量的协同计算,从而提高并发线程的操控效率,明显是分布式计算的典范。
Cell的应用范围相当广泛,从大型机到入门级应用,跨度如此之大相当罕见,除了说明Cell本身的可扩展性良好外,从高端到低端甚至消费级完全一致的思想同样值得关注。那么,基于其上的软件和操作系统甚至编译器的开发,都将是很有挑战和很有趣的事情,也必将反映这些硬件的变化和结构思想。
硬件搭好平台之后,需要操作系统为运行其上的软件构建平台。由于操作系统联系了软硬双方,这个中间人的角色相当重要,尤其是这些硬件也逐渐加入一些安全算法,配合软件可以在性能和安全性方面取得良好的平衡,也是操作系统需要考虑的一些细节。