У меня был интересный звонок с клиентом сегодня. У нас есть приложение, которое планирует другие приложения, и обычно у нас нет никаких проблем с серверами с конфигурацией NUMA с количеством узлов от 2 до 4.
Во время разговора мы запустили два приложения, сильно загружающих ЦП, и оба были распределены по узлу 0, поэтому на всей машине было только 50% использования. Как только мы изменили второй экземпляр приложения на другой узел, мы использовали все ядра (половина в одном приложении, половина в другом). Казалось невозможным выделить приложение для всех ядер.
Теперь единственное различие между этой машиной и той, которую я привык использовать, состоит в том, что диспетчер задач Windows перечислял узлы в выпадающем списке вместо длинного списка отдельных ядер, поэтому Microsoft знает, что это за ограничение, но это сложная проблема для исследования в Интернете.
Ясно, что нам нужно развивать сходство узлов NUMA, но сейчас я пытаюсь понять проблему. Что может привести к тому, что один стиль машины NUMA позволит приложениям прозрачно использовать оба узла, и что сейчас вызывает такое поведение?
Я вижу, что эта архитектура отлично работает для многих небольших приложений, но мы обычно запускаем монолитные со многими потоками.
Сервер, с которым я борюсь, - это HP Proliant DL388Gen9 с двумя процессорами Intel Xeon E5-2690V3.
Мысли о том, что вызывает это?