【发布时间】:2014-05-28 18:47:01
【问题描述】:
我正在用 Java 编写一个计算密集型的多线程程序,该程序将在虚拟化环境中运行,我想知道客户操作系统上的“CPU 数量”设置将如何影响我的程序的性能。
本质上,问题是客户操作系统 CPU 是如何映射到主机 CPU 内核的?假设我将客户操作系统上的 CPU 计数设置为 1,即使我在四核机器上运行,这究竟意味着什么?我可以推测至少会发生以下两种情况之一:
我的单个虚拟内核绑定到一个特定的物理内核,因此来宾实际上是在单个内核上运行。
没有将虚拟 CPU 硬绑定/分配到物理内核。因此,任何时候客户操作系统上的任何进程都需要启动一个新线程,它可以被分派到任何物理内核执行:四个中的任何一个,如我的示例所示。
后一种情况意味着客户操作系统在多核环境中运行,即使它“认为”它只有一个核心。 (“思考”是指 cat /proc/cpuinfo 之类的命令只报告一个核心)
我问的是一般性问题,但如果在该领域,例如 VirtualBox 和 VMWare 之间存在特殊差异,并且您碰巧知道它们,我会感谢您分享。
【问题讨论】:
标签: linux multithreading virtualbox vmware virtualization