一. 官方资料
在官方文档,找到一些关于虚拟机处理器配置的相关内容;在官方社区,没有找到对应话题。两句话很有启发性,即:
(1)"您可以配置虚拟机的处理器设置,包括处理器数量、每个处理器的核心数,以及虚拟化引擎的首选执行模式"
(2)"只有至少具有逻辑处理器的主机才支持指定多个虚拟处理器"。
对啊,为什么这两个参数一定要是指导我们物理主机如何去"分配"处理器资源给虚拟主机,而不能是指导如何去"虚拟"虚拟主机(如ubuntu等)本身的虚拟处理器参数呢?很显然,官方没有这样的界定,于是我开始了我的求证之路。
二. 主流说法
说法一:虚拟机处理器设置页面的“处理器数量”指的是“核心数”,“每个处理器的内核数量”是超线程数量。
这个说法的赞同人数挺多的,毕竟官方不会这么无聊搞出两个一样的概念,认证过程说的也蛮有道理的。但是,下面的例子有点驳斥这种说法。如,我的物理主机 4核8线程,配置 8 * 1正常运行,我的核心只有4核,而我配置8也可以,我哪里来那么多物理给它?感觉,这个说法站不住。
说法二:“处理器数量”跟物理主机的CPU个数一样
这个我有幸遇到一个博主写的论证博客,有些说法我也挺赞同的,主要是最后的观点不谋而合。
博主的结论:支持说法2,且VMware占用的是最终的“超线程”。但是,他没有提及这两个参数的意义是什么。
三. 个人猜想
(1)“处理器数量” :指导如何虚拟化 -- 虚拟主机的虚拟处理器数量
(2)“每个处理器的核心数量” :指导如何虚拟化 -- 虚拟主机的每个虚拟处理器的核心数量
(3)“处理器内核总数” :分配处理器依据 -- 真实物理主机分配给虚拟主机的处理器线程总数(真实处理器资源)
注意表达前缀:“虚拟主机的” ,即这些是虚拟主机被虚拟化出来的处理器参数。意味这些处理器参数在虚拟机内部的处理器信息是可查询的,那么就可以很容易去验证啦。
配置成功关键:“处理器内核总数”决定着配置参数是否能够通过(处理器内核总数 = 处理器数量 * 每个处理器的核心数量 ),即 只要“处理器内核总数”不超出我们真实物理主机处理器的线程总数,配置参数都可以通过。
1. 说明一下我的猜想:
(1)“处理器数量”和“每个处理器的核心数量”这两个参数意义重点不在于指导物理主机怎么 “分配外部处理器资源” 给虚拟主机,而是在于指导如何 “配置虚拟主机内部的处理器参数” ,即如何去虚拟化虚拟主机的处理器参数,即CPU数量、物理核心。
(2) “处理器内核总数”则是真实物理主机分配给虚拟主机的真正处理器资源,分配的是VMware占用的是最终的“线程总数”,是真实物理主机分配给虚拟主机的处理器的分配依据。
2. 举个例子说明猜想:
处理器数量 :2
每个处理器的核心数量: 4
处理器内核总数 :8 ( = 2 * 4)
2 和 4 不是在于指导物理主机(且称为windows)如何分配外部处理器资源给虚拟主机,而是在于指导如何虚拟化虚拟主机(且称为ubuntu)的内部处理器。配置成功之后,我们可以在虚拟主机(ubuntu)的 /proc/cpuinfo中看到,处理器数量是2,每颗处理器的物理核心是4,这个是虚拟主机的虚拟处理器参数,不是物理主机分配的外部处理器资源,真实分配的处理器资源是8,即分了8个线程,只要8没有超出真实处理器的线程总数,配置就可以成功。
3. 个人猜想实验例证:
---- 物理主机处理器资源:4核8线程
---- 配置没有超出8线程的(配置成功) : 1 * 4 1 * 8 2 * 2 2 * 4 4 * 2 8 * 1
---- 配置已经超出8线程的(配置失败) : 8 * 2 4 * 3 2 * 6 1 * 12
---- 为什么这样配置原因:
(1)因为第一种说法说是处理器数量是“核心数”,而我的处理器是四核,如果我设置为 8 * 1 岂不是应该不被允许,(即配置失败,因为我的只有4核) ??那么假如配置通过了,则可以说明第一种说法是错误的;
(2)可以看到配置超出8线程的则不被允许,而配置没有超出8线程的则可以通过,则说明配置参数能否被通过,是看配置参数的处理器内核总数是否超出真实物理主机的线程数(比如我的是8线程)(关键词:超出、超线程数)
(3)通过多个可以配置成功的例子,去查看虚拟机虚拟出来的处理器数量、CPU物理核数、CPU逻辑核数,可以发现我们的配置参数和虚拟机的处理器参数有很大的联系(关键词:虚拟)
1)查看我的处理器资源(CPU一颗、四核八线程)
2)贴上查询 虚拟机Ubuntu 的 CPU数量、CPU物理核数、CPU逻辑核数的方法
3)测试
//查看不同physical id的数量,直接输出CPU数量
cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l
// 查看不同core id的数量,直接输出CPU物理核数(注意:输出的是一颗CPU的物理核数)
cat /proc/cpuinfo | grep "core id" | sort -u | wc -l
// 查看不同 processor 的数量,直接输出CPU逻辑核数总数(注意:输出的是本服务器所有CPU的逻辑核的总数)
cat /proc/cpuinfo | grep "processor" | sort -u | wc -l
实验输出:
1. 没有超出限制(配置成功)的例子:(处理器内核总数 <= 真实物理主机的线程总数,此处为8)
2. 已经超出限制(配置失败)的例子:(处理器内核总数 > 真实物理主机的线程总数,此处为8)
实验结论:
(1) 第一种说法 :“处理器数量”是“核心数”,显然是错误的;
(2) 第二种说法 :VMware占用的是最终的“超线程”,在这里也得到了辅助证明;
(3) 自己的说法 :
(1)“处理器数量” :指导如何虚拟化 -- 虚拟主机的虚拟处理器数量
(2)“每个处理器的核心数量” :指导如何虚拟化 -- 虚拟主机的每个虚拟处理器的核心数量
(3)“处理器内核总数” :分配处理器依据 -- 真实物理主机分配给虚拟主机的处理器线程总数(真实处理器资源)
配置关键:“处理器内核总数 ”是否超出真实物理主机的线程总数,即 “处理器内核总数”不能超出我们真实处理器的线程总数
值得注意:在虚拟主机(ubuntu)中,“逻辑核心总数 ”和 “物理核心总数” 相同 ,猜测他们是一个物理核心对应一个逻辑核心
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-01-15 openstack维护
2016-01-15 rdp客户端 for iso andrio linux
2016-01-15 openstack django timezone 创建的windows 虚拟机 时间 与正常时间差8个小时 设置正常时间重启时间还是正确的 但是 一停机再启动 windows 的虚拟机时间就又差8个小时了
2014-01-15 Mellanox OFED2.1-X安装记录