Общедоступный справочник командной строки ядра

Разберитесь в каждом параметре. Запросите точный промышленный профиль.

Этот общедоступный справочник описывает назначение, допустимые значения, влияние на latency, возможные отказы и проверку после загрузки. Универсальная командная строка HFTKernel намеренно не публикуется: точные значения зависят от топологии CPU, размещения NUMA, очередей NIC, учёта времени, хранилища, политики безопасности и нагрузки.

Инженерное правило

Универсальной командной строки для низкой latency не существует.

Промышленный профиль должен рассматривать служебные CPU, торговые CPU, соседние потоки SMT, узлы NUMA, очереди NIC и хранилища, потоки RCU, рабочие очереди, источники времени и привязку приложения как единую систему.

Отделяйте управление производительностью от политики рисков

Изоляция CPU, размещение IRQ и поведение NUMA относятся к управлению производительностью. Настройки защиты от уязвимостей, LSM, аудита, ASLR, watchdog и machine-check требуют отдельного решения по безопасности и эксплуатации.

Проверяйте эффект, а не синтаксис

Параметр может не поддерживаться, дублировать другой, переопределяться прошивкой или позднее изменяться пользовательским ПО. Определяющее значение имеют фактическое состояние в sysfs, procfs, dmesg, привязка IRQ и измеренная latency.

Промышленный профиль по запросу

Точные значения формируются под ваш сервер и нагрузку.

Перед выбором параметров загрузки инженеры HFTKernel рассматривают торговые и служебные CPU, соседние потоки SMT, узлы NUMA, очереди NIC и хранилища, доступ для управления, восстановление, учёт времени и безопасность как единую систему.

Справочник параметров

Каждый параметр, его варианты и эксплуатационный эффект

Ищите по параметру, подсистеме, значению, риску или команде проверки. Общедоступный справочник объясняет параметр без выбора значения для промышленной эксплуатации.

Нужны выбранные значения, маски CPU и итоговая командная строка? Они формируются после анализа топологии и не публикуются как универсальный шаблон.
Запросить точный профиль

Параметров: 5

Загрузка, корневая файловая система, консоль и аварийный дамп

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

BOOT_IMAGE Метаданные загрузчика; не параметр управления latency

Назначение

GRUB обычно добавляет этот токен для записи выбранного образа ядра. Основное ядро Linux не использует его для настройки; он полезен главным образом для диагностики и сопоставления загрузки с конкретным образом.

Значения и варианты

BOOT_IMAGE=/boot/vmlinuz-<version> Путь в формате файловой системы, используемый во многих конфигурациях GRUB.
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-<version> Обозначение устройства GRUB.
omitted Допустимо; выбранный образ по-прежнему определяется загрузчиком.

Компромисс или возможный отказ

Скопированная строка BOOT_IMAGE может быть устаревшей или чисто информационной. Определяющее значение имеет идентификация работающего ядра.

Проверка после загрузки

cat /proc/cmdline
uname -r
cat /proc/version
Постоянная ссылка
root Выбор корневого устройства ядром/initramfs

Назначение

Выбирает блочное устройство или логический идентификатор будущей корневой файловой системы. initramfs может разрешить значение до монтирования настоящего корня.

Значения и варианты

root=UUID=<filesystem-uuid> Стабильный идентификатор файловой системы; обычно предпочтительнее изменяемого имени устройства.
root=PARTUUID=<partition-uuid> Стабильный идентификатор таблицы разделов.
root=LABEL=<label> or root=PARTLABEL=<label> Понятная человеку метка файловой системы или раздела.
root=/dev/nvme0n1p2 or root=/dev/mapper/<name> Прямой путь к устройству; прост, но имя может зависеть от порядка обнаружения.

Компромисс или возможный отказ

Неверное значение препятствует загрузке. Перед развёртыванием убедитесь, что initramfs содержит необходимые драйверы хранилища, LVM, RAID или шифрования.

Проверка после загрузки

findmnt -no SOURCE /
blkid
cat /proc/cmdline
Постоянная ссылка
ro Начальный режим монтирования корневой файловой системы

Назначение

Запрашивает начальное монтирование корневой файловой системы ядром только для чтения. Система инициализации обычно выполняет проверки и позднее перемонтирует её для чтения и записи.

Значения и варианты

ro Начальное монтирование только для чтения.
rw Начальное монтирование для чтения и записи.

Компромисс или возможный отказ

Изменение может повлиять на восстановление при ранней загрузке и поведение initramfs; проверьте сценарии восстановления.

Проверка после загрузки

findmnt -no OPTIONS /
cat /proc/cmdline
Постоянная ссылка
console Направление сообщений консоли ядра

Назначение

Управляет направлением сообщений консоли ядра. Значения последовательной консоли задают устройство, скорость, чётность и число бит данных; для поддерживаемых платформ также доступны виртуальные и локальные консоли.

Значения и варианты

console=tty0 Локальный виртуальный терминал.
console=ttyS<N>,<baud><parity><bits> Последовательная консоль, совместимая с 8250; примеры: 115200n8 и 9600n8.
console=hvc0 Виртуальная консоль гипервизора в поддерживаемых гостевых системах.
console=null Отбрасывать вывод консоли.
multiple console= tokens Дублировать вывод ядра на несколько подходящих консолей; проверьте, какое устройство становится /dev/console.

Компромисс или возможный отказ

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

Проверка после загрузки

cat /proc/consoles
dmesg | head
stty -F /dev/ttyS0 2>/dev/null || true
Постоянная ссылка
crashkernel Резервирование памяти kdump

Назначение

Резервирует память для ядра захвата, которое может записать vmcore после panic. Значение auto реализовано в некоторых дистрибутивах, но не является универсально переносимой политикой определения размера в основном проекте.

Значения и варианты

crashkernel=<size> Зарезервировать фиксированный объём, например 512M.
crashkernel=<range>:<size>[,<range>:<size>…] Выбрать размер резерва по объёму установленной RAM.
crashkernel=<size>,high plus crashkernel=<size>,low Разделить высокий и низкий резерв на поддерживаемых архитектурах.
crashkernel=<size>,cma Использовать резерв на основе CMA, если поддерживается.
crashkernel=auto Автоматическое определение размера, зависящее от дистрибутива; подтвердите поддержку в целевом ядре и инструментах загрузки.
omitted Без резерва для аварийного ядра; kdump не сможет захватить vmcore.

Компромисс или возможный отказ

Зарезервированная RAM недоступна основному ядру. Ядро захвата с недостаточной памятью откажет именно тогда, когда понадобится больше всего.

Проверка после загрузки

grep -i "Crash kernel" /proc/iomem
systemctl status kdump 2>/dev/null || systemctl status kdump-tools 2>/dev/null || true
dmesg | grep -i crashkernel
Постоянная ссылка

Параметров: 5

Простой CPU, частота и топология

Управление C-states, P-states, балансом энергии и производительности и одновременной многопоточностью.

intel_idle.max_cstate Выбор и глубина драйвера Intel cpuidle

Назначение

Управляет самым глубоким состоянием простоя, предоставляемым intel_idle. Значение 0 отключает intel_idle и переключает на другой драйвер простоя, обычно acpi_idle; само по себе оно не гарантирует, что CPU остаётся в C0.

Значения и варианты

0 Отключить intel_idle и перейти к альтернативе платформы.
1 Предоставлять только самое неглубокое состояние intel_idle.
2–9 Разрешать более глубокие состояния до выбранного индекса драйвера с учётом поддержки CPU.
omitted Использовать значение драйвера по умолчанию и таблицу состояний платформы.

Компромисс или возможный отказ

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

Проверка после загрузки

cat /sys/devices/system/cpu/cpuidle/current_driver
grep -H . /sys/devices/system/cpu/cpu0/cpuidle/state*/name 2>/dev/null
turbostat --quiet --show CPU,c1,c3,c6,c7 2>/dev/null || true
Постоянная ссылка
processor.max_cstate Ограничение состояния простоя процессора ACPI

Назначение

Ограничивает самое глубокое состояние простоя ACPI, регистрируемое драйвером простоя процессора. Важно преимущественно при активном acpi_idle, в том числе когда другой драйвер простоя отключён или недоступен.

Значения и варианты

0 В текущем коде основного проекта ни одно C-state ACPI не проходит цикл регистрации; итоговое резервное поведение нужно проверить на целевой платформе.
1 Ограничить состоянием C1.
2–8 Разрешить состояния ACPI до выбранной глубины, если прошивка их предоставляет.
9 or another value above the normal limit Может переопределять некоторые ограничения чёрного списка DMI; это не рекомендация по latency.
omitted Использовать значения прошивки и драйвера по умолчанию.

Компромисс или возможный отказ

Значение 0 может приводить к зависящему от платформы резервному поведению. Не считайте его переносимым синонимом «только C0».

Проверка после загрузки

cat /sys/devices/system/cpu/cpuidle/current_driver
grep -H . /sys/devices/system/cpu/cpu0/cpuidle/state*/name 2>/dev/null
cat /sys/module/processor/parameters/max_cstate 2>/dev/null || true
Постоянная ссылка
intel_pstate Режим драйвера изменения частоты Intel CPU

Назначение

Выбирает режим работы драйвера изменения частоты intel_pstate или запрещает его загрузку. Выбранный режим меняет семантику управления, поведение HWP и доступные governors.

Значения и варианты

disable Не включать intel_pstate.
active Использовать активный режим intel_pstate и его внутренние алгоритмы performance/powersave.
passive Использовать intel_pstate как драйвер изменения частоты под управлением общих governors cpufreq.
force Принудительно включить intel_pstate на обычно исключённых системах; возможны последствия для управления температурой и питанием платформы.
no_hwp Не включать Hardware P-states.
hwp_only Загружать только при доступности HWP.
support_acpi_ppc Соблюдать ограничения ACPI _PPC.
per_cpu_perf_limits Предоставлять ограничения производительности для каждого логического CPU.
no_cas Отключить поддержку планирования с учётом вычислительной мощности на гибридных системах.

Компромисс или возможный отказ

Политика фиксированной максимальной частоты может усилить тепловой троттлинг и снизить устойчивую производительность всех ядер. Измеряйте время пребывания на частотах и tail latency совместно.

Проверка после загрузки

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver 2>/dev/null
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2>/dev/null
cpupower frequency-info 2>/dev/null || true
Постоянная ссылка
epb Нестандартный токен загрузки; Intel Energy Performance Bias обычно настраивается через sysfs или x86_energy_perf_policy

Назначение

Задаёт политику Energy Performance Bias в деревьях ядра или инструментах загрузки, которые явно обрабатывают этот токен. Основной Linux обычно предоставляет Intel EPB для каждого CPU через energy_perf_bias и не определяет epb= как общий параметр командной строки ядра.

Значения и варианты

0 Максимальный приоритет производительности в интерфейсе EPB.
1–14 Промежуточный баланс производительности и энергии.
15 Максимальный приоритет энергосбережения.
performance, balance-performance, normal, balance-power, power Именованные значения, принимаемые интерфейсом sysfs для каждого CPU в поддерживаемых ядрах.

Компромисс или возможный отказ

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

Проверка после загрузки

grep -H . /sys/devices/system/cpu/cpu*/power/energy_perf_bias 2>/dev/null
x86_energy_perf_policy --debug 2>/dev/null | head -n 40 || true
dmesg | grep -i "unknown kernel command line.*epb" || true
Постоянная ссылка
nosmt Управление одновременной многопоточностью

Назначение

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

Значения и варианты

nosmt Отключить SMT при загрузке; повторное включение во время работы может оставаться доступным, если платформа и ядро это разрешают.
nosmt=force Принудительно отключить SMT и запретить включение во время работы.
omitted Использовать значения прошивки и ядра по умолчанию.

Компромисс или возможный отказ

Отключение SMT уменьшает число логических CPU и может перенести больше фоновой работы на меньшее число служебных CPU.

Проверка после загрузки

cat /sys/devices/system/cpu/smt/control
cat /sys/devices/system/cpu/smt/active
lscpu -e=CPU,CORE,SOCKET,ONLINE
Постоянная ссылка

Параметров: 6

Поведение тиков, изоляция CPU, размещение IRQ и RCU

Основная группа управления latency: CPU full-dynticks, изоляция доменов планировщика, привязка служебных задач, смещение таймеров и вынос обратных вызовов RCU.

nohz Подавление тиков при простое

Назначение

Управляет режимом простоя без тиков, если ядро собрано с необходимой поддержкой NO_HZ. Включённый режим позволяет простаивающим CPU останавливать периодический тик планировщика.

Значения и варианты

on Включить простой без тиков, если поддерживается.
off Отключить простой без тиков и сохранить периодические тики.
omitted Использовать значение конфигурации ядра по умолчанию.

Компромисс или возможный отказ

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

Проверка после загрузки

grep -E "CONFIG_NO_HZ(_IDLE|_FULL)?=" /boot/config-$(uname -r) 2>/dev/null
cat /proc/cmdline
Постоянная ссылка
skew_tick Распределение фаз периодических тиков по CPU

Назначение

Управляет смещением периодических тиков между CPU вместо одновременного срабатывания на всех CPU. Включение может снизить конкуренцию за блокировки и синхронный шум в больших системах.

Значения и варианты

0 Не смещать периодические тики намеренно.
1 Распределить фазы тиков между CPU.

Компромисс или возможный отказ

Компромисс: более высокое энергопотребление из-за возможного сокращения периодов общего простоя процессорного пакета.

Проверка после загрузки

cat /proc/cmdline
trace-cmd record -e timer -e irq -e sched sleep 5 2>/dev/null || true
Постоянная ссылка
irqaffinity Маска привязки IRQ по умолчанию

Назначение

Задаёт список CPU по умолчанию для IRQ без более конкретной политики привязки. Выбранная маска CPU определяет, где начинается обработка иначе не назначенных прерываний.

Значения и варианты

irqaffinity=<cpu-list> CPU и диапазоны через запятую, например 0,4-7.
omitted Использовать маску привязки архитектуры/ядра по умолчанию.

Компромисс или возможный отказ

CPU 0 может стать узким местом. Управляемые прерывания MSI-X могут подчиняться маске по умолчанию иначе, чем обычные IRQ.

Проверка после загрузки

cat /proc/irq/default_smp_affinity
grep -H . /proc/irq/*/smp_affinity_list 2>/dev/null | head -n 80
cat /proc/interrupts
Постоянная ссылка
isolcpus Изоляция доменов планировщика и управляемых IRQ

Назначение

Выбирает CPU и флаги изоляции для исключения из доменов планировщика, режима full-dynticks и исключения из управляемых IRQ. Изоляция доменов задаётся при загрузке и необратима до следующей перезагрузки.

Значения и варианты

isolcpus=<cpu-list> Устаревшая форма; подразумевается изоляция доменов.
isolcpus=domain,<cpu-list> Исключить CPU из доменов балансировки нагрузки планировщика.
isolcpus=nohz,<cpu-list> Включить изоляцию full-dynticks для CPU.
isolcpus=managed_irq,<cpu-list> По возможности исключить из масок управляемых IRQ при наличии служебных CPU.
combined flags Пример: domain,nohz,managed_irq,2-15.

Компромисс или возможный отказ

Изоляция не переносит автоматически потоки ядра, рабочие очереди, очереди устройств, таймеры или потоки приложения. Это один компонент полной схемы служебной обработки.

Проверка после загрузки

cat /sys/devices/system/cpu/isolated
cat /sys/devices/system/cpu/nohz_full
taskset -pc $$
cat /proc/interrupts
Постоянная ссылка
nohz_full Набор CPU full-dynticks

Назначение

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

Значения и варианты

nohz_full=<cpu-list> Выбрать CPU full-dynticks, например 2-15,18-31.
nohz_full=all Запросить все возможные CPU; ядро всё равно сохраняет необходимые служебные CPU.
omitted Без CPU full-dynticks, выбранных при загрузке.

Компромисс или возможный отказ

Указанный CPU по-прежнему может получать прерывания, работу потоков ядра, ошибки страниц, сбросы TLB и межпроцессорные вызовы, если эти пути не контролируются отдельно.

Проверка после загрузки

cat /sys/devices/system/cpu/nohz_full
cat /proc/cmdline
grep -E "CONFIG_NO_HZ_FULL=|CONFIG_RCU_NOCB_CPU=" /boot/config-$(uname -r) 2>/dev/null
Постоянная ссылка
rcu_nocbs Вынос обратных вызовов RCU

Назначение

Переносит выполнение обратных вызовов RCU с выбранных CPU в выделенные kthreads. Токен без значения не выбирает CPU при загрузке; необходим явный список CPU или совместимый механизм настройки во время работы.

Значения и варианты

rcu_nocbs=<cpu-list> Вынести обратные вызовы для указанных CPU, например rcu_nocbs=1-3.
rcu_nocbs with no argument CPU не выбираются при загрузке; подходящие CPU можно переключить позднее через cpusets/рабочие интерфейсы.
rcu_nocb_poll Перевести nocb kthreads на опрос вместо ожидания пробуждений; может снизить latency пробуждения ценой значительного энергопотребления.
omitted Использовать обычное размещение обратных вызовов, кроме CPU nohz_full, для которых современные ядра автоматически выполняют вынос.

Компромисс или возможный отказ

Вынос перемещает работу, а не устраняет её. Недостаточные служебные CPU могут накапливать обратные вызовы и вызывать остановки всей системы.

Проверка после загрузки

ps -eLo pid,tid,psr,cls,rtprio,comm | grep -E "rcuo|rcuc"
grep -E "rcu_nocbs|nohz_full" /proc/cmdline
cat /sys/devices/system/cpu/nohz_full
Постоянная ссылка

Параметров: 4

Clocksource, политика питания PCIe и обход проблем платформы

Управление учётом времени и платформой, которое может влиять на latency пробуждения, периодическую работу и предсказуемость путей устройств.

pcie_aspm.policy Политика PCI Express Active State Power Management

Назначение

Выбирает политику PCIe Active State Power Management. Доступные политики обменивают latency пробуждения линии на энергопотребление платформы с учётом управления каждой линией со стороны прошивки и ядра.

Значения и варианты

default Использовать политику прошивки/по умолчанию.
performance Отдать приоритет производительности и отключить ASPM/Clock PM в рамках политики ядра.
powersave Включить энергосберегающие состояния линий со сбалансированной политикой.
powersupersave Использовать наиболее агрессивную доступную политику энергосбережения.

Компромисс или возможный отказ

Энергопотребление растёт, а некоторые линии под управлением прошивки могут не следовать запрошенной политике.

Проверка после загрузки

cat /sys/module/pcie_aspm/parameters/policy 2>/dev/null
lspci -vv | grep -E "LnkCap:|LnkCtl:" | head -n 80
Постоянная ссылка
acpi_pad.disable Управление ACPI Processor Aggregator, зависящее от версии/поставщика

Назначение

Управляет специфичным для дерева ядра переключателем ACPI Processor Aggregator, предназначенным для предотвращения принудительного простоя. Текущий код acpi_pad основного проекта может не предоставлять этот параметр модуля, поэтому поддержку нужно проверить в точном ядре и дистрибутиве.

Значения и варианты

acpi_pad.disable=1 Поддерживается только деревьями ядра, предоставляющими этот параметр модуля.
acpi_pad.disable=0 Включение/поведение по умолчанию в деревьях, реализующих параметр.
driver/module blacklist policy Переносимая эксплуатационная альтернатива, если драйвер модульный и подтверждено, что он не нужен.

Компромисс или возможный отказ

Удаление механизма управления питанием платформы может нарушить ожидания прошивки. Проверьте на точной модели сервера и версии BIOS.

Проверка после загрузки

ls -la /sys/module/acpi_pad/parameters 2>/dev/null || true
grep -w acpi_pad /proc/modules 2>/dev/null || true
dmesg | grep -i "unknown kernel command line.*acpi_pad" || true
Постоянная ссылка
clocksource Выбор источника учёта времени ядра

Назначение

Выбирает именованный clocksource ядра. В современных синхронизированных системах с инвариантным TSC он может обеспечивать низкие накладные расходы чтения и высокое разрешение, тогда как другим платформам может требоваться иной проверенный источник.

Значения и варианты

clocksource=tsc Принудительно использовать TSC, если ядро считает его доступным.
clocksource=hpet Использовать HPET, если доступен; обычно более высокие накладные расходы чтения.
clocksource=acpi_pm Использовать таймер ACPI PM, если доступен.
clocksource=kvm-clock, hyperv_clocksource, xen, or another listed source Варианты, зависящие от гипервизора/платформы.
omitted Позволить ядру выбрать стабильный источник с лучшей оценкой.

Компромисс или возможный отказ

Не добавляйте tsc=reliable только ради подавления предупреждений. Это отдельное переопределение отключает проверки стабильности и уместно лишь при подтверждённых гарантиях платформы.

Проверка после загрузки

cat /sys/devices/system/clocksource/clocksource0/current_clocksource
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
dmesg | grep -Ei "clocksource|tsc"
Постоянная ссылка
no_timer_check Обход проверки источника IRQ таймера x86

Назначение

Отключает загрузочную проверку для выявления некорректной маршрутизации прерываний таймера. Это обход проблемы совместимости для конкретного оборудования или виртуальных сред, а не общая оптимизация latency.

Значения и варианты

no_timer_check Пропустить проверку маршрутизации таймера.
omitted Выполнить обычные проверки таймеров ядра.

Компромисс или возможный отказ

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

Проверка после загрузки

cat /proc/cmdline
dmesg | grep -Ei "timer.*check|timer.*irq|APIC timer"
Постоянная ссылка

Параметров: 9

Безопасность, аудит, watchdog и machine-check

Настройки с существенными последствиями, которые снижают накладные расходы ценой безопасности или диагностики отказов. Требуют явного решения о производственном риске.

selinux Инициализация SELinux

Назначение

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

Значения и варианты

selinux=0 Отключить SELinux при загрузке.
selinux=1 or omitted Разрешить инициализацию SELinux, если он собран и настроен.
enforcing=0 Связанная альтернатива: инициализировать SELinux в разрешающем режиме, чтобы отказы регистрировались, но не блокировали действия.
enforcing=1 Начать применение ограничений, если политика это поддерживает.

Компромисс или возможный отказ

selinux=0 является решением по безопасности, а не общим требованием HFT. Повторное включение обычно требует перезагрузки и может потребовать переразметки меток файловой системы.

Проверка после загрузки

getenforce 2>/dev/null || true
sestatus 2>/dev/null || true
cat /sys/fs/selinux/enforce 2>/dev/null || true
Постоянная ссылка
nosoftlockup Детектор soft-lockup

Назначение

Отключает watchdog, который сообщает о CPU, слишком долго не запускающих поток watchdog.

Значения и варианты

nosoftlockup Отключить обнаружение soft-lockup.
omitted Использовать настроенную политику watchdog.
watchdog_thresh=<seconds> Связанная настройка: изменить порог обнаружения зависания вместо отключения.

Компромисс или возможный отказ

Без детектора зависший CPU может оставаться незамеченным до срабатывания внешней проверки состояния или аппаратного watchdog.

Проверка после загрузки

cat /proc/sys/kernel/watchdog 2>/dev/null
cat /proc/sys/kernel/soft_watchdog 2>/dev/null || true
dmesg | grep -i watchdog
Постоянная ссылка
mitigations Политика защиты от уязвимостей CPU

Назначение

Выбирает политику защиты от уязвимостей CPU. Доступные режимы обменивают накладные расходы переключения контекста и управления спекулятивным выполнением на защиту от применимых аппаратных уязвимостей.

Значения и варианты

off Отключить все необязательные меры защиты.
auto Включить защиту в соответствии с уязвимостями CPU и настройками ядра по умолчанию.
auto,nosmt Автоматическая защита с отключением SMT там, где требуется.
omitted Использовать политику, заданную при сборке/по умолчанию.

Компромисс или возможный отказ

В зависимости от CPU это может раскрыть данные ядра, процессов, VM и других потоков. Выигрыш в latency зависит от оборудования и нагрузки.

Проверка после загрузки

grep . /sys/devices/system/cpu/vulnerabilities/*
cat /proc/cmdline
dmesg | grep -i mitigation
Постоянная ссылка
audit Начальное состояние подсистемы аудита Linux

Назначение

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

Значения и варианты

audit=0 or audit=off Отключить аудит на эту загрузку; полностью включить позднее без перезагрузки нельзя.
audit=1 or audit=on Включить аудит при загрузке.
omitted Использовать настроенное значение ядра/дистрибутива по умолчанию.

Компромисс или возможный отказ

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

Проверка после загрузки

auditctl -s 2>/dev/null || true
cat /proc/cmdline
dmesg | grep -i "audit.*enabled"
Постоянная ссылка
mce Обработка machine-check x86

Назначение

Управляет обработкой x86 Machine Check Exception и связанным восстановлением. Отключение убирает асинхронные сообщения об аппаратных ошибках и важную телеметрию сбоев CPU, памяти и межсоединений.

Значения и варианты

off Отключить обработку machine-check.
no_cmci Отключить прерывания исправленных ошибок и использовать опрос, если поддерживается.
dont_log_ce Не регистрировать исправленные ошибки.
ignore_ce Игнорировать исправленные ошибки.
no_lmce Отключить поддержку Local Machine Check Exception.
bootlog or nobootlog Управлять регистрацией machine-check, обнаруженных при загрузке, в поддерживаемых ядрах.
omitted Использовать обычную обработку machine-check.

Компромисс или возможный отказ

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

Проверка после загрузки

dmesg | grep -Ei "mce|machine check|hardware error"
ls /sys/devices/system/machinecheck 2>/dev/null || true
systemctl status rasdaemon 2>/dev/null || true
Постоянная ссылка
nomce Устаревший переключатель machine-check x86-32

Назначение

Отключает поддержку Machine Check Exception в 32-битных ядрах x86. Это не стандартный параметр x86-64; он может дублировать уже выбранную другую политику machine-check.

Значения и варианты

nomce Отключить MCE в поддерживаемых 32-битных сборках x86.
omitted Использовать обычную политику архитектуры.

Компромисс или возможный отказ

Избыточные или неприменимые к архитектуре токены затрудняют аудит конфигурации загрузки и могут скрывать неверные предположения.

Проверка после загрузки

uname -m
cat /proc/cmdline
dmesg | grep -Ei "mce|machine check"
Постоянная ссылка
norandmaps Рандомизация адресного пространства пользовательских процессов

Назначение

Отключает ASLR пользовательских процессов, что эквивалентно kernel.randomize_va_space=0. Виртуальные адреса становятся более повторяемыми, но устойчивость к эксплуатации уязвимостей существенно снижается.

Значения и варианты

norandmaps Отключить рандомизацию адресного пространства пользовательских процессов.
omitted Использовать политику ASLR sysctl/по умолчанию.
kernel.randomize_va_space=0, 1, or 2 Рабочая политика/sysctl: отключено, ограниченная рандомизация или полная рандомизация.

Компромисс или возможный отказ

Ослабляет защиту от эксплуатации повреждения памяти на всём сервере.

Проверка после загрузки

sysctl kernel.randomize_va_space
cat /proc/cmdline
Постоянная ссылка
nowatchdog Общий переключатель watchdog зависаний ядра

Назначение

Отключает watchdog как hard-lockup, так и soft-lockup. При наличии этого флага отдельные узкие переключатели отключения watchdog могут стать избыточными.

Значения и варианты

nowatchdog Отключить watchdog зависаний ядра.
omitted Использовать настроенную политику watchdog.
watchdog_thresh=<seconds> Связанная альтернатива: сохранить обнаружение, но увеличить порог.

Компромисс или возможный отказ

Жёсткое или мягкое зависание может продолжаться без сообщения ядра. Обеспечьте наличие другого независимого механизма контроля работоспособности.

Проверка после загрузки

cat /proc/sys/kernel/watchdog 2>/dev/null
cat /proc/sys/kernel/nmi_watchdog 2>/dev/null
dmesg | grep -i watchdog
Постоянная ссылка
nmi_watchdog NMI watchdog для hard-lockup

Назначение

Управляет детектором hard-lockup на основе NMI и, на поддерживаемых системах x86, его периодической активностью счётчика производительности.

Значения и варианты

0 Отключить NMI watchdog.
1 Включить NMI watchdog, если поддерживается.
omitted Использовать значение ядра/дистрибутива по умолчанию.

Компромисс или возможный отказ

Отключение убирает важный сигнал о CPU, переставших обрабатывать обычные прерывания.

Проверка после загрузки

cat /proc/sys/kernel/nmi_watchdog
dmesg | grep -i "NMI watchdog"
Постоянная ссылка

Параметров: 3

Поведение NUMA и IOMMU

Управление автоматическим переносом страниц и политикой трансляции DMA для стабильной локальности и предсказуемых путей устройств.

numa_balancing Автоматический перенос страниц NUMA

Назначение

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

Значения и варианты

disable Отключить автоматическую балансировку NUMA.
enable Включить автоматическую балансировку NUMA.
omitted Использовать значение ядра/дистрибутива по умолчанию.

Компромисс или возможный отказ

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

Проверка после загрузки

sysctl kernel.numa_balancing
numactl --hardware
numastat -p $$ 2>/dev/null || true
Постоянная ссылка
intel_iommu Инициализация Intel DMAR/IOMMU

Назначение

Управляет инициализацией Intel IOMMU и связанными возможностями переназначения DMA или прерываний с учётом поддержки оборудования и прошивки.

Значения и варианты

on Включить драйвер Intel IOMMU.
off Отключить его.
igfx_off Обойти блок DMAR встроенной графики.
sp_off Отключить поддержку суперстраниц IOMMU.
sm_on or sm_off Разрешить или запретить масштабируемый режим Intel.
strict Устаревший специфичный для драйвера запрос, эквивалентный iommu.strict=1.
tboot_noforce Не позволять tboot принудительно включать IOMMU; снижает защиту от DMA-атак.

Компромисс или возможный отказ

Дефекты прошивки и политика трансляции могут влиять на latency или стабильность устройств. Проверяйте каждое поколение сервера/BIOS.

Проверка после загрузки

dmesg | grep -Ei "DMAR|IOMMU"
find /sys/kernel/iommu_groups -maxdepth 1 -type d 2>/dev/null | head
lspci -vv | grep -i "IOMMU\|ATS" | head -n 40
Постоянная ссылка
iommu Политика прямого пропуска DMA по умолчанию

Назначение

Выбирает политику доменов IOMMU по умолчанию для обычных устройств. Прямой пропуск или тождественное отображение могут снизить накладные расходы трансляции DMA для доверенных устройств, тогда как домены с трансляцией обеспечивают более сильную изоляцию.

Значения и варианты

iommu=pt Использовать режим прямого пропуска по умолчанию.
iommu=nopt Использовать режим DMA с трансляцией по умолчанию.
iommu.passthrough=1 Современный явный параметр управления прямым пропуском.
iommu.passthrough=0 Использовать трансляцию IOMMU по умолчанию.
iommu.strict=0 or 1 Связанная политика инвалидации в режиме трансляции: отложенная или строгая.
iommu=off, force, noforce, soft, merge, nomerge Общие параметры, зависящие от архитектуры; не прямые синонимы прямого пропуска.

Компромисс или возможный отказ

Прямой пропуск ослабляет изоляцию DMA. Неисправное или скомпрометированное устройство может обращаться к памяти сервера за пределами выделенных ему буферов.

Проверка после загрузки

dmesg | grep -Ei "IOMMU.*(passthrough|Default domain)|DMAR"
find /sys/kernel/iommu_groups -maxdepth 2 -type l 2>/dev/null | head -n 40
Постоянная ссылка

Параметров: 3

Именование сети и политика восстановления NVMe

Именование NIC в пользовательском пространстве и настройки тайм-аутов и повторов хранилища, определяющие, как быстро обнаруживаются неисправности.

net.ifnames Политика предсказуемого именования интерфейсов systemd/udev

Назначение

Управляет предсказуемым именованием интерфейсов в systemd/udev. Отключение может вернуть устаревшие имена вроде eth0, если дистрибутив это допускает; это соглашение пользовательского пространства, передаваемое в командной строке ядра, а не переключатель сетевой latency.

Значения и варианты

0 Отключить предсказуемую NamePolicy.
1 or omitted Разрешить предсказуемое именование согласно активной схеме имён systemd и политике .link.

Компромисс или возможный отказ

Устаревший порядок ethX может меняться при изменении оборудования, прошивки или порядка обнаружения. Ошибка идентификации интерфейса опаснее любых предпочтений в именовании.

Проверка после загрузки

ip -br link
udevadm test-builtin net_id /sys/class/net/$(ls /sys/class/net | head -n1) 2>/dev/null | head -n 40 || true
cat /proc/cmdline
Постоянная ссылка
nvme_core.io_timeout Тайм-аут команд ввода-вывода NVMe в секундах

Назначение

Задаёт входное значение тайм-аута ввода-вывода NVMe в секундах. Текущий основной проект хранит параметр модуля как беззнаковое целое со значением по умолчанию 30, затем преобразует его в тайм-аут блочного слоя в jiffies; поэтому фактический тайм-аут очереди нужно проверить после загрузки.

Значения и варианты

30 Текущее значение основного проекта по умолчанию в секундах; проверьте целевое ядро.
a finite positive integer Явный тайм-аут в секундах.
4294967295 Максимальное 32-битное беззнаковое входное значение, а не обозначение бесконечности. Выражение драйвера nvme_io_timeout * HZ может переполниться до формирования фактического тайм-аута запроса; в ядре 1000 Hz это значение может дать около 49.7 дня вместо 136 лет.

Компромисс или возможный отказ

Очень большой тайм-аут или переполнение могут блокировать ввод-вывод на неожиданное время и задержать сброс, переключение при отказе или восстановление приложения. Считайте значение в /sys/block/<device>/queue/io_timeout фактическим обязательным значением.

Проверка после загрузки

cat /sys/module/nvme_core/parameters/io_timeout
grep -H . /sys/block/nvme*/queue/io_timeout 2>/dev/null || true
grep '^CONFIG_HZ=' /boot/config-$(uname -r) 2>/dev/null || true
nvme list 2>/dev/null || true
dmesg | grep -i nvme
Постоянная ссылка
nvme_core.max_retries Максимальное число повторов команд NVMe

Назначение

Задаёт максимальное число повторов подходящих команд NVMe. Текущий основной проект хранит его как беззнаковый байт со значением по умолчанию 5.

Значения и варианты

0 Не повторять подходящие команды.
1–255 Максимальное число повторов; 10 вдвое больше текущего значения основного проекта по умолчанию.
omitted Использовать значение ядра по умолчанию.

Компромисс или возможный отказ

Большее число повторов может увеличить tail latency и задержать переключение при отказе. Меньшее число повторов может раньше выявить временные ошибки носителя или транспорта.

Проверка после загрузки

cat /sys/module/nvme_core/parameters/max_retries
dmesg | grep -Ei "nvme.*(retry|timeout|reset)"
Постоянная ссылка

Как проектируются профили

Пять уровней точного промышленного профиля загрузки

Удобный в сопровождении профиль отделяет постоянные настройки платформы от зависящих от топологии списков CPU и рискованных переопределений безопасности. HFTKernel оценивает эти уровни совместно и поставляет конфигурацию, которую можно проанализировать, проверить и отменить.

01
Загрузка и восстановление

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

02
Предсказуемость платформы

Драйвер простоя, частотная политика, PCIe ASPM, clocksource, NUMA и политика IOMMU.

03
Топология

Служебные CPU, CPU full-dynticks, вынос RCU, маска IRQ по умолчанию, привязка очередей и cpusets приложений.

04
Применение настроек во время работы

Маски рабочих очередей, привязка потоков ядра, политика EPB/governor, очереди NIC, привязка памяти и CPU affinity сервисов.

05
Управление рисками

Защита от уязвимостей, LSM, аудит, ASLR, watchdog и политика machine-check рассматриваются отдельно.

Проверка после загрузки

Подтвердите фактическое состояние перед измерением latency

Командная строка лишь задаёт входные параметры. Этот список проверок подтверждает работающее ядро, топологию CPU, набор full-dynticks, размещение IRQ, clocksource, политику питания, IOMMU, состояние безопасности и политику восстановления NVMe.

Последовательность проверок без изменения состояния
printf '%s\n' '== kernel and cmdline =='
uname -a
cat /proc/cmdline

printf '%s\n' '== CPU topology and isolation =='
lscpu -e=CPU,CORE,SOCKET,NODE,ONLINE
cat /sys/devices/system/cpu/isolated
cat /sys/devices/system/cpu/nohz_full
cat /sys/devices/system/cpu/smt/control

printf '%s\n' '== idle and frequency =='
cat /sys/devices/system/cpu/cpuidle/current_driver
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver 2>/dev/null || true
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2>/dev/null || true
grep -H . /sys/devices/system/cpu/cpu*/power/energy_perf_bias 2>/dev/null || true

printf '%s\n' '== IRQ and RCU placement =='
cat /proc/irq/default_smp_affinity
cat /proc/interrupts
ps -eLo pid,tid,psr,cls,rtprio,comm | grep -E 'rcuo|rcuc|irq/' || true

printf '%s\n' '== clock, NUMA, and IOMMU =='
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
sysctl kernel.numa_balancing
dmesg | grep -Ei 'DMAR|IOMMU|clocksource|tsc'

printf '%s\n' '== watchdog, security, and storage =='
sysctl kernel.watchdog kernel.nmi_watchdog kernel.randomize_va_space 2>/dev/null || true
grep . /sys/devices/system/cpu/vulnerabilities/*
cat /sys/module/nvme_core/parameters/io_timeout 2>/dev/null || true
grep -H . /sys/block/nvme*/queue/io_timeout 2>/dev/null || true
cat /sys/module/nvme_core/parameters/max_retries 2>/dev/null || true

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

Документация основного проекта, использованная в справочнике

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