我怎样才能在每个核心上运行 2 个线程,我在 ubuntu 上有 8 个核心和 16 个线程

我怎样才能在每个核心上运行 2 个线程,我在 ubuntu 上有 8 个核心和 16 个线程

我有一台 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 

当然,如果应用程序只使用一个核心/线程,则该应用程序只会使用您定义的池中的第一个。

相关内容