Почему количество узлов NUMA влияет на группировку процессоров

Почему количество узлов NUMA влияет на группировку процессоров

На сервере HPE DL380 G10 с 2 процессорами Xeon(R) Gold 6246R (32 физических ядра, 64 логических с HT) в BIOS используйте следующую настройку:

Конфигурация системы > Конфигурация BIOS/платформы (RBSU) > Параметры производительности > Расширенные параметры настройки производительности > Оптимизация размера группы NUMA

Мы можем выбрать один из двух вариантов:

  1. Кластеризованный— Оптимизирует группы по границам NUMA, обеспечивая лучшую производительность.
  2. Плоский- Позволяет приложениям, которые не оптимизированы для использования преимуществ процессоров, охватывающих несколько групп, использовать больше логических процессоров.

Параметр «Кластеризованный» заставит Windows сообщать только об ОДНОМ узле NUMA, НО о 2 группах процессоров, каждая из которых имеет 32 ядра. Параметр «Плоский» с другой стороны показывает 2 узла NUMA и только 1 группу процессоров с 64 логическими ядрами.

Конечно, я уже много знаю о NUMA и группах процессоров, поэтому я действительно не прошу никаких рекомендаций о лучшей настройке для моего варианта использования или около того. Вместо этого вопрос в следующем: почему для Windows имеет смысл выбрать 2 группы процессоров, когда есть только один узел NUMA и наоборот? Кроме того, я никогда не находил никакой документации о том, что Windows (Server 2019) разделяет 64 ядра на 2 группы, это вообще ожидаемое поведение?

решение1

Статья, которую вы нашли, датируется 2008 годом. В то время Windows столкнулась с компьютерами NUMA с более чем 64 процессорами, в то время как ее реализация групп процессоров была ограничена 64. Тогда решением было автоматическое создание более одной такой группы, содержащей не более 64 процессоров в каждой.

Более гибкое решение было представлено в конце 2014 года. Самая ранняя ссылка, которую я нашел, — это Консультативная записка HP относительно серверов HP Gen9 и датируемых 2015-04-24:

В версии 1.30 (24.12.2014) и более поздних версиях системных ПЗУ для серверов Gen9,новая утилита настройки на базе ПЗУ, «Оптимизация размера группы NUMA»,добавлена ​​возможность пользователю изменять поведение процессоров отчетности для операционной системы. Эта опция позволит ОС поместить все логические процессоры в одну группу, если есть 64 логических процессора или меньше ("Flat".)

Параметр Clustered создает одну группу процессоров для ядер каждого ЦП. Параметр Flat предназначен для того, чтобы позволить приложениям использовать все ядра компьютера, поскольку в Windows по умолчанию приложение ограничено одной группой и, следовательно, будет видеть и использовать только свою одну группу.

По поводу Ваших вопросов:

Почему для Windows имеет смысл использовать 2 группы процессоров, если имеется только один узел NUMA, и наоборот?

Это обусловлено параметром Clustered (Кластеризованный), который имеет смысл для приложения, всех его процессов и потоков, чтобы они выполнялись в близлежащей памяти для повышения производительности.

Если в вашем случае приложению требуется более 32 ядер, следует использовать опцию Flat, чтобы сделать все ядра доступными.

Я так и не нашел никакой документации о том, что Windows (Server 2019) разделяет 64 ядра на 2 группы. Ожидаемое ли это поведение?

Да, это ожидаемое поведение. Оно не очень хорошо документировано, но есть ссылки на такое поведение, например Производительность обмена: настройки HP NUMA BIOS.

Связанный контент