Невозможно использовать все каналы памяти с помощью testpmd

Я использую testpmd (DPDK 17.11.1). Я создал два порта P0 и P1 и отправил трафик с P0 на P1. И я обнаружил, что он использует только два канала памяти. Ниже приводится команда для запуска testpmd:

./testpmd -n4 -l2,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33 -- --rxd=4096 --txd=4096 --numa --rxq=8 --txq=8 --nb-cores=16 --numa --forward-mode=mac -i

Вот результат использования инструмента pcm, который говорит, что только 2 из 4 каналов памяти используются:

|---------------------------------------||---------------------------------------|
|---------------------------------------||---------------------------------------|
|--             Socket  0             --||--             Socket  1             --|
|---------------------------------------||---------------------------------------|
|--     Memory Channel Monitoring     --||--     Memory Channel Monitoring     --|
|---------------------------------------||---------------------------------------|
|-- Mem Ch  0: Reads (MB/s):     0.06 --||-- Mem Ch  0: Reads (MB/s):     0.01 --|
|--            Writes(MB/s):     0.13 --||--            Writes(MB/s):     0.01 --|
|-- Mem Ch  1: Reads (MB/s):   141.17 --||-- Mem Ch  1: Reads (MB/s):  1642.35 --|
|--            Writes(MB/s):   262.84 --||--            Writes(MB/s): 11842.28 --|
|-- Mem Ch  2: Reads (MB/s):   140.44 --||-- Mem Ch  2: Reads (MB/s):  1639.97 --|
|--            Writes(MB/s):   261.67 --||--            Writes(MB/s): 11850.11 --|
|-- Mem Ch  3: Reads (MB/s):     0.46 --||-- Mem Ch  3: Reads (MB/s):     0.40 --|
|--            Writes(MB/s):     0.55 --||--            Writes(MB/s):     0.40 --|
|-- NODE 0 Mem Read (MB/s) :   282.13 --||-- NODE 1 Mem Read (MB/s) :  3282.72 --|
|-- NODE 0 Mem Write(MB/s) :   525.19 --||-- NODE 1 Mem Write(MB/s) : 23692.79 --|
|-- NODE 0 P. Write (T/s):      15496 --||-- NODE 1 P. Write (T/s):      15947 --|
|-- NODE 0 Memory (MB/s):      807.33 --||-- NODE 1 Memory (MB/s):    26975.52 --|
|---------------------------------------||---------------------------------------|
|---------------------------------------||---------------------------------------|
|--                 System Read Throughput(MB/s):       3564.86                --|
|--                System Write Throughput(MB/s):      24217.99                --|
|--               System Memory Throughput(MB/s):      27782.84                --|
|---------------------------------------||---------------------------------------|

Как я могу использовать все четыре канала памяти?


person Anubhav Choudhary    schedule 23.03.2018    source источник


Ответы (1)


Количество каналов памяти, которые мы указываем с помощью -n, не имеет большого значения: он просто выровнял каждый элемент пула памяти с другим каналом памяти, как описано в Руководство программиста DPDK

Даже если мы укажем неверный номер, мы все равно сможем использовать все каналы, возможно, не так оптимально. Могут быть некоторые угловые случаи, но они довольно редки и их можно легко «исправить» не только с помощью параметра -n, но также путем настройки размера mbuf testpmd (то есть элемента пула памяти) с помощью параметра --mbuf-size=N, как описано в Руководство пользователя Testpmd

Итак, я предполагаю, что параметр командной строки не имеет большого значения, и реальная проблема заключается в том, что в используемой вами системе нет четырех модулей DIMM на узел NUMA, то есть нет 8 отдельных модулей DIMM. Можно попробовать проверить с помощью sudo dmidecode | grep DIMM или просто физически.

person Andriy Berestovskyy    schedule 23.03.2018
comment
Спасибо за Ваш ответ. Я заглянул в sudo dmidecode | grep DIMM, но похоже, что в системе 8 модулей DIMM, по 4 на сокет. # dmidecode | grep -n DIMM 521: Форм-фактор: DIMM 545: Форм-фактор: DIMM 569: Форм-фактор: DIMM 593: Форм-фактор: DIMM 809: Форм-фактор: DIMM 833: Форм-фактор: DIMM 857: Форм-фактор: DIMM 881: Форм-фактор : DIMM - person Anubhav Choudhary; 24.03.2018
comment
Вы пробовали менять размер mbuf или количество каналов, что тогда показывает pcm? - person Andriy Berestovskyy; 25.03.2018
comment
Итак, я попытался изменить размер буферов (4096 и 8192), и он остался прежним. - person Anubhav Choudhary; 26.03.2018
comment
Еще одна догадка: проверьте настройки чередования каналов / рангов в BIOS, чтобы убедиться, что они установлены на автоматический режим. - person Andriy Berestovskyy; 26.03.2018
comment
Я обнаружил проблему, система изначально поддерживала 6 каналов памяти. Мы добавили 4 димма, было использовано только 2 из них, но когда я добавил еще два, все каналы памяти начали работать. - person Anubhav Choudhary; 29.03.2018