Существует два основных источника замедления, которые можно отнести к NUMA.Во-первых, это увеличенная задержка удаленного доступа, которая может варьироваться в зависимости от платформы.На платформах, с которыми я работаю, задержка составляет около 30%.
Другим источником потери производительности может быть конфликт по каналам связи и контроллерам между узлами NUMA.
Схема распределения по умолчанию для Linux заключается в распределении данных на узле, где она была создана,Если большая часть данных в приложении инициализируется одним потоком, то для этого одного узла памяти будет генерироваться большое количество перекрестного трафика домена NUMA и конфликтов.
Если ваши данные доступны только для чтения, репликация выполняетсяхорошее решение.
В противном случае, чередование распределения данных по всем вашим узлам распределит запросы по всем узлам и поможет уменьшить перегрузку.
Для чередования данных вы можете использовать set_mempolicy()
с numaif.h
если вы используете Linux.