Performance 在虚拟化环境中执行数值计算?

Performance 在虚拟化环境中执行数值计算?,performance,virtualization,numerical-methods,scientific-computing,hpc,Performance,Virtualization,Numerical Methods,Scientific Computing,Hpc,我想知道在虚拟化环境中,数值计算会有什么样的性能影响?更具体地说,在虚拟化的Windows操作系统中运行CPU绑定的C++代码,而不是本地Linux,在相当快的X8664 64多核机器上,我能期待什么样的性能损失? 我很乐意根据需要添加精确性,但由于我对虚拟化了解不多,我不知道什么信息是相关的。受@Mitch Wheat无可争议的断言的刺激,我在这里的原始帖子不是一个答案,这里尝试将其改写为一个答案: 我主要从事能源领域的HPC工作。我的科学家同事们进行的一些计算需要O(10^5)个CPU小时,

我想知道在虚拟化环境中,数值计算会有什么样的性能影响?更具体地说,在虚拟化的Windows操作系统中运行CPU绑定的C++代码,而不是本地Linux,在相当快的X8664 64多核机器上,我能期待什么样的性能损失?
我很乐意根据需要添加精确性,但由于我对虚拟化了解不多,我不知道什么信息是相关的。

受@Mitch Wheat无可争议的断言的刺激,我在这里的原始帖子不是一个答案,这里尝试将其改写为一个答案:

我主要从事能源领域的HPC工作。我的科学家同事们进行的一些计算需要O(10^5)个CPU小时,我们正在认真考虑在不久的将来进行O(10^6)个CPU小时的工作


我的工资很高,能把代码的每一点性能都榨干,如果我能把一些程序的运行时间减少1%,我会认为这是一天的好工作。有时候,我花了一个月的时间才得到这样的性能提升,当然我可能会很慢,但对我们的科学家来说,这仍然是划算的

因此,当聪明的销售人员提供最新最好的数据中心软件(虚拟化是其中的一个方面)时,我不寒而栗。在我看来,这只会将我的代码束缚在一堆25万吨油轮的锚链上(这是一个比喻)


我已经仔细阅读了这个问题,并且理解OP并没有建议虚拟化会有所帮助,我只是提供了一个从业者的视角。如果这仍然是一个太多的评论,做这样的事情,投票结束,我保证我不会被冒犯

受@Mitch-Wheat无可争议地断言我在这里的原始帖子不是答案的刺激,这里试图将其改写为答案:

我主要从事能源领域的HPC工作。我的科学家同事们进行的一些计算需要O(10^5)个CPU小时,我们正在认真考虑在不久的将来进行O(10^6)个CPU小时的工作


我的工资很高,能把代码的每一点性能都榨干,如果我能把一些程序的运行时间减少1%,我会认为这是一天的好工作。有时候,我花了一个月的时间才得到这样的性能提升,当然我可能会很慢,但对我们的科学家来说,这仍然是划算的

因此,当聪明的销售人员提供最新最好的数据中心软件(虚拟化是其中的一个方面)时,我不寒而栗。在我看来,这只会将我的代码束缚在一堆25万吨油轮的锚链上(这是一个比喻)


我已经仔细阅读了这个问题,并且理解OP并没有建议虚拟化会有所帮助,我只是提供了一个从业者的视角。如果这仍然是一个太多的评论,做这样的事情,投票结束,我保证我不会被冒犯

进程只是一组线程,它们是以顺序方式执行的指令流。在现代虚拟化解决方案中,就CPU而言,主机和来宾进程一起执行,不同之处在于后者的I/O被捕获和虚拟化。内存也被虚拟化,但这或多或少发生在硬件MMU中。来宾指令由CPU直接执行,否则它将不是虚拟化而是仿真,只要它们不访问任何虚拟化资源,它们的执行速度将与主机指令一样快。最后,这一切都取决于CPU如何处理不断增加的运行进程

有一些轻量级的虚拟化解决方案,如Solaris中的zones,它们对进程空间进行分区,以提供操作系统的多个副本的外观,但这一切都是在单个操作系统内核的保护伞下进行的

纯计算代码的性能损失非常小,通常低于1-2%。问题在于,实际上所有程序都读写数据,而计算代码通常读写大量数据。即使使用Intel VT-*或AMD-V等解决方案,虚拟化I/O通常也比直接I/O慢得多


确切的数字在很大程度上取决于特定的硬件。

进程只是一束线程,它们是以顺序方式执行的指令流。在现代虚拟化解决方案中,就CPU而言,主机和来宾进程一起执行,不同之处在于后者的I/O被捕获和虚拟化。内存也被虚拟化,但这或多或少发生在硬件MMU中。来宾指令由CPU直接执行,否则它将不是虚拟化而是仿真,只要它们不访问任何虚拟化资源,它们的执行速度将与主机指令一样快。最后,这一切都取决于CPU如何处理不断增加的运行进程

有一些轻量级的虚拟化解决方案,如Solaris中的zones,它们对进程空间进行分区,以提供操作系统的多个副本的外观,但这一切都是在单个操作系统内核的保护伞下进行的

纯计算代码的性能损失非常小,通常低于1-2%。问题在于,实际上所有程序都读写数据,而计算代码通常读写大量数据。即使使用Intel VT-*或AMD-V等解决方案,虚拟化I/O通常也比直接I/O慢得多


确切的数字在很大程度上取决于特定的硬件。

在没有超额订购的现代、规范和配置良好的硬件上,性能影响相对较小。@MitchWheat:你能更具体一点吗?我们说的是1%、5%还是30%?此外,性能取决于哪些因素?在现代、规范和配置良好的硬件上,性能的影响相对较小。@MitchWheat:你能更具体一点吗?我们在说abo吗