核心与线程:我应该在这台机器上运行多少个线程?

核心与线程:我应该在这台机器上运行多少个线程?

我应该在这台机器上运行多少个线程?

lscpu说有96个核心。这些是物理核心吗?我可以在这台机器上运行的最大和最佳线程是多少?

https://stackoverflow.com/a/10670440/610569显示我可以在每个核心上运行超过 20 个线程。这样可以吗?这是最佳选择吗?

alvas@server:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                96
On-line CPU(s) list:   0-95
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4
NUMA node(s):          4
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E5-4657L v2 @ 2.40GHz
Stepping:              4
CPU MHz:               2700.000
CPU max MHz:           2900.0000
CPU min MHz:           1200.0000
BogoMIPS:              4801.91
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92
NUMA node1 CPU(s):     1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93
NUMA node2 CPU(s):     2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94
NUMA node3 CPU(s):     3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95

请原谅我对核心/线程的新手。

答案1

这是你想知道的

Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4

您有 4 个 CPU 插槽,每个 CPU 最多可以有 12 个核心,每个核心可以有两个线程。

您的最大线程数为 4 CPU x 12 核心 x 每个核心 2 个线程,所以 12 x 4 x 2 等于 96。因此,最大线程数为 96,最大核心数为 48。

什么是更好的 ?

这取决于您想做什么,更多线程意味着更低的频率(即 3ghz 一分为二),但对于高 CPU 使用率任务(即游戏)来说,更好的多任务处理(更多线程)和使用完整内核(无超线程)更好。

希望这对你有帮助。

答案2

您的机器

4 个插槽 x 12 个核心/插槽 x 2 个线程/核心,即 96 个线程和 48 个核心

理想情况下,没有 I/O、同步等,并且没有其他运行,使用 48 个任务线程。

现实地,使用大约 95 个线程可能更好地发挥您机器的最大值。

因为

核心有时会等待数据或 I/O,因此线程 2 可以运行而线程 1 不运行。

最后,您应该根据您的具体任务进行测试以获取最佳数字。

答案3

每个 CPU 核心线程(基于硬件的线程) - 在我看来,在大多数情况下,96 个核心中的一个可以有效地处理 16 个线程(基于软件的线程 fe C++ thread.h)。

答案4

通过运行 htop 或 ps 命令返回机器上的进程数,你将发现机器上可以运行多少个线程。

您可以使用有关“ps”命令的手册页。

man ps

如果要计算所有用户进程的数量,可以使用以下命令之一:

  1. ps -aux| wc -l
  2. ps -eLf | wc -l

计算用户进程的数量:

  1. ps --User root | wc -l

另外,您可以使用“htop”[参考]

在 Ubuntu 或 Debian 上安装:

sudo apt-get install htop

在 Redhat 或 CentOS 上安装:

yum install htop
dnf install htop      [On Fedora 22+ releases]

如果你想从源代码编译 htop,你会发现它这里

相关内容