我正在尝试为每个物理内核(CPU的)configurationvCPU查找虚拟化的一些文档或最佳实践指南。 如果重要的话,我正在看vmware的虚拟化实现。 例如,一个Intel Xeon CPU可能有4,8个内核。 我有兴趣了解更多有关每个物理内核只有一个vCPU的configuration。 我所说的供应商肯定认为可以将单个核心configuration到多个vCPU中。
目前为止,我在研究中普遍看到的是,“这取决于你的应用”。 在这种情况下,我的应用程序正在编辑代码,编译/链接,testing和configurationpipe理。 当然,并不是所有的虚拟机都需要configuration多个vCPU,但是在一般情况下。
一个物理CPU可以被用作许多vCPU。 虚拟化解决scheme中很less用完CPU资源。 内存和存储一直是限制因素…
请记住,在VMware中,CPU使用率以MHz表示,而不是核心。除非您在所有的时候都将100%的虚拟CPU挂钩,否则我认为您的供应商是不正确的。
我们来看下面的系统集群…
从另一个活动群集 – 3个主机42个虚拟机
要扩展ewwhite的写作,除非有可以明确利用多个vCPU的应用程序或每个vCPU有多个核心,否则将多个vCPU /核心分配给VM绝对没有任何好处。 实际上,多数情况下,实际上最终会导致性能下降,而不是在一个分配了一个内核的vCPU上运行,部分原因是运行多个vCPU所需的调度开销。
FWIW,在VDI设置中,经常引用的数字是每个物理核心5个vCPU。 当然,这是考虑到办公室工作桌面。 如果您的虚拟机真的忙于编译代码,那么您可能无法为每个物理内核安装5个vCPU。
这么多人之所以说“这要看”是因为它的确如此。 查看CPU就绪值,然后决定是否可以将更多CPU负载加载到特定系统上。 “CPU准备就绪”是准备执行命令的vCPU的度量,但必须等待物理CPU时间变为可用。
就你而言,如果你正在编译大型程序,那么你的虚拟机实际上需要大量的CPU时间是完全可能的。 正如ewwhite指出的,通常虚拟化往往是磁盘I / O和RAM受限,而不是CPU受限。
基本问题与物理系统上的进程调度基本相同。 只要系统负载低于内核数量(甚至是逻辑处理器,在超线程的情况下),一切都很好,处理器可以处理负载。
所以只要所有使用的vCPU上的并发负载不超过你的物理内核可以处理的负载就好了。
为了您的要求,只有编译是一个CPU的intently工作,这是只需要不时。 对于编译器-VM,我们分配尽可能多的CPU。 因此,如果需要编译,将尽可能快地完成(如果您的编译器支持并列编译)。
对于一个负载不变的编译器VM(例如,如果你提供了一个internet服务来进行编译,并且一直在使用),这可能不是真的。
我见过的一个经验法则(可能在VMware的文档中)并不是分配给虚拟机更多的核心,而是物理上存在于主机上,因为这会导致在单个核心上模拟多个vCore,从而增加不必要的开销。