Назад | Перейти на главную страницу

Установите политику numa по умолчанию на «чередование» для всей системы

Я знаю, что можно установить режим numa на "чередование" (см. NB ниже) для определенного процесса, используя numactrl --interleave, но я хотел бы знать, можно ли сделать это общесистемным значением по умолчанию (или изменить «системную политику»). Например, есть ли для этого флаг загрузки ядра?

NB: здесь я говорю о поведении ядра, которое чередует выделенные страницы между узлами NUMA, а не о настройке поведения контроллера памяти на уровне BIOS, которая чередует строки кэша по

Если вы используете RHEL / CentOS / Fedora, я бы предложил использовать Numad демон. (Ссылка на платный доступ Red Hat).

Хотя я не особо использую numactl --interleave директиве, похоже, вы определили, что она требуется вашей рабочей нагрузке. Вы можете объяснить, почему это так, чтобы лучше понять контекст?

Редактировать:

Кажется, что большинство приложений, рекомендующих явное numactl определение либо сделать вызов библиотеки libnuma или включить numactl в сценарий оболочки.

Для numad сторона, есть опция конфигурации, которую можно указать в командной строке или в /etc/numad.conf...

-K <0|1>
   This option controls whether numad keeps interleaved  memory  spread  across  NUMA  nodes,  or
   attempts to merge interleaved memory to local NUMA nodes.  The default is to merge interleaved
   memory.  This is the appropriate setting to localize processes in a  subset  of  the  system’s
   NUMA  nodes.   If  you  are running a large, single-instance application that allocates inter-
   leaved memory because the workload will have continuous unpredictable memory  access  patterns
   (e.g. a large in-memory database), you might get better results by specifying -K 1 to instruct
   numad to keep interleaved memory distributed.

Некоторые говорят, что попробовали это с чем-то вроде numad -K 1 -u X, где X - это 100-кратное количество ядер, может помочь в этом. Попытайся.

Также см Технический документ HP ProLiant по Linux и NUMA.