Странный вопрос, но частенько это нужно. Что такое QPI - прошу в Google :)
Итак, подход довольно простой, нам нужно создать число процессов по числу NUMA нод, в случае двух процессорной конфигурации это 2 процесса соответственно.
После этого каждый процесс надо прибить к соответствующей NUMA ноде. А после этого на первом процессе создать SHM блок памяти и начать его читать/писать из второго процесса и наоборот. Получится, что для чтения/записи данных процессы будут вынуждены ходить друг к другу по шине QPI.
Так вот это все уже до меня придумал автор утилиты QPI-Stress и снабдил отличной иллюстрацией: https://github.com/pavel-odintsov/qpi-stress/blob/master/README
Итак, подход довольно простой, нам нужно создать число процессов по числу NUMA нод, в случае двух процессорной конфигурации это 2 процесса соответственно.
После этого каждый процесс надо прибить к соответствующей NUMA ноде. А после этого на первом процессе создать SHM блок памяти и начать его читать/писать из второго процесса и наоборот. Получится, что для чтения/записи данных процессы будут вынуждены ходить друг к другу по шине QPI.
Так вот это все уже до меня придумал автор утилиты QPI-Stress и снабдил отличной иллюстрацией: https://github.com/pavel-odintsov/qpi-stress/blob/master/README
Собирал я на CentOS 6, но, уверен, отличий сильных не будет.
Открываем страницу проекта http://sourceforge.net/projects/qpi-stress/files/latest/download и выбираем прямую ссылку на архив.
Собираем:
cd /usr/src
wget тут_прямая_ссылка_на_архив_выше
tar -xf qpi-stress-0.1.tar.gz
cd qpi-stress-0.1/
cd src
# там этого файлика не хватает для сборки, но он есть в репо
curl http://sourceforge.net/p/qpi-stress/code/HEAD/tree/src/qpi.h?format=raw > qpi.h
cd ..
./configure --prefix=/opt/qpi-stress
Ура!
Теперь запускаем:
qpi_stress
summay:
total processors: 24
total memory: 193252 MB
start processes: 24
data partern: 0xaa
runtime: 4294967295 seconds
result display delay: 10 seconds
per process share memory size: 4 MB
bind process 0 to cpu 23
bind process 1 to cpu 22
bind process 2 to cpu 21
bind process 3 to cpu 20
bind process 4 to cpu 19
bind process 6 to cpu 17
bind process 5 to cpu 18
bind process 7 to cpu 16
bind process 8 to cpu 15
bind process 9 to cpu 14
bind process 10 to cpu 13
bind process 11 to cpu 12
bind process 12 to cpu 11
bind process 13 to cpu 10
bind process 14 to cpu 9
bind process 15 to cpu 8
bind process 16 to cpu 7
bind process 17 to cpu 6
bind process 18 to cpu 5
bind process 19 to cpu 4
bind process 20 to cpu 3
bind process 21 to cpu 2
bind process 22 to cpu 1
bind process 23 to cpu 0
-------------------------------
QPI stress staring ...
in recent 34298 r/w(s):
2013-12-03 19:46:34
read: 6737.57 MB/s, delay: 0.59 ms, write: 6747.00 MB/s, delay: 0.59 ms
in recent 34116 r/w(s):
2013-12-03 19:46:44
read: 6688.76 MB/s, delay: 0.60 ms, write: 6688.76 MB/s, delay: 0.60 ms
cin recent 34038 r/w(s):
2013-12-03 19:46:54
read: 6702.50 MB/s, delay: 0.60 ms, write: 6700.93 MB/s, delay: 0.60 ms
in recent 33378 r/w(s):
2013-12-03 19:47:04
read: 6560.14 MB/s, delay: 0.61 ms, write: 6560.14 MB/s, delay: 0.61 ms
No comments:
Post a Comment
Note: only a member of this blog may post a comment.