LINUX.ORG.RU

Как правильно определить, какие ядра CPU в какой NUMA ноде

 


0

1

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

Заказчик может запустить на сервере какую-либо команду или скрипт, и прислать вывод мне.

lscpu выводит то, что мне нужно:

$ lscpu
Architecture:        x86_64
...
NUMA node0 CPU(s):   0-23,96-119
NUMA node1 CPU(s):   24-47,120-143
NUMA node2 CPU(s):   48-71,144-167
NUMA node3 CPU(s):   72-95,168-191

$ lscpu
Architecture:        x86_64
...
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,96,100,104,108,112,116,120,124
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,97,101,105,109,113,117,121,125
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,98,102,106,110,114,118,122,126
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,99,103,107,111,115,119,123,127

Насколько правильно завязываться в генераторе конфигурации на формат вывода lscpu (изменение формата между версиями, локализация и т.д.)? Может есть какой-либо более рассово-верный подход к получению информации о привязке ядра к NUMA ноде, например через /proc или /sys?

★★★★

lscpu берёт данные из /proc/cpuinfo, парси лучше его, и, поскольку это ядерный интерфейс, вроде должен быть стабильным.

А вот твоя идея с запуском каких-то скриптов и отправкой тебе чтобы ты писал конфиги кажется плохой. Точнее, у неё есть положительная сторона: она вынуждает заказчика с тобой общаться при любом изменении железа, если это и есть твоя цель - делай так. Если же цель просто настроить программу, то программа сама должна смотреть конфигурацию процов и выбирать куда привязываться, без ручных запусков каких-то предварительных скриптов. Ну или по крайней мере иметь опцию «приготовить конфиги», но работающую автономно без переписок с тобой.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)