Практикум по расширению памяти

CXL-память в Linux: от региона до включённых блоков

Курс показывает путь CXL Type 3 в Linux: обнаружение устройства, активный регион, передачу области через DAX и проверку состояния блоков памяти.

База → пресейл и приёмка55 минут4 модуля11 вопросов
После курса

Что вы сможете сделать

  1. Различать обнаружение CXL-устройства, активное отображение региона и включение блоков памяти в распределитель страниц Linux.
  2. Понимать роль устройства Type 3, HDM-декодеров, DAX и подсистемы memory-hotplug.
  3. Читать state и valid_zones с учётом состояния блока; отделять наблюдение от настройки auto_online_blocks.
Модуль 1 из 4

1. Сначала отделите CXL от обычного PCIe

CXL использует PCI-механизмы для части управления, но наличие PCI-функции не означает, что CXL-память уже доступна системе.

  • CXL Consortium определяет CXL как когерентный интерфейс для процессоров, расширения памяти и ускорителей.

    Проверить тезис: Compute Express Link (CXL) 01

  • Когерентность CXL связывает пространство памяти CPU и память на подключённых устройствах; конкретный режим зависит от типа устройства и протоколов.

    Проверить тезис: Compute Express Link (CXL) 02

  • В Linux устройство CXL-памяти использует CXL.mem, а перечисление и настройка компонентов опираются на CXL.io и стандартные механизмы PCI.

    Проверить тезис: Compute Express Link (CXL) 03

  • Видимая PCI-функция ещё не доказывает активный диапазон памяти: топологию CXL.mem и регионы проверяют отдельно.

    Проверить тезис: Compute Express Link (CXL) 04

  • Прошивка и PCIe-топология ограничивают, какие устройства CXL-памяти могут участвовать в доступных схемах декодирования.

    Проверить тезис: Compute Express Link (CXL) 05

Модуль 2 из 4

2. Разберите Type 3 memory device

Устройство CXL-памяти — отдельный объект со своим типом памяти и способом отображения. Объём на наклейке ещё не равен активной ёмкости системы.

  • CXL Memory Device реализует CXL.mem; в Linux объект cxl_memdev представляет Type-3 Memory Device.

    Проверить тезис: Устройство CXL-памяти 01 04

  • Такое устройство может содержать энергозависимую память, постоянную память или оба вида. Тип памяти проверяют у точной модели.

    Проверить тезис: Устройство CXL-памяти 02

  • Linux определяет CXL memory device как PCI-устройство для настройки и служебных mailbox-команд. Это не заменяет проверку активного отображения памяти.

    Проверить тезис: Устройство CXL-памяти 03

  • HDM-декодеры задают вклад устройства в системное физическое адресное пространство и могут включать память в чередующийся диапазон вместе с другими устройствами.

    Проверить тезис: Устройство CXL-памяти 05

Модуль 3 из 4

3. Проверьте активный регион

Регион — это отображённая ёмкость. В Linux отдельно проследите путь к memory-hotplug и выясните, какие блоки памяти действительно включены.

  • CXL region в Linux представляет активную ёмкость, отображённую в системное физическое адресное пространство.

    Проверить тезис: Регион CXL 01

  • Region строится через HDM-декодеры на пути через мосты хоста, коммутаторы и конечные устройства.

    Проверить тезис: Регион CXL 02

  • Один и тот же аппаратный набор можно собрать в разные CXL.mem-топологии; конфигурацию нужно сохранять вместе с результатом.

    Проверить тезис: Регион CXL 03

  • Прошивка задаёт доступные схемы чередования, а PCIe-топология ограничивает состав участников каждой схемы декодирования.

    Проверить тезис: Регион CXL 04

  • У чередования есть число участников и гранулярность. Эти параметры описывают карту памяти, но сами по себе не равны производительности приложения.

    Проверить тезис: Регион CXL 05

  • В описанном Linux пути драйвер DAX передаёт область с признаком Driver Managed подсистеме memory-hotplug. Передача не подтверждает включение всех блоков.

    Проверить тезис: Регион CXL 06

  • После включения (online) добавленная CXL-память доступна распределителю страниц Linux. В описанном пути блоки включают в ZONE_NORMAL или ZONE_MOVABLE. ZONE_MOVABLE предназначена для перемещаемых страниц. Выключенные блоки (offline) в распределитель не включены. Это не гарантия выделения памяти любому приложению.

    Проверить тезис: Регион CXL 07

Модуль 4 из 4

4. Зафиксируйте конфигурацию до измерения

Перед измерением зафиксируйте состояние блоков и отдельно — политику автоматического включения.

  • До закупки сверяют CPU, платформу, прошивку и конкретный CXL-путь, а не только название устройства.

    Проверить тезис: Compute Express Link (CXL) 05 · Регион CXL 04

  • При приёмке отдельно фиксируют memdev, активные регионы и параметры чередования.

    Проверить тезис: Compute Express Link (CXL) 04 · Регион CXL 01 05

  • После отображения памяти сопоставляют её с NUMA-топологией и измеряют нужную нагрузку. CXL-совместимость не является готовым числом производительности.

    Проверить тезис: Устройство CXL-памяти 05 · Регион CXL 03

  • state показывает состояние блока. В valid_zones у включённого блока указана текущая зона или none при нескольких зонах либо NUMA-узлах. У выключенного первая колонка — выбор ядра без явного указания зоны. Наличие valid_zones зависит от CONFIG_MEMORY_HOTREMOVE.

    Проверить тезис: Регион CXL 08

  • Изменение auto_online_blocks действует на последующие добавления. Состояние уже добавленных блоков проверяют отдельно. Автоматическое включение может завершиться сбоем; ядро не повторяет неудавшуюся попытку.

    Проверить тезис: Регион CXL 09

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01Linux видит PCI-функцию устройства CXL-памяти, но активные регионы не проверяли. Какой вывод корректен?
02В спецификации сервера указана поддержка CXL Type 3, но тип памяти карты ещё не известен. Что следует проверить?
03Команда диагностики показывает объект mem0. Что этот объект представляет в модели Linux CXL 6.12?
04На двух одинаковых серверах установлены одинаковые устройства CXL-памяти, но регионы настроены по-разному. Допустимо ли ожидать разную карту памяти?
05CXL memory endpoint обнаруживается и конфигурируется стандартными PCI-механизмами. Какой CXL-протокол участвует в этом пути?
06В системе найдено устройство CXL-памяти. Какой признак ближе всего к подтверждению, что его ёмкость уже отображена в системное физическое адресное пространство?
07Для закупки устройства расширения CXL-памяти известны объём и интерфейс карты. Какой дополнительный шаг нужен до обещания совместимости?
08Какое утверждение точнее всего описывает CXL в контексте серверной памяти?
09Для двух CXL-блоков в Linux указано: memory10 — state=offline, valid_zones=Movable; memory11 — state=online, valid_zones=Normal. Каков вывод?
10После добавления CXL-блоков администратор изменил auto_online_blocks. Затем зафиксирован сбой автоматического включения нового блока. Как принять результат?
11В Linux блок имеет state=offline, а valid_zones содержит «Normal Movable» в таком порядке. Что означает первая колонка при включении без явного выбора зоны?

В каталоге

  • Серверные платформы — Сопоставьте CPU и прошивку с CXL-путём, затем проверьте в Linux состояние региона и блоков памяти.
Проверяемая база

Источники курса

Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.

  • Официальное разъяснение

    About CXL®

    Compute Express Link Consortium · официальная страница CXL Consortium, прочитана 19 сентября 2026 года

    Описывает CXL как когерентный интерфейс для процессоров, расширения памяти и ускорителей и связывает его с когерентностью памяти CPU и подключённых устройств.

    Открыть первоисточник
  • Официальная документация

    Compute Express Link Memory Devices

    Linux Kernel · Linux 6.12 documentation

    Описывает CXL memory devices, CXL.io/CXL.mem, Type-3 memdev, HDM-декодеры, регионы и конфигурируемую CXL.mem-топологию.

    Открыть первоисточник
  • Официальная документация

    Memory Hotplug

    Linux Kernel · Текущая upstream-документация; фиксированный выпуск не установлен

    Описаны путь CXL через DAX к memory-hotplug и состояния новых блоков, включая ZONE_NORMAL и ZONE_MOVABLE.

    Открыть первоисточник
  • Официальная документация

    Memory Hot(Un)Plug

    Linux Kernel · Текущая upstream-документация; фиксированный выпуск не установлен

    Описаны state и valid_zones, CONFIG_MEMORY_HOTREMOVE, auto_online_blocks и ограничения автоматического включения.

    Открыть первоисточник
Подтвердите действие