Инженеры компании Intel ведут активную работу над улучшением производительности подсистемы хранения данных NVMe в операционных системах на базе Linux. Основное внимание уделяется современным процессорам с большим количеством ядер, где текущие механизмы обработки прерываний могут работать неэффективно. Проблема возникает в ситуациях, когда несколько процессорных ядер вынуждены делить одни и те же прерывания IRQ от накопителя. Если привязка прерываний не совпадает с кластером процессора, возникают задержки, снижающие общую эффективность системы.
Для решения этой задачи был подготовлен специальный патч, который делает код управления группами процессоров осведомленным о кластерах. Инженер Intel Ваньян Го пояснил суть ситуации, отметив, что с увеличением числа ядер количество прерываний NVMe может оказаться меньше общего количества потоков, что вынуждает несколько CPU использовать одно прерывание. По его словам, предложенное исправление улучшает привязку прерываний за счет группировки процессоров по кластерам внутри каждого домена NUMA, что обеспечивает лучшую локальность между вычислительными ядрами и назначенными им прерываниями.
Эффективность нового подхода была продемонстрирована на сервере с процессором Intel Xeon E. В популярном бенчмарке FIO при тестировании случайного чтения через библиотеку libaio производительность выросла примерно на 15%. На данный момент разработчики не предоставили результатов для других сценариев нагрузки или иных конфигураций оборудования, кроме упомянутого теста на Xeon E. Будет интересно проследить за влиянием этого обновления на более широкий спектр многокластерных процессоров после его внедрения в основную ветку ядра.
Код патча уже включен в ветку разработки mm-everything, которую курирует Эндрю Мортон. Ожидается, что это изменение размером в 271 строку кода может попасть в следующее окно слияния ядра Linux версий 6.20 или 7.0. Внедрение данной оптимизации призвано помочь в раскрытии потенциала быстрых NVMe накопителей на мощных рабочих станциях и серверах.
Источник: www.playground.ru