Регион CXL
Определение
Регион CXL — активный диапазон CXL-памяти, отображённый в системное физическое адресное пространство через HDM-декодеры. Один регион может включать память одного или нескольких CXL-устройств.
Также ищут: CXL region · регион CXL-памяти · regionZ
Зачем это знать
Приёмка CXL-памяти не заканчивается на обнаружении memdev и создании активного региона. В Linux отдельно прослеживают передачу области через DAX к memory-hotplug, затем проверяют состояние конкретных блоков и их зоны. Настройка автоматического включения описывает политику, а не подтверждает состояние уже добавленной памяти.
Карта понятия
Что подтверждено
В Linux CXL region представляет активную ёмкость памяти, отображённую в системное физическое адресное пространство.
Граница применимости: Linux 6.12 CXL Regions; потенциальные диапазоны root decoder и активный region — разные сущности.
Активный CXL region задаётся HDM-декодерами на пути через мосты хоста, коммутаторы и конечные устройства.
Граница применимости: Linux 6.12 CXL Regions; конкретный путь зависит от топологии платформы.
Одинаковый набор CXL-устройств не обязан давать одинаковую карту памяти: Linux допускает разные CXL.mem-топологии на одном аппаратном составе, например с разным чередованием адресов.
Граница применимости: Linux 6.12 theory of operation; это возможность конфигурации, а не обещание, что любая платформа поддерживает все варианты.
Прошивка платформы задаёт доступные варианты чередования, а PCIe-топология ограничивает, какие конечные устройства могут участвовать в конкретной схеме декодирования CXL.
Граница применимости: Linux 6.12; точные варианты interleave и состав endpoints зависят от платформы.
Для чередования в CXL region задают число участников и гранулярность данных, приходящуюся на каждого участника полосы.
Граница применимости: Linux 6.12 структуры cxl_region_params и cxl_decoder; это параметры отображения памяти, а не измеренная производительность приложения.
В описанном Linux пути передачи CXL-памяти распределителю страниц ядра драйвер DAX передаёт область с признаком Driver Managed подсистеме memory-hotplug.
Граница применимости: Текущая документация Linux CXL, Memory Hotplug; фиксированный выпуск страницы не установлен. Речь о включении памяти в распределитель страниц ядра, а не обо всех способах доступа через DAX. Передача области не доказывает включение всех её блоков.
В описанном CXL-пути блоки памяти созданного региона становятся доступны распределителю страниц Linux после включения (online). Используют ZONE_NORMAL для почти любых выделений или ZONE_MOVABLE для перемещаемых страниц; выключенные блоки (offline) туда не включены.
Граница применимости: Описанный CXL/DAX путь к распределителю страниц. Это не полный перечень зон Linux и не утверждение о любом способе доступа через DAX. Online не гарантирует выделение памяти любому приложению.
В Linux state показывает состояние блока памяти. У включённого блока valid_zones показывает текущую зону. У выключенного первая колонка показывает, какую зону ядро выбрало бы при включении сейчас без явного указания зоны. Наличие valid_zones зависит от CONFIG_MEMORY_HOTREMOVE.
Граница применимости: Текущая документация Linux memory-hotplug; фиксированный выпуск не установлен. У включённого блока none означает несколько зон или NUMA-узлов; такой блок нельзя перевести в offline. Для выключенного блока valid_zones не подтверждает фактическое включение.
В Linux изменение auto_online_blocks задаёт режим для последующих добавлений блоков памяти и не подтверждает состояние уже существующих блоков. В отдельных случаях автоматическое включение завершается сбоем; ядро не повторяет неудавшуюся попытку.
Граница применимости: Текущее руководство Linux memory-hotplug; фиксированный выпуск не установлен. Описан механизм, а не результат на конкретной системе. Документация отмечает, что в стандартных конфигурациях сбой автоматического включения не ожидается.
Что проверить
- Проверьте, какие устройства CXL-памяти обнаружены системой.
- Проверьте активные регионы и их участников отдельно от списка memdev.
- Зафиксируйте число участников и гранулярность чередования, если оно используется.
- Сопоставьте регион с NUMA-топологией и измерьте целевую нагрузку.
- Сопоставьте активный регион с соответствующими блоками памяти; не выводите состояние блоков из самого факта создания региона.
- Зафиксируйте state каждого блока. В valid_zones различайте текущую зону включённого блока и возможные зоны выключенного; первая колонка — выбор ядра без явного указания зоны.
- Учитывайте CONFIG_MEMORY_HOTREMOVE для valid_zones; none у включённого блока означает несколько зон или NUMA-узлов.
- Фиксируйте auto_online_blocks отдельно от наблюдаемого состояния: настройка действует на последующие добавления.
Первоисточники
- Memory Hotplug
Описаны путь CXL через DAX к memory-hotplug и состояния новых блоков, включая ZONE_NORMAL и ZONE_MOVABLE.
- Memory Hot(Un)Plug
Описаны state и valid_zones, CONFIG_MEMORY_HOTREMOVE, auto_online_blocks и ограничения автоматического включения.