如何使用 perl 脚本检查 Linux 机器上是否启用了超线程?
我正在尝试以下方式:
dmidecode -t processor | grep HTT
Run Code Online (Sandbox Code Playgroud)
让我知道我是否在正确的轨道上。
由于我有一个支持超线程的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)等。
我明白?(%CPU) ? logicalcores*(1+?)
(其中 ? 是度量和舍入误差)。但是,如何在 2 核系统上拥有 2 个不同的进程,每个进程占用 200% 的 CPU(以 htop 衡量)?
编辑上述等式中的核心是指逻辑核心,即考虑所有超线程、CPU 数量等。
编辑 2尽管 htop 显示了我附加的处理器数量 cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU T9600 @ 2.80GHz
stepping : 10
cpu MHz : 800.000
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid …
Run Code Online (Sandbox Code Playgroud) CPU是i7-3770@3.40GHz。它有 4 个内核,每个内核有 2 个线程。这是dmidecode
输出:
# dmidecode -t 4
# dmidecode 2.9
SMBIOS 2.7 present.
Handle 0x0042, DMI type 4, 42 bytes
Processor Information
Socket Designation: SOCKET 0
Type: Central Processor
Family: <OUT OF SPEC>
Manufacturer: Intel(R) Corporation
ID: A9 06 03 00 FF FB EB BF
Version: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
Voltage: 1.1 V
External Clock: 100 MHz
Max Speed: 3800 MHz
Current Speed: 3400 MHz
Status: Populated, Enabled
Upgrade: <OUT OF SPEC>
L1 Cache …
Run Code Online (Sandbox Code Playgroud) 我使用 i5-2410M 处理器,默认情况下,它在我的笔记本电脑上设置为执行超线程。考虑到这是一个 2 核处理器,这意味着它一次可以执行 4 个线程。这也意味着单线程应用程序最多只能使用 25% 的处理能力,而我宁愿让它们最多使用 50%。禁用超线程会不会有不良影响(这是开发机,运行的是桌面)?我什至阅读top
正确吗?