Практикум по расширению памяти
CXL-память в Linux: от региона до включённых блоков
Курс показывает путь CXL Type 3 в Linux: обнаружение устройства, активный регион, передачу области через DAX и проверку состояния блоков памяти.
Что вы сможете сделать
- Различать обнаружение CXL-устройства, активное отображение региона и включение блоков памяти в распределитель страниц Linux.
- Понимать роль устройства Type 3, HDM-декодеров, DAX и подсистемы memory-hotplug.
- Читать state и valid_zones с учётом состояния блока; отделять наблюдение от настройки auto_online_blocks.
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. Разберите Type 3 memory device
Устройство CXL-памяти — отдельный объект со своим типом памяти и способом отображения. Объём на наклейке ещё не равен активной ёмкости системы.
CXL Memory Device реализует CXL.mem; в Linux объект cxl_memdev представляет Type-3 Memory Device.
Такое устройство может содержать энергозависимую память, постоянную память или оба вида. Тип памяти проверяют у точной модели.
Проверить тезис: Устройство CXL-памяти 02
Linux определяет CXL memory device как PCI-устройство для настройки и служебных mailbox-команд. Это не заменяет проверку активного отображения памяти.
Проверить тезис: Устройство CXL-памяти 03
HDM-декодеры задают вклад устройства в системное физическое адресное пространство и могут включать память в чередующийся диапазон вместе с другими устройствами.
Проверить тезис: Устройство CXL-памяти 05
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. Зафиксируйте конфигурацию до измерения
Перед измерением зафиксируйте состояние блоков и отдельно — политику автоматического включения.
До закупки сверяют CPU, платформу, прошивку и конкретный CXL-путь, а не только название устройства.
Проверить тезис: Compute Express Link (CXL) 05 · Регион CXL 04
При приёмке отдельно фиксируют memdev, активные регионы и параметры чередования.
Проверить тезис: Compute Express Link (CXL) 04 · Регион CXL 01 05
После отображения памяти сопоставляют её с NUMA-топологией и измеряют нужную нагрузку. CXL-совместимость не является готовым числом производительности.
state показывает состояние блока. В valid_zones у включённого блока указана текущая зона или none при нескольких зонах либо NUMA-узлах. У выключенного первая колонка — выбор ядра без явного указания зоны. Наличие valid_zones зависит от CONFIG_MEMORY_HOTREMOVE.
Проверить тезис: Регион CXL 08
Изменение auto_online_blocks действует на последующие добавления. Состояние уже добавленных блоков проверяют отдельно. Автоматическое включение может завершиться сбоем; ядро не повторяет неудавшуюся попытку.
Проверить тезис: Регион CXL 09
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
В каталоге
- Серверные платформы — Сопоставьте 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 и ограничения автоматического включения.
Открыть первоисточник