我有一台 Intel i7 10700k,有 8 个内核和 16 个线程。在 Ubuntu 上,我看到每个内核只有 1 个线程。我认为每个内核有 2 个线程。我该如何解决这个问题?
这是输出lscpu
:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1
Core(s) per socket: 8
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 165
Model name: Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz
Stepping: 5
CPU MHz: 3792.008
BogoMIPS: 7584.01
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 256 KiB
L1i cache: 256 KiB
L2 cache: 2 MiB
L3 cache: 128 MiB
答案1
不要以为所有应用程序都能充分利用多核 CPU。你没有 2 个核心线程。看你的描述,我猜你的主板在这方面受到限制,所以额外的线程会被忽略。几年前我有一台有同样限制的机器
大多数都只是让操作系统来管理,当然取决于硬件和 BIOS 设置。
你仍然可以在软件方面优化运行
如果您确定没有设置/硬件问题,请使用taskset或类似工具。
您可以使用以下方式“强制”应用程序在专用核心池上运行任务集
例子 :
taskset -cp 4-8 firefox
当然,如果应用程序只使用一个核心/线程,则该应用程序只会使用您定义的池中的第一个。