Домой Софт и приложения Linux NVIDIA выпустила патчи планировщика Linux для улучшения производительности SMT на процессорах Vera

NVIDIA выпустила патчи планировщика Linux для улучшения производительности SMT на процессорах Vera

NVIDIA представила новые патчи планировщика Linux, направленные на повышение производительности SMT и стабильности работы процессоров NVIDIA Vera.

4
0

Компания NVIDIA опубликовала новый набор патчей для планировщика ядра Linux, разработанный для дополнительного повышения производительности технологии одновременной многопоточности SMT на будущих процессорах NVIDIA Vera. Инженер NVIDIA Андреа Риги подробно описал особенности работы аппаратной архитектуры и причины создания данного обновления в сопроводительном письме к серии патчей.

Процессорная архитектура NVIDIA Vera в центре дата-центра

Как поясняется в документации, архитектура NVIDIA Olympus реализует SMT с помощью двух симметричных обрабатывающих элементов (PE). Когда активен только один PE, вычислительное ядро функционирует в однопоточном режиме, а этот элемент задействует все ресурсы ядра полностью. Если задействованы оба PE, ядро переходит в двухпоточный режим с разделением ресурсов между элементами. Подобное поведение свойственно многим реализациям SMT, однако система Olympus отличается особой чувствительностью к кратковременным активациям соседних потоков.

Особенности работы с симметричными элементами и проблемы планирования

Главная сложность заключается в том, что возврат из двухпоточного режима в однопоточный после перехода соседнего элемента в режим простоя происходит не мгновенно. Как отмечается в описании соответствующего коммита, кратковременное пробуждение в остальном бездействующего соседнего потока снижает производительность, доступную первому потоку. Данный негативный эффект не исчезает моментально после того, как соседний элемент снова засыпает.

На протестированной системе Vera для восстановления полной производительности однопоточного режима требуется, чтобы соседний элемент оставался в состоянии простоя в течение квалификационного интервала, составляющего 10 тысяч циклов. Ранее внедренное изменение уже предотвращало излишнее пробуждение соседних элементов балансировщиком нагрузки NOHZ idle, однако стандартное размещение задач все еще могло задействовать любой из потоков простаивающего ядра. Постоянные переключения активного PE удерживали ядра Olympus в двухпоточном режиме, несмотря на минимальное полезное пересечение задач между потоками.

Влияние патчей на производительность и результаты тестирования

Новый комплекс патчей закрепляет за PE0 статус приоритетного соседа для ядра Olympus с использованием механизма SD_ASYM_PACKING, а также обучает пути выбора простоя в справедливом планировщике учитывать асимметричный приоритет SMT. Планировщик сначала выбирает свободное ядро согласно стандартным правилам емкости и размещения, после чего отдает предпочтение доступному элементу с наивысшим приоритетом. Подобное поведение универсального планировщика активируется только в том случае, если архитектурная реализация предоставляет соответствующий домен SMT.

Итоговые результаты тестирования демонстрируют заметный прирост производительности SMT на двухсокетной системе Vera. Во время испытаний с использованием 88-поточной задачи GEMM одинарной точности на физических ядрах NUMA-ноды 0 пропускная способность возросла с базовых 9,4 Тфлопс примерно до 10,1 Тфлопс после применения серии патчей. Кроме того, повторные запуски теста стали стабильнее, поскольку рабочая нагрузка стабильно закреплялась за элементом PE0, оставляя PE1 в неактивном состоянии.

Ранее Андреа Риги также разработал патч, направленный на выбор полностью простаивающих ядер для балансировки NOHZ, который был принят в состав ядра Linux версии 7.3. Одно лишь то изменение позволило поднять результат в бенчмарке GEMM на системе Vera с 6,2 до 9,2 Тфлопс. В настоящее время новые патчи для ядер NVIDIA Vera и Olympus направлены на официальное рассмотрение в список рассылки разработчиков ядра Linux.

Источник: https://www.phoronix.com