NUMA — архитектура памяти для многопроцессорных систем | Глоссарий FREEHOSTING

Numa

Non-Uniform Memory Access
Numa — NUMA (Non-Uniform Memory Access) — архитектура памяти в многопроцессорных системах, где доступ к памяти отличается по времени в зависимости от расположения процессора и блока памяти, улучшая производительность и масштабируемость.

Определение простыми словами

NUMA — это способ организации памяти в современных многопроцессорных системах, при котором время доступа к памяти варьируется в зависимости от физического расположения процессора и памяти. В такой архитектуре каждый процессор имеет выделенную локальную память и может обращаться к памяти других процессоров с большей задержкой.

Это отличие от традиционной архитектуры Uniform Memory Access (UMA), где все процессоры имеют равный доступ ко всей памяти, но зачастую с узким местом в производительности при масштабировании.

Сравнение

Параметр NUMA UMA
Время доступа к памяти Зависит от расположения памяти относительно процессора (неравномерное) Однородное для всех процессоров
Производительность Лучше при масштабировании, снижает задержки локального доступа Может снижаться при увеличении числа процессоров из-за конкуренции за память
Сложность реализации Выше из-за необходимости оптимизации распределения задач и памяти Проще, универсальный доступ к памяти
Поддержка ОС и программ Требует оптимизации с учётом NUMA, например, распределение потоков и памяти Приложения не требуют специальных настроек

Кейсы использования

  • Высокопроизводительные вычисления, где важно учитывать задержки доступа к памяти.
  • Виртуализация и облачные инфраструктуры для оптимизации размещения виртуальных машин.
  • Серверы баз данных и аналитики с интенсивным доступом к памяти.
  • Оптимизация работы многопоточных приложений для уменьшения задержек.
  • Негативный пример: Использование NUMA без оптимизации ПО может привести к ухудшению производительности из-за частых удалённых обращений к памяти.

Технические детали

В системах NUMA процессоры разбиты на узлы, каждый из которых имеет локальный доступ к определённой области памяти. ОС и гипервизоры, такие как KVM и Xen, поддерживают методы для оптимального распределения ресурсов.

Одной из практик является CPU pinning и размещение памяти в локальной зоне NUMA:

numactl --cpunodebind=0 --membind=0 ./my_app

Это принудительно запускает приложение с использованием процессоров и памяти первого NUMA-узла, минимизируя задержки доступа.

Частые вопросы

Что такое NUMA?

NUMA — это архитектура памяти, в которой время доступа зависит от расположения процессора и памяти.

Зачем нужна поддержка NUMA в ОС?

Для оптимального распределения нагрузки и минимизации задержек при доступе к памяти.

Как NUMA влияет на виртуализацию?

NUMA помогает повысить производительность ВМ за счёт оптимального размещения ресурсов по узлам.