服务器 频道

虚拟化在高性能计算下的机会和挑战

  【IT168 专稿】众所周知,PC服务器虚拟化得以广泛应用有一个必要条件,即服务器的CPU低利用率和低负载。而高性能计算(HPC)主要集中执行并行高密度高负载任务,其处理器每时每刻几近满负荷状态,加之HPC工作负载更受内存带宽,输入/输出带宽的影响,因此看来虚拟化和高性能计算两者可谓"水火不容"。这也是当前绝大多人对HPC上应用虚拟化的一个看法。

  但是,在VMware大中华区技术总监张振伦看来,如同不是所有的PC服务器都适合做虚拟化一样,在高性能计算领域,也并非所有的应用都不适合做虚拟化。某种程度上而言,虚拟化正是提高HPC附加价值的有效手段。而清华大学高性能计算专家陈文光教授对此持相同观点,他甚至认为,对于传统的高性能计算所面临的一些难题,也许正是虚拟化技术得以施展拳脚的舞台。

  转换思路看机会

  对于高性能计算而言,如果仅从CPU的高占用率这样一个特定角度考虑,虚拟化似乎确实没有用武之地。"我们应该稍稍跳出这个圈子去看"张振伦表示,通过VMware的走访调查发现,实际上,除去某些特殊领域、特殊应用,计算任务排队紧张的情况,高性能计算并非时时处于饱和状态。"在进行高性能计算的时候,系统在运行特定作业的时候,会处于性能的峰值。但其他大多时候,都是间歇性的。两个不同的作业之间,CPU是待命的,这个时候可以跑一些其他应用。"

  而在传统模式下,作业与作业之间的空闲资源,却难以移作他用。因为新的应用往往需要不同的操作系统和应用平台,而这就需要卸载先前的作业平台,对于后续作业而言,这基本是不切实际的。张振伦认为,今天利用虚拟化的手段,使得这种空闲资源的再利用将变得可能。比如说可以在作业间歇性时间段内做备份等。"在HPC上作虚拟化,我们只需将传统的高性能物理服务器的功能稍微转换一下而已,即可轻而易举实现增值"。

  即便是传统的高性能计算作业过程中,虚拟化还是具备改善高性能计算的潜力。而这种机会主要体现在以下几个方面:

  首先,虚拟化对于解决HPC管理性和用户接口的便利性有益。

  这就使得在某一个计算节点上执行用户自行选定的分配任务变得灵活可行,尤其是像异构环境下的计算任务等。清华大学陈文光教授指出,传统的HPC接口实际上是一个调度器接口,用户提交一个任务,调度器就返回一个结果,用户没有可选择的余地,实际上这种接口并不友好。他举例说,假设当前任务需要Linux平台,而下一个任务需要Windows平台。在传统模式下,只能卸载当前系统重新部署所需平台,但这样费时费力,而又容易出差错。这将是一个非常困难的事情。

  而虚拟化却为此提供了一种可能。"你只需要在虚拟环境下部署两套操作系统,就可以让我的作业在需要的OS下运行,而无需重装系统"陈文光表示,当用户向调度器提交任务时,可以自行指定希望在任务中使用的操作系统或内核等组件。在任务执行过程中,调度器会通知计算节点运行所需的软件,并将相应软件安装在虚拟机(VM)内。接下来,任务会在虚拟机上运行,处理完毕后,虚拟机被关闭,节点继续执行下一任务。 对此,张振伦补充说,在这样的环境下,利用VMware Virtual Center去调度,完全可以满足上述需求。

  其次,虚拟化对于提高HPC计算节点的可用性和安全性有益。

  在传统的X86虚拟化中,可以利用VMware VMotion在两台正在运行的服务器之间进行实时迁移,具有零停机性能,能够大幅度提高服务器的可用性。张振伦表示,类似的工具和思想,同样可以平滑迁移至高性能计算。即可以利用虚拟机技术来实现HPC计算节点间任务的实时迁移,从而提高计算节点的可靠性。"可能大多数高性能运算对虚拟化来说都存在挑战,但是像这样的特定场合,虚拟化和高性能计算还是有机会结合在一起"张振伦对此充满信心。

  也许虚拟机技术对提高HPC的可用性更为有益。陈文光表示,机器规模(HPC)大了以后,最大的挑战便是可用性。现在国内的百万亿次计算机,平均故障时间大概在10-100小时之间,这对于跑上一周的作业应用就具有很大的挑战。怎么办?陈文光告诉记者,解决此类问题通常要做CheckPoint(检查点),把中间结果存下来,然后在从最近一个检查点重新启动应用。而检查点传统的做法是需要用户自己写程序,这个要求比较高,因为会涉及到众多边界问题,存在很大挑战。"而虚拟机却为我们提供了这样一种可能,虚拟机能够提供一个很干净的边界,我们可以把这个状态很好的保存下来"。

  不过,陈文光同时表示,由于HPC应用和CheckPoint的复杂性,到今天为止,清华大学对此仍在进一步研究当中,目前还没有一个非常完善的解决方案。"尽管如此,虚拟机+CheckPoint仍为保证HPC程序可用性提供了可能"。

  最后,虚拟化对于提高开发效率有益。

  像陈文光这样的身份,即是HPC的用户,又是开发者。对他而言,每天都会面临很多的开发问题。他告诉记者,清华大学在开发一个高性能计算应用,经常会面临开发环境和执行环境不同的问题。"我在一台小机器上开发的软件,到另外一台上执行错了,很麻烦。但是使用虚拟机以后,可以做到开发环境和执行环境是一样的。这点也是对提高开发效率很有效的"。

  以上,仅从应用的角度,给出了虚拟化与HPC结合的几种可能性。实际上,回归到HPC硬件本身,尤其是处理器性能的飞速提升,使得虚拟化更有机会进入高性能计算领域,充当"贤内助"的角色。

  过去,高性能计算的CPU利用率几乎是100%,但是随着诸如英特尔至强5500以及AMD最新处理器推出,HPC的性能得到了前所未有的提高。单颗CPU核心数量越来越大,比如6核、8核等等。这就使得即便在某一个计算节点上,应用程序也不一定100%会占用所有的Core(核心)。此时,剩余的核,即可满足一些对I/O、带宽等要求不是特别高的程序应用,而把这些应用放到上面就是涉及到一些隔离的问题,如何保证跟原先的作业不冲突,此时,虚拟化则能够很好的解决这个问题。"尤其是英特尔VT技术的快速发展,使得像VMware这样的平台得以将虚拟化技术更好的去改善IT架构,提升IT价值"张振伦表示。

0
相关文章