谈到虚拟化,我一直在思考物理内核和虚拟内核之间的关系,尤其是它如何影响采用并行性的应用程序。例如,在 VM 场景中,如果物理内核的数量少于虚拟内核的数量,如果可能,那么对应用程序的并行处理有何影响或限制?我在问,因为在我的环境中,它没有透露物理架构是什么。如果应用程序位于托管在单核物理机上的双核 VM 上,并行化是否还有很多优势?
问问题
2976 次
2 回答
6
如果应用程序位于托管在单核物理机上的双核 VM 上,并行化是否还有很多优势?
总是。
操作系统级别的并行处理(即 Linux 管道)将显着提高性能,无论您拥有多少核心(真实的或虚拟的)。
确实,您必须创建相当人为的问题或非常愚蠢的解决方案,才能看到从简单地将大问题分解为管道中的许多小问题的性能改进。
一旦您获得了流水线解决方案,并且它占用了 100% 的虚拟资源,您就拥有了可以衡量的东西。
开始尝试逻辑和物理资源的不同变化。
但只有在您拥有一个耗尽所有可用资源的操作系统级管道之后。在此之前,您只需创建管道解决方案即可完成基本工作。
于 2010-06-11T17:24:00.760 回答
1
由于您包含了 F# 标签,并且您对并行性能感兴趣,因此我假设您使用的是 F# 异步 IO,因此线程永远不会阻塞,它们只是在 CPU 绑定任务之间交换。
在这种情况下,理想的线程数与虚拟内核数相同(至少基于我在 Windows 7 托管的 Virtualbox 下的 Ubuntu 中使用 F# 的实验)。拥有比这更多的线程会略微降低性能,而拥有更少的线程会相当多地降低性能。
此外,拥有比物理内核更多的虚拟内核会稍微降低性能。但如果这是您无法控制的事情,只需确保每个虚拟核心都有一个活动的工作线程。
于 2010-06-14T05:17:57.637 回答