В многопроцессорных системах на базе серверных процессоров (Intel Xeon, AMD EPYC) игнорирование настроек материнской платы часто приводит к потере вычислительной мощности. Ключевым параметром является архитектура Non-Uniform Memory Access (NUMA). Её включение позволяет операционной системе эффективно распределять задачи между ядрами и локальной памятью каждого процессора, что критически важно для баз данных, виртуализации и высоконагруженных вычислений.
Принцип работы NUMA
Архитектура NUMA решает проблему масштабирования, присущую традиционной схеме SMP (Symmetric Multiprocessing). В SMP все ядра делят одну общую шину памяти, что создает «узкое горлышко» при высокой нагрузке. В NUMA каждый физический процессор имеет свою локальную память, доступ к которой происходит быстрее всего.
Если ядру требуется данные из памяти другого узла, обращение осуществляется через межпроцессорные соединения, что добавляет небольшую задержку. Windows Server и современные версии Windows умеют распознавать эту топологию и планировать потоки так, чтобы они работали преимущественно с локальными ресурсами своего сокета.
Пошаговая настройка в BIOS
Процесс активации зависит от производителя платы, но логика изменений едина. Действия необходимо выполнять в расширенном режиме настроек (Advanced Mode), который обычно открывается клавишами Del или F2 при старте системы.
- Найдите раздел конфигурации памяти. Перейдите в меню Advanced, затем в подразделы North Bridge Configuration или Chipset Configuration.
- Отключите интерливинг памяти. Найдите параметр Node Interleaving или Memory Interleaving и установите значение Disabled. Именно это действие отделяет узлы памяти друг от друга, активируя режим NUMA.
- Настройте количество узлов (опционально). Параметр NUMA Nodes per Socket определяет granularity разбиения. Для большинства задач оставьте значение по умолчанию (обычно 1), либо выберите 2, если требуется тонкая оптимизация под специфичные приложения HPC.
- Сохраните изменения. Нажмите
F10для сохранения конфигурации и перезагрузите компьютер.
Проверка корректности в Windows
После загрузки операционной системы необходимо убедиться, что она увидела новую топологию. Простого включения функции недостаточно — система должна правильно её распознать.
Способ 1: Диспетчер задач
Откройте Диспетчер задач (Ctrl+Shift+Esc), перейдите на вкладку Производительность и выберите пункт ЦП. Если настройки применены верно, графика процессора будет визуально разделена на несколько групп ядер (узлов). Это указывает на то, что Windows видит разделение памяти.
Способ 2: Командная строка и PowerShell
Для получения точных цифр используйте встроенные инструменты. Запустите PowerShell или командную строку от имени администратора и выполните команду:
wmic cpu get DeviceID,Name,NumberOfCores,NumberOfLogicalProcessors
Более информативный метод — использование счетчиков производительности. Введите в PowerShell:
Get-Counter "\NUMA Node(*)\Total Memory"
Если вывод содержит список нескольких нод (например, NUMA Node 0, NUMA Node 1), значит архитектура активна. Наличие только одного узла при наличии двух физических процессоров говорит о том, что BIOS настроен неверно или работает в режиме эмуляции UMA.
Способ 3: Утилита Coreinfo
Для детального анализа привязки ядер и памяти рекомендуется использовать инструмент Coreinfo от Microsoft Sysinternals. Он выводит карту локальности доступа, где символы указывают на принадлежность ядер к конкретным узлам памяти.
Влияние на производительность и типичные ошибки
Правильная настройка NUMA снижает латентность при обращениях к памяти в таких приложениях, как Microsoft SQL Server или Oracle. Без неё запросы могут постоянно «перескакивать» между процессорами, что ведет к падению количества транзакций в секунду.
Частые проблемы
- Система не загружается или выдает ошибки памяти. Часто возникает, если в разные слоты установлены модули разной емкости или частоты. Windows требует симметричной конфигурации памяти для стабильной работы NUMA. Решением является сброс CMOS и установка идентичных планок в каждом сокетe.
- Высокая задержка при обмене данными. Если приложение активно использует общие массивы данных между ядрами разных узлов, производительность может упасть ниже уровня UMA. В таких случаях помогает ручная привязка процессов к определенным узлам.
- Устаревший микрокод. Если система не видит второй узел, обновите BIOS до последней версии. Старые прошивки могут некорректно определять топологию памяти.
Проведите по таблице влево, чтобы увидеть остальные столбцы
| Параметр BIOS | Рекомендуемое значение | Эффект |
|---|---|---|
| Node Interleaving | Disabled | Активирует NUMA, разделяя память по узлам |
| Node Interleaving | Enabled | Имитирует UMA, скрывая физическую топологию |
| NUMA Nodes per Socket | 1 | Стандартный режим для большинства серверных задач |
| NUMA Nodes per Socket | 2 | Увеличивает granularity для специфичных HPC-задач |
Перед внедрением в продакшн обязательно проведите стресс-тесты. Изменение этих параметров на работающем сервере без резервной копии недопустимо.
Часто задаваемые вопросы
Что делать, если система не видит второй узел?
Обновите прошивку BIOS до актуальной версии. Также проверьте документацию материнской платы: возможно, модули памяти установлены не в те слоты, требуемые для формирования второго узла.
Влияет ли NUMA на игровую производительность?
Для большинства игр разница минимальна, так как они не используют многопроцессорные узлы активно. Однако в тяжелых симуляторах и стратегиях с большим количеством объектов включение NUMA может улучшить стабильность частоты кадров.
Можно ли включить NUMA на одном процессоре?
Технически это возможно на некоторых моделях AMD EPYC, поддерживающих разбиение на узлы внутри одного сокета. Однако для обычного однопроцессорного рабочего компьютера это не дает преимущества перед стандартным режимом UMA.