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

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

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

1 ответ

Если вы используете 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 x core count, может помочь в этом. Попытайся.

Также см . Документ HP ProLiant по Linux и NUMA.

Другие вопросы по тегам