由于我有一个支持超线程的CPU,我想知道分配比物理 CPU 内核数量更多的虚拟 CPU 内核是不是一个坏主意,如下警告所示:
成绩单:
分配给虚拟机的虚拟 CPU 数量多于主机系统上的物理 CPU 数量。这可能会降低虚拟机的性能。请考虑减少虚拟 CPU 的数量。
有人可以对这个话题进行推理吗?
编辑1:
有问题的 CPU 是 Intel Core i7-4700HQ, Ark Intel , CPU Benchmark
编辑2:
假设没有过时的硬件,例如 HDD(而不是 SSD)和/或低 RAM(此处vm.swappiness
为16GB,此 VM最低为 4GB)等。
您可以看到lscpu
命令的输出-
jack@042:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 56
On-line CPU(s) list: 0-55
Thread(s) per core: 2
Core(s) per socket: 14
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz
Stepping: 1
CPU MHz: 2600.000
CPU max MHz: 2600.0000
CPU min MHz: 1200.0000
BogoMIPS: 5201.37
Virtualization: VT-x
Hypervisor vendor: vertical
Virtualization type: full
L1d cache: 32K
L1i cache: 32K …
Run Code Online (Sandbox Code Playgroud) 我有一个lstopo --output-format txt -v --no-io > lstopo.txt
集群中 8 核节点的输出,它是https://dl.dropboxusercontent.com/u/13029929/lstopo.txt
该文件是节点的文本图。它对于我笔记本电脑的 Ubuntu 上的终端和 gedit 来说太宽了,它的一些右侧被我的笔记本电脑移动到左侧并与绘图的左侧部分重叠。我想知道如何正确查看文件?(补充:我发现我可以通过上传到dropbox并在Firefox中打开来正确查看绘图,这可以正确缩小绘图。但是在Firefox中打开本地文件会错误显示虚线“-”,我不知道为什么? 除了火狐,还有什么软件可以运行吗?)
每个核心“Core P#”中的“PU P#”是什么意思?为什么他们的数字不一样?
“L1i”是指L1指令缓存,“L1d”是L1数据缓存吗?
为什么L2和L3缓存没有指令缓存和数据缓存的区别?这对计算机来说很常见吗?
“Socket P#”是什么意思?“套接字”是否用于连接 L3 缓存和主内存?
“NUMANode P# (16GB)”是什么意思?是主存芯片吗?
图中是否有四个内核共享一个主存芯片,其他四个内核共享另一个主存芯片?
节点中的所有8个内核都没有共享一个主内存吗?那么节点是不是就像一个分布式系统,有两台四核计算机,它们之间没有共享内存?两个4核组怎么交流?
“Machine (32GB)”是指6中提到的两个主存芯片的大小之和吗?
lscpu
我的电脑的输出看起来像 -
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 69
Stepping: 1
CPU MHz: 1200.093
BogoMIPS: 3392.08
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
Run Code Online (Sandbox Code Playgroud)
这是否意味着我有 4 个 CPU 和 2 个内核?
当然我们知道cat /proc/cpuinfo |grep "cpu cores"
会给出一个输出
[root@14:47 ~]# cat /proc/cpuinfo |grep "cpu cores"
cpu cores : 2
cpu cores : 2
cpu cores : 2
cpu cores : 2
Run Code Online (Sandbox Code Playgroud)
但实际上我想获得 cpu 内核的总数。我希望结果是
cpu cores: 8
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这样的结果?