Процессорная топология

Неоднородный доступ к памяти — NUMA

Определение

NUMA — организация памяти, при которой она разделена на узлы, а доступ процессора к дальнему узлу обходится дороже, чем к ближнему. Число узлов не обязано совпадать с числом процессоров: у некоторых процессоров один сокет настройкой можно разделить на несколько узлов.

Также ищут: Non-Uniform Memory Access · неравномерный доступ к памяти · NUMA-топология · NUMA

Зачем это знать

Одинаковая сумма ядер и оперативной памяти может скрывать другую локальность доступа. При подборе и приёмке важно установить узлы, политику размещения и путь устройств, затем измерить требуемую работу.

Наглядно

Память рядом и через другой узел

Два узла NUMA: локальная память и удалённый путьУзел 0Узел 1CPU 0CPU 1Память 0Память 1Пунктир: пример удалённого доступа
Пример двух узлов. Их число не обязано совпадать с числом сокетов; стоимость локального и удалённого доступа устанавливают для конкретной системы. Источники схемы
Связи из словаря

Карта понятия

Доказательная часть

Что подтверждено

  1. В NUMA-системе банки памяти представлены узлами, а стоимость доступа процессора к ним различается в зависимости от расстояния до узла.

    Граница применимости: Модель физической памяти Linux; конкретная задержка и пропускная способность измеряются на выбранной платформе.

  2. По умолчанию Linux старается выделять память на NUMA-узле, ближайшем к процессору, где выполняется процесс.

    Граница применимости: Поведение действует, если не задана другая политика размещения и на ближайшем узле есть подходящая память.

  3. Политика NUMA управляет выбором узлов для размещения памяти и настраивается отдельно от набора процессоров, доступных задаче.

    Граница применимости: Контейнеры, виртуальные машины и приложения могут добавлять собственные ограничения поверх политики ядра Linux.

  4. В АМД Эпик 9004 настройка числа NUMA-узлов на сокет может разделять один сокет на несколько узлов. Поэтому число узлов NUMA нельзя автоматически принимать за число физических процессоров.

    Граница применимости: Настройка числа узлов NUMA на сокет и её допустимые варианты в указанном руководстве АМД Эпик 9004; конкретная схема зависит от модели и конфигурации памяти.

  5. Изменение политики NUMA само по себе не переносит все ранее выделенные страницы на новые узлы. Для уже размещённой памяти перенос рассматривается отдельно; новая политика прежде всего управляет соответствующими последующими выделениями.

    Граница применимости: Семантика изменения политики памяти Linux; отдельные механизмы миграции и балансировки не объявляются выключенными.

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

    Граница применимости: Взаимодействие ограничений группы на допустимые узлы и политики памяти в документации Linux; фактический набор учитывает текущие ограничения системы.

  7. Чередующая политика NUMA распределяет выделения памяти между узлами заданного набора. Она описывает размещение памяти, а не назначение каждому программному потоку отдельного процессора и не гарантирует наименьшую задержку каждого доступа.

    Граница применимости: Режим чередования в политике памяти Linux; детальная гранулярность зависит от типа выделяемой памяти и механизма размещения.

  8. У PCIe-устройства Linux значение NUMA-узла −1 означает, что его принадлежность неизвестна. Это не доказательство узла 0 и не основание объявить путь локальным для выбранного процессора.

    Граница применимости: Документированное поле номера узла NUMA для PCIe-устройства в системной файловой системе Linux 6.12; неизвестная принадлежность к узлу не подменяется предположением о локальности.

Граница терминов

Не путать

Неоднородный доступ к памяти — NUMA Бюджет линий PCIe

NUMA описывает локальность памяти, бюджет PCIe — владельцев и общие пути устройств. Эти карты сопоставляют, но одна не выводится целиком из другой.

Неоднородный доступ к памяти — NUMA Ядро процессора

Ядра являются ресурсами выполнения, узлы NUMA — частью карты памяти. Число ядер не определяет, на каком узле окажутся нужные страницы.

Перед спецификацией

Что проверить

  1. Получите фактическую карту NUMA-узлов и процессоров.
  2. Не подменяйте число узлов числом сокетов.
  3. Зафиксируйте размещение задачи и разрешённый ей набор логических процессоров.
  4. Проверьте узлы памяти, действующую политику и разрешённый группе набор узлов.
  5. Отдельно установите расположение ранее выделенных страниц.
  6. Сверьте принадлежность PCIe-устройств, сохраняя неизвестные значения.
  7. Измерьте нужную работу при согласованном размещении задачи, памяти и устройств.
Открытые основания

Первоисточники

  • Документация6
  • Официальная документация
    Physical Memory Linux kernel documentation · актуальная документация ядра, проверено 29 августа 2026 года · проверено

    Описывает NUMA nodes, различную стоимость доступа и node-local allocation.

    Утверждения: 01 · 02

  • Официальная документация
    NUMA Memory Policy Linux kernel documentation · актуальная документация ядра, проверено 29 августа 2026 года · проверено

    Разграничивает NUMA memory policy и cpusets и описывает выбор узлов для выделения памяти.

    Утверждения: 03 · 05 · 06 · 07

  • Официальная документация
    АМД Эпик 9004 BIOS and Workload Tuning Guide AMD · документ AMD 58011, выпуск на портале 2025-05-09, страница открыта 7 сентября 2026 года · проверено

    Фиксирует два hardware thread при SMT и предупреждает о нейтральном или отрицательном эффекте на части workload.

    Утверждения: 04

  • Официальная документация
    Linux PCI sysfs ABI — sysfs-bus-pci The Linux Kernel developers · Linux v6.12, тег от 17.11.2024; последний коммит файла 759ec2824289, committer 2024-09-06 · проверено

    Полный ABI-текст: 574 строк. Скачан редактором и прочитан автором 11.09.2026. SHA-256 13a73b125e800a57c2ed352f49a85e03a6dfb41eb33d3d498beb9297b92e28d1. Авторская дата последнего коммита 2024-09-04; дата тегирования задаёт редакцию. Страниц в оригинале нет.

    Утверждения: 08

  • Официальная документация
    PCIe Lane Ownership on Intel Server Board S2600WF Intel · support article 000090009, проверено 21 июля 2023 года · проверено

    Показывает привязку riser-слотов к CPU 1, CPU 2 и DMI и зависимость части слотов от второго CPU.

  • Официальная документация
    x86 Topology Linux kernel documentation · актуальная документация ядра, проверено 29 августа 2026 года · проверено

    Определяет package, core и hardware thread в топологии Linux.

Карта знаний

Связанные понятия

Из знания — в навык

Курсы по теме

В каталоге

Подтвердите действие