Сколько потоков я должен работать на этой машине?
Мой 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
Простите мой noobiness в ядрах/потоках.
Это - то, что Вы хотите знать
Thread(s) per core: 2
Core(s) per socket: 12
Socket(s): 4
, у Вас есть 4 сокета ЦП, каждый ЦП может иметь, до, 12 ядер и каждое ядро могут иметь два потока.
Ваше макс. количество потока, 4 ЦП x 12 ядер x 2 потока на ядро, таким образом, 12 x 4 x 2 равняется 96. Поэтому макс. количество потока равняется 96, и макс. базовое количество равняется 48.
, Что лучше?
, Который зависит от того, что Вы хотите сделать, больше потоков означает меньше частоты (т.е. 3 ГГц становится разделенным в два), но лучшая многозадачность (больше потоков) и использование полных ядер (никакая гиперпоточность) лучше для высоких задач использования ЦП (т.е. игры).
Hope это помогает Вам.
Каждый поток ядра CPU (основанный на аппаратных средствах поток) - одно из Ваших 96 ядер эффективно может обработать 16 потоков (основанный на программном обеспечении поток f.e. C++ thread.h) в большинстве случаев по моему теоретическому мнению.
Вы найдете, сколько потоков можно работать машине путем выполнения htop, или PS управляют что количество возвратов процесса на машине.
можно использовать страницу справочника о команде 'PS'.
man ps
, Если Вы хотите вычислить количество всего пользовательского процесса, можно использовать одну из этих команд:
ps -aux| wc -l
ps -eLf | wc -l
Вычисление количества пользовательского процесса:
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 от исходного кода, Вы найдете его здесь .
Ваша машина:
4 сокета x 12 ядер на сокет x 2 потока на ядро, то есть 96 потоков и 48 ядер
В идеале, без ввода-вывода, синхронизации и т. д., и больше ничего не запущено, используйте 48 потоков задач.
На самом деле, использование около 95 потоков может быть лучше для максимального использования вашей машины.
Поскольку:
ядро иногда ожидает данных или операций ввода-вывода, поэтому поток 2 может выполняться, пока поток 1 не запущен.
Наконец, вы должны провести тестирование, чтобы получить наилучшее число, основанное на ваших конкретных задачах.