Практикум по серверной топологии

Приёмка PCIe-карты: скорость, ширина и NUMA

Курс учит проверять PCIe-карту после установки: отдельно смотреть максимальные возможности и текущие скорость и ширину линии, а неизвестную NUMA-привязку не принимать за подтверждённую локальность.

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

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

  1. Отделять максимальные параметры PCIe-устройства от текущего состояния линии.
  2. Проверять текущие скорость и ширину как два независимых параметра.
  3. Читать NUMA-привязку PCIe-устройства и не принимать запасной список local_cpulist за подтверждённую локальность.
Модуль 1 из 4

1. Сначала запишите максимум устройства

Максимальные параметры отвечают на вопрос, что устройство умеет заявить системе. Это ещё не фактический режим линии после установки.

  • Linux 6.12 публикует max_link_speed через pcie_get_speed_cap() и max_link_width через pcie_get_width_cap().

  • Максимальные и текущие параметры находятся в разных sysfs-атрибутах, поэтому одно значение нельзя подставлять вместо другого.

  • Наличие максимального значения не доказывает, что линия сейчас работает именно так.

  • Атрибуты max_link_speed и max_link_width Linux показывает только для устройств, распознанных как PCI Express.

Модуль 2 из 4

2. Проверьте текущую линию

После установки смотрите не только возможности карты, но и тот режим, который ядро видит сейчас.

  • current_link_speed в Linux 6.12 берётся из поля текущей скорости PCI Express Link Status.

  • current_link_width берётся из Negotiated Link Width того же Link Status.

  • Скорость и ширина опубликованы отдельно, поэтому проверяйте обе величины.

  • Текущие значения и max_link_* — разные проверки; расхождение само по себе ещё не называет причину.

  • Текущие speed и width относятся к группе PCIe-атрибутов и доступны для устройств, которые ядро распознаёт как PCI Express.

Модуль 3 из 4

3. Проверьте NUMA-привязку

Для серверной карты важно знать не только PCIe-режим, но и то, к какому NUMA-узлу система относит устройство.

  • numa_node показывает NUMA-узел PCI-устройства; -1 означает, что узел неизвестен.

  • Начальное значение NUMA-узла приходит из ACPI _PXM или аналогичного источника прошивки.

  • При известном узле local_cpus/local_cpulist используют маску CPU этого NUMA-узла.

  • При неизвестном узле Linux 6.12 показывает в local_cpus/local_cpulist все online CPU — это fallback, а не найденная локальная группа.

Модуль 4 из 4

4. Соберите короткий протокол приёмки

Результат полезен, когда в нём отдельно сохранены возможности карты, текущая линия и NUMA-привязка.

  • Для одной PCIe-карты сохраните max_link_speed/max_link_width и current_link_speed/current_link_width как две пары разных смыслов.

  • Сохраните numa_node; если он равен -1, так и укажите, не заменяя неизвестность удобным предположением.

  • Не переписывайте numa_node как обычную настройку производительности: ABI Linux считает это обходом ошибки прошивки и помечает ядро.

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

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

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

01У карты max_link_width = 16, а current_link_width = 8. Что подтверждено этими данными?
02Откуда Linux 6.12 берёт current_link_speed для PCIe-устройства?
03Что показывает current_link_width в Linux 6.12?
04numa_node устройства равен -1, а local_cpulist перечисляет все CPU. Как это читать?
05На странице устройства max_link_speed соответствует ожидаемому поколению PCIe. Что ещё нужно проверить при приёмке?
06Откуда обычно появляется исходное значение numa_node PCI-устройства в Linux?
07Администратор хочет вручную записать удобный NUMA-узел в numa_node только для выравнивания отчёта. Как поступить?
08Какой набор лучше сохранить в протоколе приёмки одной PCIe-карты?

Следующий шаг

Сформулируйте задачу и уточните требования к своей системе.

Подготовить состав проекта

Откроется черновик вопроса. Отправьте его, когда будете готовы.

Проверяемая база

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

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

  • Официальная документация

    Linux v6.12 — drivers/pci/pci-sysfs.c

    Linux kernel maintainers / torvalds/linux · исходный код ядра Linux, тег v6.12, drivers/pci/pci-sysfs.c, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, файл по тегу v6.12 сверен. Официальная реализация, не ABI-файл.

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

    ABI testing symbols: sysfs-bus-pci

    The Linux Kernel documentation · документация ABI ядра Linux (sysfs-bus-pci), страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие