VMWare虚拟机处理器数量与每个处理器内核数量概念,以及分配CPU资源详解

发布时间 2024-01-04 15:36:45作者: 北境之城

VMWare虚拟机处理器数量与每个处理器内核数量概念,以及分配CPU资源详解
概念
CPU的物理核心和超线程
CPU的睿频机制
总结
概念

处理器数量:虚拟机上的CPU个数(上图中的插槽数,是机器主板上CPU的个数,并非CPU的物理核心数)
每个处理器的内核数量:每个虚拟的CPU有几个内核(可以看到虚拟机内部并不区分物理核心数和线程数)
处理器内核总数:处理器数量 * 每个处理器的内核数量(即物理机分配给虚拟机的CPU线程数,只要该参数一样,不管上面两个参数怎么调整整机性能都是一致的)
以上3个参数的上限由【当前要安装的目标操作系统所支持的CPU最大个数、物理机CPU线程总数、VMWare版本所支持的虚拟机最大核心数】三者中的短板决定


CPU的物理核心和超线程
问题:现有一台CPU为12核24线程的物理机(该CPU正常发挥水平),要使得目标虚拟机至多拥有其50%的CPU性能,该怎么分配?
错误回答:分配CPU资源时,使“处理器内核总数”等于12就行。
如果将问题中的CPU换为24核24线程,那这个回答就是正确的。(所以你的CPU如果没有超线程,那么文章到这里就结束了~笑)
超线程的性能并不等于两个CPU物理核心的性能,多出的线程能提供多少性能取决于CPU的架构。(多出的线程性能可用CPU性能测试工具测出)
操作系统在调用有超线程技术的CPU处理多核应用时,优先调用物理核心(物理线程),当所有的物理核心占满后再调用超线程技术提供的线程。
比如问题中的CPU有24个线程,其中物理线程为A1–A12,虚拟线程为B1–B12,A1与B1同属于一个核心,当A1占满后,操作系统会优先调用A2而不会调用B1。当A1–A12都占满后,才会调用B1–B12(实际调用情况可能不是如此,但是展现出来的算力可以依此表现),所以分配12个线程很可能会出现远超50%性能的情况。