戴尔:虚拟化并不适用于高性能计算
2009-07-30 enet
这是一个非常有趣的现象--新技术在诞生之初,往往会被人们视作包治百病的良药。这似乎正应验了那句老话:"锤子在手,看什么都是钉子"。从某些方面看,虚拟化技术已经成了一把锤子,人们正四处为其寻找钉子(或看上去像钉子的东西)。最近便有很多人认为,高性能计算(HPCC)或许是虚拟化锤子的又一颗钉子。
我本人对虚拟化技术并无批驳之意,因为它确实为专注企业级运算的数据中心节约了大量成本,从这个角度看,它完全称得上是一项革命性新技术。虚拟化技术之所以能在企业中发挥如此大的作用,原因之一在于目前企业对硬件的利用率不高(多数不超过50%)。而在高性能计算领域,硬件利用率往往会超过90%。有趣的是,在高性能计算中,即使硬件利用率突破了90%,也经常会发生大量任务列队等待合适资源的情况,计算需求仍然居高不下。资源管理器一般会以合理的方式安排工作,以便最充分地利用硬件资源,但某些情况下,可能没有足够的空闲资源来执行任务,这时管理器会一直保留该项任务,直到获得执行这项任务的必要资源。最终,硬件利用率似乎无法达到100%(如90%左右),而实际计算需求却远远高于100%。
因此,在高性能计算中利用虚拟化技术来整合未被充分利用的资源,进而提高计算效率的想法并不可行。一个简单的事实是,几乎所有高性能计算系统都要处在全负荷或已被过量预订的状态(如果您见过未被充分利用的高性能计算系统,请一定和我联系,我认识一大批渴望计算缩短周期的人J),但这并不意味着虚拟化技术在高性能计算领域就毫无用处。
虚拟化技术在高性能计算领域的潜在应用
虚拟化技术具备改善高性能计算的潜力,这集中体现在以下三个方面:首先,我们可以利用计算节点上的虚拟化硬件执行用户选定的分配任务。听上去似乎有些不可思议,但实际上,一个典型的集群中往往存在一组几乎完全相同的计算节点。也就是说,它们在任何方面都不存在差别(包括硬件和软件环境)。不过有些时候,您运行的应用可能是针对特定操作系统或内核,或是存在某种软件依赖关系,计算节点上的资源无法满足其需求。这时您会怎么做?
此时,人们往往会为此类应用创建单独的集群,以满足其特定的软件需求。不过这样做要付出相当高的代价。如果某家企业共部署了6项软件需求各不相同的应用,那么他们是不是就得构建六个不同的集群?有没有其它更好的办法呢?