Jump to content
Калькуляторы

Распределение нагрузки по ядрам процессора

Добрый день.

 

Не распределяется нагрузка по всем ядрам процессоров.

 

Стоит два процессора Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz

 

Задействуются только 8 ядер первого процессора или 16 потоков в не зависимости с одним процессором запускать или с двумя.

 

Кто то знает в чем проблема и как это исправить?

cpu.jpg

Share this post


Link to post
Share on other sites

@Malissa 

Со всей очевидностью недостаточно сведений:

 

OS

Модель сетевого адаптера ( сколько их)

Что за нагрузка

Что за стек 

Share this post


Link to post
Share on other sites

Если речь про роутинг и прочее - то NUMA тут плохой выбор.

На такой хрени базы гонять, компелять и прочие рассчёты.

Share this post


Link to post
Share on other sites
15 часов назад, Ivan_83 сказал:

Если речь про роутинг и прочее - то NUMA тут плохой выбор.

Немного неправильное утверждение. Правильное - если речь про роутинг/нат/файрвол - то многопроцессорность (не многоядерность!) очень плохой выбор.

 

Есть DL-360 то ли G5 то ли G6. Мать двухсокетная, но при том в системе всего один NUMA домен. И на роутинге показал себя весьма печально.

Share this post


Link to post
Share on other sites
В 15.06.2019 в 15:03, taf_321 сказал:

Правильное - если речь про роутинг/нат/файрвол - то многопроцессорность (не многоядерность!) очень плохой выбор.

С односокетных NUMA включается только у тредриперов, из того что я знаю, все остальные где один сокет NUMA не имеют.

Share this post


Link to post
Share on other sites
В 15.06.2019 в 15:03, taf_321 сказал:

Есть DL-360 то ли G5 то ли G6. Мать двухсокетная, но при том в системе всего один NUMA домен. И на роутинге показал себя весьма печально.

если двухсокетная с одним NUMA доменом - то это явно LGA771. и да, они в роутинге таки печальные, что и не удивительно (контроллер памяти-то в чипсете, + медленная DDR2 FBDIMM)...

Share this post


Link to post
Share on other sites

В биосе про NUMA ничего не нашли. Скрины прикреплены.

 

numactl --hardware | grep cpus
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

 

Сервер HP ProLiant DL360 Gen9. Используется для маршрутизации сетевого трафика.

 

WP_20190618_01_12_32_Pro.jpg

WP_20190618_01_13_38_Pro.jpg

 

# /proc/interrupts
                                                                                                                                                                        
  CPU0    CPU1    CPU2    CPU3    CPU4    CPU5    CPU6    CPU7    CPU8    CPU9   CPU10   CPU11   CPU12   CPU13   CPU14   CPU15   CPU16   CPU17   CPU18   CPU19   CPU20   CPU21   CPU22   CPU23   CPU24   CPU25   CPU26   CPU27   CPU28   CPU29   CPU30   CPU31   CPU32   CPU33   CPU34   CPU35   CPU36   CPU37   CPU38   CPU39
                                                                                                                                                                        
  9687       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-0
     0   11370       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-1
     0       0   10870       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-2
     0       0       0   11574       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-3
     0       0       0       0   11529       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-4
     0       0       0       0       0   11500       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-5
     0       0       0       0       0       0   11718       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-6
     0       0       0       0       0       0       0   11951       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-7
     0       0       0       0       0       0       0       0   11087       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-8
     0       0       0       0       0       0       0       0       0   11627       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-9
     0       0       0       0       0       0       0       0       0       0   10400       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-10
     0       0       0       0       0       0       0       0       0       0       0   11261       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-11
     0       0       0       0       0       0       0       0       0       0       0       0   11283       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-12
     0       0       0       0       0       0       0       0       0       0       0       0       0   11025       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-13
     0       0       0       0       0       0       0       0       0       0       0       0       0       0   10211       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-14
     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   10447       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth0-TxRx-15
  9625       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-0
     0   10898       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-1
     0       0   10508       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-2
     0       0       0   10787       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-3
     0       0       0       0   11110       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-4
     0       0       0       0       0   10406       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-5
     0       0       0       0       0       0   10383       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-6
     0       0       0       0       0       0       0   10782       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-7
     0       0       0       0       0       0       0       0   10009       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-8
     0       0       0       0       0       0       0       0       0   11512       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-9
     0       0       0       0       0       0       0       0       0       0    9820       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-10
     0       0       0       0       0       0       0       0       0       0       0   10595       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-11
     0       0       0       0       0       0       0       0       0       0       0       0   10864       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-12
     0       0       0       0       0       0       0       0       0       0       0       0       0   10362       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-13
     0       0       0       0       0       0       0       0       0       0       0       0       0       0   10050       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-14
     0       0       0       0       0       0       0       0       0       0       0       0       0       0       0    9989       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth1-TxRx-15
  4684       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0   eth2-tx-0
   301     307     318     316     311     309     317     314     305     309     305     314     310     335     312     313       3      14       5       1       2       5     102      18      27      19       1       1       1      14      16       2       1       1       1       3      94       1       2       8   interrupts
    96      96      94      95      94      95      96      95      93      94      95      95      95      94      95      95      17       7       3       1       2       3      48       5      11       9       1       1       1       5       6       2       1       1       1       2      36       2       2       4   interrupts
                                                                                                                                                                        
# Load per cpu:

  CPU     Interrupts   NET RX   NET TX   total   dropped   time_squeeze   cpu_collision   received_rps

  CPU0         24405    20861      106   34026         0              0               0              0
  CPU1         22672    21690       41   34209         0              0               0              0
  CPU2         21792    20906       45   39450         0              0               0              0
  CPU3         22774    21749       37   30181         0              0               0              0
  CPU4         23048    22006       38   27668         0              0               0              0
  CPU5         22312    21518       33   30442         0              0               0              0
  CPU6         22516    21468       44   29341         0              0               0              0
  CPU7         23142    22160       37   35235         0              0               0              0
  CPU8         21495    20555       32   38061         0              0               0              0
  CPU9         23542    22578       37   35224         0              0               0              0
  CPU10        20620    19630       90   34012         0              0               0              0
  CPU11        22265    21306      103   29419         0              0               0              0
  CPU12        22555    21614       91   27423         0              0               0              0
  CPU13        21816    20939       92   34165         0              0               0              0
  CPU14        20668    19746       90   35561         0              0               0              0
  CPU15        20845    19912       89   31498         0              0               0              0
  CPU16           51        3        0       0         0              0               0              0
  CPU17           24        3        0       0         0              0               0              0
  CPU18           11        3        0       0         0              0               0              0
  CPU19            5        3        0       0         0              0               0              0
  CPU20            7        3        0       0         0              0               0              0
  CPU21           11        3        0       0         0              0               0              0
  CPU22          153        3        0       0         0              0               0              0
  CPU23           26        3        0       0         0              0               0              0
  CPU24           41        3        0       0         0              0               0              0
  CPU25           32        3        0       0         0              0               0              0
  CPU26            5        3        0       0         0              0               0              0
  CPU27            5        3        0       0         0              0               0              0
  CPU28            5        3        0       0         0              0               0              0
  CPU29           22        3        0       0         0              0               0              0
  CPU30           45        3        0       0         0              0               0              0
  CPU31            7        3        0       0         0              0               0              0
  CPU32            5        3        0       0         0              0               0              0
  CPU33            5        3        0       0         0              0               0              0
  CPU34            5        3        0       0         0              0               0              0
  CPU35            8        3        0       0         0              0               0              0
  CPU36          133        3        0       0         0              0               0              0
  CPU37            6        3        0       0         0              0               0              0
  CPU38            7        3        0       0         0              0               0              0
  CPU39           15        3        0       0         0              0               0              0

# Network devices

  Device   rx-packets   rx-mbits   rx-errors   dropped   missed   fifo   length   overrun   crc   frame   tx-packets   tx-mbits   tx-errors

  eno4              0          0           0         0        0      0        0         0     0       0            0          0           0
  eno2              0          0           0         0        0      0        0         0     0       0            0          0           0
  eth2              8          0           0         0        0      0        0         0     0       0       309497        290           0
  eth0         302209        564           0         0        0      0        0         0     0       0       370792       2999           0
  lo                0          0           0         0        0      0        0         0     0       0            0          0           0
  eno3              0          0           0         0        0      0        0         0     0       0            0          0           0
  eth1         343908       2973           0         0        0      0        0         0     0       0       275173        527           0

 

Edited by Malissa

Share this post


Link to post
Share on other sites

1) Для начала отрубить гипертрейдинги всякие.

2) Раскидать прерывания

.....

0) Дать по башке тому, кто покупал, т.к. для форвардинга хватит железки стоимостью 1-го камня E5-2650 v3 @ 2.30GHz

Share this post


Link to post
Share on other sites
14 minutes ago, TriKS said:

1) Для начала отрубить гипертрейдинги всякие.

2) Раскидать прерывания

.....

0) Дать по башке тому, кто покупал, т.к. для форвардинга хватит железки стоимостью 1-го камня E5-2650 v3 @ 2.30GHz

 

При отключении гипертрейдинга из 10 ядер загружены только 8 или 16 если включен.

Раньше в железке был один камень, второй взяли под увеличение нагрузки, надеялись что будет работать а не надо будет покупать другой сервер.

Share this post


Link to post
Share on other sites
2 часа назад, Malissa сказал:

HP ProLiant DL360 Gen9

В базе у изделия двухпортовый i350, там 8 (восемь) очередей на порт. Вот он у вас ровно на 16 потоков и распределился. А, поскольку драйвер умный и про NUMA и PCIE Root в курсе, то на второй CPU и не лезет. Хотите больше - покупайте сетевку получше, или надо танцевать с бубнами (про операционку мы так и не услышали)

Share this post


Link to post
Share on other sites
8 minutes ago, jffulcrum said:

В базе у изделия двухпортовый i350, там 8 (восемь) очередей на порт. Вот он у вас ровно на 16 потоков и распределился. А, поскольку драйвер умный и про NUMA и PCIE Root в курсе, то на второй CPU и не лезет. Хотите больше - покупайте сетевку получше, или надо танцевать с бубнами (про операционку мы так и не услышали)

debian 9.5

 

сетевуха используется другая: Intel Corporation 82599ES 10-Gigabit SFI/SFP+

Edited by Malissa

Share this post


Link to post
Share on other sites

Варианты:

irqbalance или более интеллектуальным средством вроде rss-ladder раскидать прерывания на два проца (выключив HT). Очевидный минус - процам придется лазать в память друг к другу, могут вырасти задержки.

RPS. Хороший скрипт валяется в https://stackoverflow.com/questions/30618524/setting-receive-packet-steering-rps-for-32-cores Очевидный минус - тот же, что и в предыдущем варианте, плюс рост нагрузки по softirq

Установка в сервер еще одной сетевки (внимательно посмотреть, чтобы в тот порт, который идет от другого CPU, чем для встроенной сети) и деление трафика как-то между ними (не бондингом). Минус: усложнится администрирование и могут вылезти какие-нибудь еще проблемы

Share this post


Link to post
Share on other sites
4 часа назад, Malissa сказал:

Раньше в железке был один камень, второй взяли под увеличение нагрузки, надеялись что будет работать а не надо будет покупать другой сервер.

Один камень продует форвардингом все 10Г, что на:

 

2 часа назад, Malissa сказал:

сетевуха используется другая: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ 

 

 

4 часа назад, Malissa сказал:

При отключении гипертрейдинга из 10 ядер загружены только 8 или 16 если включен.

Google.com->увеличение очередей сетевой карты. А вообще - листайте

Вам еще б и буфера покрутить, и лишак всякий отрубить вроде gso\tso\gro но то все в гуглах есть.

Ну и прислушаться к комраду jffulcrum

 

Edited by TriKS

Share this post


Link to post
Share on other sites
2 часа назад, Malissa сказал:

Intel Corporation 82599ES 10-Gigabit SFI/SFP+

Тогда вариант 4:

ethtool -L ethX combined N 

 

N - число очередей, которые хотите использовать (прерываний создастся столько же).  Для каждого порта (устройства eth) отдельно. Максимум у этой карты 64 (128 при виртуализации).

И потом irqbalance  на все CPU. Минусы прежние.

Share this post


Link to post
Share on other sites

Писали в HP, там нам ответили что это баг прошивки биоса и надо прошивать биос, купите у нас продление лицензии а потом мы вам дадим прошивки.

Share this post


Link to post
Share on other sites
21 час назад, jffulcrum сказал:

Это бредовый ответ поддержки. 

почему же бредовый? хьюлетт (hpe) нынче биосы за спасибо не отдает. только за денежки.

 

В 20.06.2019 в 16:51, Malissa сказал:

и надо прошивать биос, купите у нас продление лицензии

скачайте с какого-нибудь рутрекера свежий "Proliant Service Pack", там, в зависимости от свежести, может быть и обновление для вашего биоса.

Share this post


Link to post
Share on other sites

@nixx Бредовый в контексте того, что проблемы вызвана багом в BIOS 

Share this post


Link to post
Share on other sites

Ссылка на HP Service Pack

Что касается прерываний, судя по чипу, у вас стоит Intel X520-DA2, каждый порт прибейте к определенному сокету, всегда так делали

 

Загрузка по ядрам

image.png.58c9d79ede00f92e78afadfecd58656f.png

 

Процессоры

image.thumb.png.f366d2f2742c4e28630a753afed4a74b.png

Edited by FATHER_FBI

Share this post


Link to post
Share on other sites

подниму тему - очень похожая проблема, и тоже на дебиане.

Debian 10, сетевушка Mellanox 4, генератор трафика pkt-gen на фряхе.

 

с родным драйвером, который идет в дистрибутиве, сетевая нагружает ядра через одно.

ну то есть сервер - один проц - шесть ядер. загружены только 1, 3, 5 (по htop, по /proc/interrupts).

сервер - два проца по 8 ядер в каждом - загружены 1, 3, 5, 7, 9, 11, 13, 15.

гипертрейдинг выключен, конечно же. ядра честные.

smp_affinity - в порядке - количество очередей равно количеству процов, и все на разных ядрах (0001, 0002, 0004, 0008, 0010 и т.д.), irqbalance из коробки отсутствует.

причем драйвер mlx5_core в дебиане имеет версию 5.0, о которой сайт мелланокса вообще ничего не слышал (там последняя 4.6).
 

кто-нибудь сталкивался? что можно покрутить?

 

пока пытаюсь вкорячить версию 4.6 с сайта мелланокса, но она под дебиан 9.6, и есть некоторые сомнения в стабильности ее работы под 10-м.

 

ps: intel 82599 в этом же сервере нагружает все ядра равномерно.

Share this post


Link to post
Share on other sites

сам спросил, сам отвечаю... )

помогло переключение алгоритма хэширования RSS с XOR (почему-то оно включено по дефолту у мелланокса) на Toeplitz.

Edited by nixx

Share this post


Link to post
Share on other sites
Quote

$interf=shell_exec("cat /proc/interrupts |  grep -o 'eth[0-9]\+' | uniq");
$interfaces=preg_split("#[\r\n]+#", $interf);
$interfaces = array_filter($interfaces);
$threads_=shell_exec("lscpu | grep Thread");
$threads__=explode(':', $threads_);
$threads=trim($threads__[1]);
$cnt_int=count($interfaces);

$cc=1;
foreach ($interfaces as $key => $value){
$n=1;
$p = exec("cat /proc/cpuinfo | grep MHz | wc | awk '{print $1}'");
$interr = "cat /proc/interrupts  | grep $value | awk '{print $(1)}' | sed -e 's/\://g'";
$result = shell_exec($interr); 
$oparray = preg_split("#[\r\n]+#", $result);
$res = array_filter($oparray);

$i=$n;
$i1=0;

$count_res=(count($res)-1);

foreach($res as $line) {

$p1=$p;
exec("echo 0-$p1 > /proc/irq/$line/smp_affinity_list");

if ($i1 < $count_res){
exec("echo ffffff >  /sys/class/net/$value/queues/rx-".$i1."/rps_cpus");
}

$cc_plus=($cc*$threads*2);
if ($count_res==0){
exec ("echo ".dechex($cc_plus)." > /proc/irq/$line/smp_affinity");
} else {
$i2=dechex($i);
exec ("echo $i2 > /proc/irq/$line/smp_affinity");
$i=($i)*2;
$i1++;        
}
}
$n=$n*2;
$cc++;
}

 

 

Eto PHP

Share this post


Link to post
Share on other sites

зачем так сложно, все гораздо проще если кол-во очередей = кол-ву ядер

for i in `ls /sys/class/net/eth*/queues/rx-*/rps_cpus`; do echo ffff >$i; done

for i in `awk '/eth[0-9]+-/ {split($5,a,"-");print $1.a[3]}' /proc/interrupts`; do int=`echo $i|sed 's,:.*,,'`; mask=`echo $i|awk '{split($1,a,":"); print 2**a[2]}'`; echo $mask > /proc/irq/$int/smp_affinity; done

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now