Referencia pública de la línea de comandos del kernel

Comprenda cada control. Solicite el perfil exacto de producción.

Esta referencia pública explica el propósito, los valores aceptados, las implicaciones para la latency, los modos de fallo y la verificación tras el arranque. Deliberadamente, no publica una línea de comandos universal de HFTKernel: los valores exactos dependen de la topología de CPU, la ubicación NUMA, las colas de NIC, la gestión del tiempo, el almacenamiento, la política de seguridad y la carga de trabajo.

Regla de ingeniería

No existe una línea de comandos universal para baja latency.

Un perfil de producción debe coordinar como un único sistema las CPU de mantenimiento, las CPU de trading, los hilos hermanos SMT, los nodos NUMA, las colas de NIC y almacenamiento, los hilos RCU, las colas de trabajo, las fuentes de tiempo y la afinidad de las aplicaciones.

Separe los controles de rendimiento de la política de riesgos

El aislamiento de CPU, la ubicación de IRQ y el comportamiento NUMA son controles de rendimiento. Las mitigaciones, LSM, la auditoría, ASLR, watchdog y la configuración de comprobación de máquina requieren una decisión de seguridad y operación independiente.

Verifique el efecto, no la sintaxis

Un parámetro puede no ser compatible, resultar redundante, quedar anulado por el firmware o ser modificado posteriormente por el espacio de usuario. El estado efectivo en sysfs, procfs, dmesg, la afinidad de IRQ y la latency medida es la referencia válida.

Perfil de producción bajo solicitud

Los valores exactos se generan para su host y su carga de trabajo.

El equipo de ingeniería de HFTKernel coordina como un único sistema las CPU de trading y mantenimiento, los hilos hermanos SMT, los nodos NUMA, las colas de NIC y almacenamiento, el acceso de administración, la recuperación, la gestión del tiempo y la seguridad antes de seleccionar los parámetros de arranque.

Referencia de parámetros

Cada control, sus variantes y su efecto operativo

Busque por parámetro, subsistema, valor, riesgo o comando de verificación. La referencia pública explica el control sin seleccionar un valor de producción.

¿Necesita los valores seleccionados, las máscaras de CPU y la línea de comandos final? Se generan tras una revisión de la topología y no se publican como una configuración predefinida genérica.
Solicitar perfil exacto

Parámetros: 5

Arranque, sistema de archivos raíz, consola y captura de fallos

Parámetros que seleccionan el kernel y el sistema de archivos raíz, definen el comportamiento del montaje inicial, habilitan la consola serie y reservan memoria para kdump.

BOOT_IMAGE Metadatos del gestor de arranque; no es un control de latency

Propósito

GRUB suele añadir este token para registrar la imagen del kernel seleccionada. El kernel upstream no lo utiliza como política de ajuste; resulta útil principalmente para diagnósticos y para correlacionar un arranque con una imagen específica.

Valores y variantes

BOOT_IMAGE=/boot/vmlinuz-<version> Ruta con formato de sistema de archivos utilizada por muchas configuraciones de GRUB.
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-<version> Notación de dispositivo de GRUB.
omitted Válido; el gestor de arranque sigue determinando la imagen seleccionada.

Compromiso o modo de fallo

Una cadena BOOT_IMAGE copiada puede estar desactualizada o ser meramente informativa. La identidad del kernel en ejecución es la referencia válida.

Verificar tras el arranque

cat /proc/cmdline
uname -r
cat /proc/version
Enlace permanente
root Selección del dispositivo raíz por el kernel/initramfs

Propósito

Selecciona el dispositivo de bloques o la identidad lógica que se convertirá en el sistema de archivos raíz. Un initramfs puede resolver el valor antes de que se monte la raíz real.

Valores y variantes

root=UUID=<filesystem-uuid> Identificador estable del sistema de archivos; generalmente preferible a un nombre de dispositivo que puede cambiar.
root=PARTUUID=<partition-uuid> Identificador estable de la tabla de particiones.
root=LABEL=<label> or root=PARTLABEL=<label> Etiqueta del sistema de archivos o de la partición legible para las personas.
root=/dev/nvme0n1p2 or root=/dev/mapper/<name> Ruta directa del dispositivo; sencilla, aunque el nombre puede variar según el orden de detección.

Compromiso o modo de fallo

Un valor incorrecto impide el arranque. Verifique que initramfs contenga los drivers necesarios de almacenamiento, LVM, RAID o cifrado antes de la implementación.

Verificar tras el arranque

findmnt -no SOURCE /
blkid
cat /proc/cmdline
Enlace permanente
ro Modo de montaje inicial del sistema de archivos raíz

Propósito

Solicita que el kernel monte inicialmente el sistema de archivos raíz en modo de solo lectura. El sistema de inicio normalmente realiza comprobaciones y lo vuelve a montar en modo de lectura y escritura más adelante.

Valores y variantes

ro Montaje inicial de solo lectura.
rw Montaje inicial de lectura y escritura.

Compromiso o modo de fallo

Cambiarlo puede alterar la reparación durante el arranque inicial y el comportamiento de initramfs; pruebe las rutas de recuperación.

Verificar tras el arranque

findmnt -no OPTIONS /
cat /proc/cmdline
Enlace permanente
console Enrutamiento de la consola del kernel

Propósito

Controla dónde se envían los mensajes de la consola del kernel. Los valores de la consola serie definen el dispositivo, la velocidad en baudios, la paridad y los bits de datos; también hay destinos de consola virtual y local para las plataformas compatibles.

Valores y variantes

console=tty0 Terminal virtual local.
console=ttyS<N>,<baud><parity><bits> Consola serie compatible con 8250; por ejemplo, 115200n8 y 9600n8.
console=hvc0 Consola virtual del hipervisor en huéspedes compatibles.
console=null Descartar la salida de la consola.
multiple console= tokens Duplicar la salida del kernel en más de una consola apta; verifique qué dispositivo se convierte en /dev/console.

Compromiso o modo de fallo

Una salida de consola abundante puede resultar costosa, especialmente en un dispositivo serie lento. Controle el nivel y la frecuencia de los registros en lugar de desactivar sin evaluar el acceso de recuperación.

Verificar tras el arranque

cat /proc/consoles
dmesg | head
stty -F /dev/ttyS0 2>/dev/null || true
Enlace permanente
crashkernel Reserva de memoria para kdump

Propósito

Reserva memoria para un kernel de captura que puede escribir un vmcore tras un panic. Algunas distribuciones implementan el valor auto, pero no es una política de dimensionamiento upstream universalmente portable.

Valores y variantes

crashkernel=<size> Reservar una cantidad fija, por ejemplo 512M.
crashkernel=<range>:<size>[,<range>:<size>…] Seleccionar el tamaño de la reserva según la RAM instalada.
crashkernel=<size>,high plus crashkernel=<size>,low Separar las reservas de memoria alta y baja en las arquitecturas compatibles.
crashkernel=<size>,cma Utilizar una reserva respaldada por CMA cuando sea compatible.
crashkernel=auto Dimensionamiento automático específico de la distribución; confirme la compatibilidad en el kernel de destino y las herramientas de arranque.
omitted Sin reserva para el kernel de captura; kdump no puede capturar un vmcore.

Compromiso o modo de fallo

La RAM reservada no está disponible para el kernel principal. Un kernel de captura con memoria insuficiente falla cuando más se necesita.

Verificar tras el arranque

grep -i "Crash kernel" /proc/iomem
systemctl status kdump 2>/dev/null || systemctl status kdump-tools 2>/dev/null || true
dmesg | grep -i crashkernel
Enlace permanente

Parámetros: 5

Inactividad, frecuencia y topología de CPU

Controles de estados C, estados P, sesgo entre energía y rendimiento, y multihilo simultáneo.

intel_idle.max_cstate Selección y profundidad del driver cpuidle de Intel

Propósito

Controla el estado de inactividad más profundo que expone intel_idle. Un valor de 0 desactiva intel_idle y recurre a otro driver de inactividad, normalmente acpi_idle; por sí solo no garantiza que la CPU permanezca en C0.

Valores y variantes

0 Desactivar intel_idle y recurrir a la alternativa de la plataforma.
1 Exponer solo el estado menos profundo de intel_idle.
2–9 Permitir estados progresivamente más profundos hasta el índice del driver seleccionado, según la compatibilidad de la CPU.
omitted Utilizar el valor predeterminado del driver y la tabla de estados de la plataforma.

Compromiso o modo de fallo

Los estados de inactividad poco profundos mejoran la uniformidad de activación, pero aumentan el consumo, el calor, la demanda de ventilación y posiblemente la presión sobre la frecuencia sostenida.

Verificar tras el arranque

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
Enlace permanente
processor.max_cstate Límite de estados de inactividad del procesador ACPI

Propósito

Limita el estado de inactividad ACPI más profundo registrado por el driver de inactividad del procesador. Es relevante principalmente cuando acpi_idle está activo, incluidos los casos en que otro driver de inactividad se ha desactivado o no está disponible.

Valores y variantes

0 En el código upstream actual, ningún estado C de ACPI supera el bucle de registro; el comportamiento alternativo resultante debe verificarse en la plataforma de destino.
1 Limitar a C1.
2–8 Permitir estados ACPI hasta la profundidad seleccionada, cuando el firmware los exponga.
9 or another value above the normal limit Puede anular algunos límites de la lista de exclusión DMI; no es una recomendación de latency.
omitted Utilizar los valores predeterminados del firmware y del driver.

Compromiso o modo de fallo

Utilizar 0 puede producir un comportamiento alternativo específico de la plataforma. No lo interprete como un sinónimo portable de «solo C0».

Verificar tras el arranque

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
Enlace permanente
intel_pstate Modo del driver de escalado de frecuencia de CPU Intel

Propósito

Selecciona el modo de funcionamiento del driver de escalado de frecuencia intel_pstate o impide que se cargue. El modo elegido cambia la semántica del control, el comportamiento de HWP y los governors disponibles.

Valores y variantes

disable No activar intel_pstate.
active Utilizar el modo activo de intel_pstate y sus algoritmos internos performance/powersave.
passive Utilizar intel_pstate como driver de escalado bajo governors genéricos de cpufreq.
force Forzar intel_pstate en sistemas que normalmente se excluyen; los controles térmicos y de energía de la plataforma pueden verse afectados.
no_hwp No activar Hardware P-states.
hwp_only Cargar solo donde HWP esté disponible.
support_acpi_ppc Respetar los límites ACPI _PPC.
per_cpu_perf_limits Exponer límites de rendimiento por CPU lógica.
no_cas Desactivar la compatibilidad con planificación consciente de la capacidad en sistemas híbridos.

Compromiso o modo de fallo

Una política de frecuencia máxima fija puede aumentar la limitación térmica y reducir la sostenibilidad del rendimiento con todos los núcleos. Mida conjuntamente la residencia en frecuencias y la tail latency.

Verificar tras el arranque

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
Enlace permanente
epb Token de arranque no estándar; Intel Energy Performance Bias se configura normalmente mediante sysfs o x86_energy_perf_policy

Propósito

Representa una política de Energy Performance Bias en árboles del kernel o herramientas de arranque que procesan explícitamente el token. Linux upstream normalmente expone Intel EPB por CPU mediante energy_perf_bias y no define epb= como un parámetro genérico de la línea de comandos del kernel.

Valores y variantes

0 Máxima preferencia por el rendimiento en la interfaz EPB.
1–14 Compromiso intermedio entre rendimiento y energía.
15 Máxima preferencia por el ahorro de energía.
performance, balance-performance, normal, balance-power, power Valores con nombre aceptados por la interfaz sysfs por CPU en los kernels compatibles.

Compromiso o modo de fallo

El firmware, la suspensión y reanudación, la conexión en caliente de CPU o un servicio de gestión de energía pueden sobrescribir EPB. Trate la política seleccionada como un estado de ejecución administrado y verifíquela continuamente.

Verificar tras el arranque

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
Enlace permanente
nosmt Control de multihilo simultáneo

Propósito

Desactiva los hilos SMT secundarios para que cada núcleo físico exponga como máximo una CPU lógica en línea. Esto puede reducir la contención entre hilos hermanos en unidades de ejecución, cachés y algunas rutas de interrupción.

Valores y variantes

nosmt Desactivar SMT durante el arranque; puede seguir siendo posible reactivarlo en tiempo de ejecución si la plataforma y el kernel lo permiten.
nosmt=force Forzar la desactivación de SMT e impedir su reactivación en tiempo de ejecución.
omitted Utilizar los valores predeterminados del firmware y del kernel.

Compromiso o modo de fallo

Desactivar SMT reduce la capacidad de CPU lógicas y puede concentrar más trabajo en segundo plano en menos CPU de mantenimiento.

Verificar tras el arranque

cat /sys/devices/system/cpu/smt/control
cat /sys/devices/system/cpu/smt/active
lscpu -e=CPU,CORE,SOCKET,ONLINE
Enlace permanente

Parámetros: 6

Comportamiento del tick, aislamiento de CPU, ubicación de IRQ y RCU

El grupo principal de controles de latency: CPU full-dynticks, aislamiento de dominios del planificador, afinidad de mantenimiento, desfase de temporizadores y descarga de funciones de retorno de RCU.

nohz Supresión del tick en inactividad

Propósito

Controla el comportamiento de inactividad sin tick del kernel cuando este se compiló con la compatibilidad NO_HZ necesaria. El modo activado permite que las CPU inactivas detengan el tick periódico del planificador.

Valores y variantes

on Activar la inactividad sin tick cuando sea compatible.
off Desactivar la inactividad sin tick y mantener los ticks periódicos.
omitted Utilizar el valor predeterminado de la configuración del kernel.

Compromiso o modo de fallo

El parámetro no tiene efecto si el kernel en ejecución carece de la compatibilidad correspondiente en su compilación.

Verificar tras el arranque

grep -E "CONFIG_NO_HZ(_IDLE|_FULL)?=" /boot/config-$(uname -r) 2>/dev/null
cat /proc/cmdline
Enlace permanente
skew_tick Distribución de la fase del tick periódico por CPU

Propósito

Controla si la actividad del tick periódico se desfasa entre las CPU en lugar de activar todos los ticks de CPU en el mismo instante. Activar esta función puede reducir la contención de bloqueos y el ruido sincronizado en sistemas grandes.

Valores y variantes

0 No desfasar deliberadamente los ticks periódicos.
1 Distribuir las fases del tick entre las CPU.

Compromiso o modo de fallo

La contrapartida es un mayor consumo de energía, porque pueden reducirse las oportunidades de inactividad de todo el encapsulado.

Verificar tras el arranque

cat /proc/cmdline
trace-cmd record -e timer -e irq -e sched sleep 5 2>/dev/null || true
Enlace permanente
irqaffinity Máscara de afinidad de IRQ predeterminada

Propósito

Establece la lista de CPU predeterminada para las IRQ que no reciben una política de afinidad más específica. La máscara de CPU seleccionada determina dónde comienza el procesamiento de interrupciones que no tienen otra asignación.

Valores y variantes

irqaffinity=<cpu-list> CPU y rangos separados por comas, por ejemplo 0,4-7.
omitted Utilizar la máscara de afinidad predeterminada de la arquitectura/kernel.

Compromiso o modo de fallo

La CPU 0 puede convertirse en un cuello de botella. Las interrupciones MSI-X administradas pueden no respetar la máscara predeterminada de la misma forma que las IRQ ordinarias.

Verificar tras el arranque

cat /proc/irq/default_smp_affinity
grep -H . /proc/irq/*/smp_affinity_list 2>/dev/null | head -n 80
cat /proc/interrupts
Enlace permanente
isolcpus Aislamiento de dominios del planificador y de IRQ administradas

Propósito

Selecciona las CPU y los indicadores de aislamiento para excluirlas de los dominios del planificador, aplicar el comportamiento full-dynticks y evitar IRQ administradas. El aislamiento de dominios es una decisión de arranque irreversible hasta el siguiente reinicio.

Valores y variantes

isolcpus=<cpu-list> Forma heredada; el aislamiento de dominios está implícito.
isolcpus=domain,<cpu-list> Excluir las CPU de los dominios de balanceo de carga del planificador.
isolcpus=nohz,<cpu-list> Activar el comportamiento de aislamiento full-dynticks para las CPU.
isolcpus=managed_irq,<cpu-list> Exclusión en la medida de lo posible de las máscaras de IRQ administradas cuando hay CPU de mantenimiento disponibles.
combined flags Ejemplo: domain,nohz,managed_irq,2-15.

Compromiso o modo de fallo

El aislamiento no desplaza automáticamente los hilos del kernel, las colas de trabajo, las colas de dispositivos, los temporizadores ni los hilos de aplicaciones. Es un componente de un diseño completo de mantenimiento del sistema.

Verificar tras el arranque

cat /sys/devices/system/cpu/isolated
cat /sys/devices/system/cpu/nohz_full
taskset -pc $$
cat /proc/interrupts
Enlace permanente
nohz_full Conjunto de CPU full-dynticks

Propósito

Detiene el tick periódico del planificador en las CPU indicadas mientras ejecutan una carga de trabajo adecuada, lo que reduce las interrupciones recurrentes del kernel. Al menos una CPU de mantenimiento permanece fuera del conjunto; la CPU de arranque se excluye automáticamente.

Valores y variantes

nohz_full=<cpu-list> Seleccionar CPU full-dynticks, por ejemplo 2-15,18-31.
nohz_full=all Solicitar todas las CPU posibles; el kernel sigue conservando las CPU de mantenimiento necesarias.
omitted Sin CPU full-dynticks seleccionadas durante el arranque.

Compromiso o modo de fallo

Una CPU incluida en la lista puede seguir recibiendo interrupciones, trabajo de hilos del kernel, fallos de página, invalidaciones de TLB y llamadas entre CPU, a menos que esas rutas se controlen por separado.

Verificar tras el arranque

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
Enlace permanente
rcu_nocbs Descarga de funciones de retorno de RCU

Propósito

Desplaza la invocación de funciones de retorno de RCU de las CPU seleccionadas a kthreads dedicados. Un token sin valor no selecciona CPU durante el arranque; se necesita una lista explícita de CPU o un mecanismo de ejecución compatible.

Valores y variantes

rcu_nocbs=<cpu-list> Descargar las funciones de retorno de las CPU indicadas, por ejemplo rcu_nocbs=1-3.
rcu_nocbs with no argument Sin CPU seleccionadas durante el arranque; las CPU aptas pueden activarse o desactivarse más adelante mediante cpusets/interfaces de ejecución.
rcu_nocb_poll Hacer que los kthreads nocb sondeen en lugar de depender de activaciones; puede reducir la latency de activación a un costo energético considerable.
omitted Utilizar la ubicación normal de las funciones de retorno, salvo que los kernels actuales descargan automáticamente las CPU nohz_full.

Compromiso o modo de fallo

La descarga desplaza el trabajo; no lo elimina. Una capacidad insuficiente de las CPU de mantenimiento puede acumular funciones de retorno pendientes y provocar bloqueos en todo el sistema.

Verificar tras el arranque

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
Enlace permanente

Parámetros: 4

Clocksource, política de energía PCIe y soluciones para problemas de plataforma

Controles de gestión del tiempo y de plataforma que pueden afectar a la latency de activación, el trabajo periódico y la previsibilidad de las rutas de los dispositivos.

pcie_aspm.policy Política de PCI Express Active State Power Management

Propósito

Selecciona la política de PCIe Active State Power Management. Las políticas disponibles equilibran la latency de activación del enlace con el consumo de energía de la plataforma, según el control que el firmware y el kernel tengan de cada enlace.

Valores y variantes

default Utilizar la política del firmware/predeterminada.
performance Priorizar el rendimiento y desactivar ASPM/Clock PM bajo la política del kernel.
powersave Activar estados de ahorro de energía del enlace con una política equilibrada.
powersupersave Utilizar la política de ahorro de energía más agresiva disponible.

Compromiso o modo de fallo

El consumo de energía aumenta, y algunos enlaces controlados por el firmware pueden no seguir la política solicitada.

Verificar tras el arranque

cat /sys/module/pcie_aspm/parameters/policy 2>/dev/null
lspci -vv | grep -E "LnkCap:|LnkCtl:" | head -n 80
Enlace permanente
acpi_pad.disable Control de ACPI Processor Aggregator específico de la versión o del proveedor

Propósito

Controla una opción de ACPI Processor Aggregator específica del árbol del kernel destinada a evitar el trabajo de inyección de inactividad. El código upstream actual de acpi_pad puede no exponer este parámetro de módulo, por lo que debe verificarse la compatibilidad en el kernel y la distribución exactos.

Valores y variantes

acpi_pad.disable=1 Compatible únicamente con árboles del kernel que exponen este parámetro de módulo.
acpi_pad.disable=0 Activar/comportamiento predeterminado en árboles que implementan el parámetro.
driver/module blacklist policy Alternativa operativa portable cuando el driver es modular y se ha validado que no es necesario.

Compromiso o modo de fallo

Eliminar comportamientos de gestión de energía de la plataforma puede afectar a lo que espera el firmware. Valide en el modelo de servidor y la revisión de BIOS exactos.

Verificar tras el arranque

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
Enlace permanente
clocksource Selección de la fuente de tiempo del kernel

Propósito

Selecciona un clocksource del kernel por su nombre. En sistemas modernos con TSC invariable y sincronizado, TSC puede ofrecer un bajo costo de lectura y alta resolución, mientras que otras plataformas pueden requerir otra fuente validada.

Valores y variantes

clocksource=tsc Forzar TSC cuando el kernel lo considere disponible.
clocksource=hpet Utilizar HPET donde esté disponible; suele tener un mayor costo de lectura.
clocksource=acpi_pm Utilizar el temporizador ACPI PM donde esté disponible.
clocksource=kvm-clock, hyperv_clocksource, xen, or another listed source Opciones específicas del hipervisor o de la plataforma.
omitted Permitir que el kernel seleccione la fuente estable mejor valorada.

Compromiso o modo de fallo

No añada tsc=reliable simplemente para suprimir advertencias. Esta anulación independiente desactiva las comprobaciones de estabilidad y solo es apropiada cuando existe una garantía validada de la plataforma.

Verificar tras el arranque

cat /sys/devices/system/clocksource/clocksource0/current_clocksource
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
dmesg | grep -Ei "clocksource|tsc"
Enlace permanente
no_timer_check Solución alternativa de x86 para la comprobación de la fuente de IRQ del temporizador

Propósito

Desactiva una comprobación durante el arranque destinada a detectar un enrutamiento defectuoso de interrupciones del temporizador. Es una solución de compatibilidad para entornos de hardware o máquinas virtuales específicos, no una optimización general de latency.

Valores y variantes

no_timer_check Omitir la comprobación del enrutamiento del temporizador.
omitted Ejecutar las comprobaciones normales de temporizadores del kernel.

Compromiso o modo de fallo

Suprimir un diagnóstico puede ocultar un problema de enrutamiento del temporizador de la plataforma que más adelante se manifieste como ticks perdidos o inestabilidad en la gestión del tiempo.

Verificar tras el arranque

cat /proc/cmdline
dmesg | grep -Ei "timer.*check|timer.*irq|APIC timer"
Enlace permanente

Parámetros: 9

Seguridad, auditoría, watchdogs y comprobaciones de máquina

Opciones de gran impacto que reducen la sobrecarga a costa de la seguridad o del diagnóstico de fallos. Requieren una decisión explícita sobre el riesgo en producción.

selinux Inicialización de SELinux

Propósito

Controla si SELinux se inicializa y qué modo de política se utiliza durante el arranque. Desactivar la inicialización elimina la aplicación de políticas y los puntos de auditoría de SELinux del sistema activo.

Valores y variantes

selinux=0 Desactivar SELinux durante el arranque.
selinux=1 or omitted Permitir la inicialización de SELinux cuando esté compilado y configurado.
enforcing=0 Alternativa relacionada: inicializar SELinux en modo permisivo para registrar las denegaciones sin aplicarlas.
enforcing=1 Comenzar a aplicar las restricciones cuando la política lo admita.

Compromiso o modo de fallo

selinux=0 es una decisión de seguridad, no un requisito genérico de HFT. Su reactivación normalmente requiere un reinicio y puede exigir volver a etiquetar el sistema de archivos.

Verificar tras el arranque

getenforce 2>/dev/null || true
sestatus 2>/dev/null || true
cat /sys/fs/selinux/enforce 2>/dev/null || true
Enlace permanente
nosoftlockup Detector de soft-lockup

Propósito

Desactiva el watchdog que informa de las CPU que pasan demasiado tiempo sin planificar el hilo del watchdog.

Valores y variantes

nosoftlockup Desactivar la detección de soft-lockup.
omitted Utilizar la política de watchdog configurada.
watchdog_thresh=<seconds> Ajuste relacionado: cambiar el umbral de detección de bloqueos en lugar de desactivarla.

Compromiso o modo de fallo

Sin el detector, una CPU bloqueada puede permanecer inadvertida hasta que actúe una comprobación de estado externa o un watchdog de hardware.

Verificar tras el arranque

cat /proc/sys/kernel/watchdog 2>/dev/null
cat /proc/sys/kernel/soft_watchdog 2>/dev/null || true
dmesg | grep -i watchdog
Enlace permanente
mitigations Política de mitigación de vulnerabilidades de CPU

Propósito

Selecciona una política de mitigación de vulnerabilidades de CPU. Los modos disponibles equilibran la sobrecarga del cambio de contexto y del control de especulación con la protección frente a las vulnerabilidades de hardware aplicables.

Valores y variantes

off Desactivar todas las mitigaciones opcionales.
auto Activar las mitigaciones según el estado de vulnerabilidad de la CPU y los valores predeterminados del kernel.
auto,nosmt Mitigaciones automáticas más desactivación de SMT cuando sea necesario.
omitted Utilizar la política compilada/predeterminada.

Compromiso o modo de fallo

Esto puede exponer datos del kernel, de procesos, de máquinas virtuales y entre hilos, según la CPU. La mejora de latency depende del hardware y de la carga de trabajo.

Verificar tras el arranque

grep . /sys/devices/system/cpu/vulnerabilities/*
cat /proc/cmdline
dmesg | grep -i mitigation
Enlace permanente
audit Estado inicial del subsistema de auditoría de Linux

Propósito

Controla si el subsistema de auditoría del kernel se activa durante el arranque. El estado seleccionado afecta a la sobrecarga de generación de eventos y a las pruebas disponibles para seguridad, cumplimiento normativo y respuesta a incidentes.

Valores y variantes

audit=0 or audit=off Desactivar la auditoría para este arranque; no puede activarse por completo después sin reiniciar.
audit=1 or audit=on Activar la auditoría durante el arranque.
omitted Utilizar el valor predeterminado configurado del kernel o de la distribución.

Compromiso o modo de fallo

Desactivar la auditoría puede incumplir requisitos normativos, de respuesta a incidentes y de análisis forense.

Verificar tras el arranque

auditctl -s 2>/dev/null || true
cat /proc/cmdline
dmesg | grep -i "audit.*enabled"
Enlace permanente
mce Gestión de comprobaciones de máquina en x86

Propósito

Controla la gestión de x86 Machine Check Exception y el comportamiento de recuperación relacionado. Desactivarla elimina los informes asíncronos de errores de hardware, así como la telemetría crítica para fallos de CPU, memoria e interconexión.

Valores y variantes

off Desactivar la gestión de comprobaciones de máquina.
no_cmci Desactivar la gestión de interrupciones por errores corregidos y utilizar sondeo cuando sea compatible.
dont_log_ce No registrar errores corregidos.
ignore_ce Ignorar errores corregidos.
no_lmce Desactivar la compatibilidad con Local Machine Check Exception.
bootlog or nobootlog Controlar el registro de comprobaciones de máquina detectadas durante el arranque en kernels compatibles.
omitted Utilizar la gestión normal de comprobaciones de máquina.

Compromiso o modo de fallo

Desactivar MCE puede convertir un componente en deterioro diagnosticable en corrupción silenciosa de datos, reinicios inexplicables o picos de latency imposibles de rastrear.

Verificar tras el arranque

dmesg | grep -Ei "mce|machine check|hardware error"
ls /sys/devices/system/machinecheck 2>/dev/null || true
systemctl status rasdaemon 2>/dev/null || true
Enlace permanente
nomce Opción heredada de comprobación de máquina en x86-32

Propósito

Desactiva la compatibilidad con Machine Check Exception en kernels x86 de 32 bits. No es el control normal de x86-64 y puede resultar redundante cuando ya se ha seleccionado otra política de comprobación de máquina.

Valores y variantes

nomce Desactivar MCE en compilaciones x86 de 32 bits compatibles.
omitted Utilizar la política normal de la arquitectura.

Compromiso o modo de fallo

Mantener tokens redundantes o no aplicables a la arquitectura dificulta la auditoría de la configuración de arranque y puede ocultar supuestos incorrectos.

Verificar tras el arranque

uname -m
cat /proc/cmdline
dmesg | grep -Ei "mce|machine check"
Enlace permanente
norandmaps Aleatorización del espacio de direcciones del espacio de usuario

Propósito

Desactiva ASLR en el espacio de usuario, lo que equivale a establecer kernel.randomize_va_space=0. Las direcciones virtuales se vuelven más repetibles, pero la resistencia frente a la explotación se reduce de forma significativa.

Valores y variantes

norandmaps Desactivar la aleatorización del espacio de direcciones del espacio de usuario.
omitted Utilizar la política ASLR de sysctl/predeterminada.
kernel.randomize_va_space=0, 1, or 2 Política de ejecución/sysctl: desactivada, aleatorización conservadora o aleatorización completa.

Compromiso o modo de fallo

Esto debilita la defensa frente a la explotación de corrupción de memoria en todo el host.

Verificar tras el arranque

sysctl kernel.randomize_va_space
cat /proc/cmdline
Enlace permanente
nowatchdog Opción principal de watchdogs de bloqueo del kernel

Propósito

Desactiva los watchdogs de hard-lockup y de soft-lockup. Por ello, las opciones independientes que desactivan watchdogs específicos pueden resultar redundantes cuando este indicador está presente.

Valores y variantes

nowatchdog Desactivar los watchdogs de bloqueo del kernel.
omitted Utilizar la política de watchdog configurada.
watchdog_thresh=<seconds> Alternativa relacionada: mantener la detección, pero aumentar el umbral.

Compromiso o modo de fallo

Un hard-lockup o soft-lockup puede persistir sin que el kernel lo comunique. Asegúrese de mantener otro mecanismo independiente para comprobar que el sistema sigue activo.

Verificar tras el arranque

cat /proc/sys/kernel/watchdog 2>/dev/null
cat /proc/sys/kernel/nmi_watchdog 2>/dev/null
dmesg | grep -i watchdog
Enlace permanente
nmi_watchdog Watchdog NMI de hard-lockup

Propósito

Controla el detector de hard-lockup basado en NMI y, en sistemas x86 compatibles, su actividad periódica de contadores de rendimiento.

Valores y variantes

0 Desactivar el watchdog NMI.
1 Activar el watchdog NMI cuando sea compatible.
omitted Utilizar el valor predeterminado del kernel o de la distribución.

Compromiso o modo de fallo

Desactivarlo elimina una señal importante de las CPU que dejan de procesar interrupciones normales.

Verificar tras el arranque

cat /proc/sys/kernel/nmi_watchdog
dmesg | grep -i "NMI watchdog"
Enlace permanente

Parámetros: 3

Comportamiento de NUMA e IOMMU

Controla la migración automática de páginas y la política de traducción DMA para mantener una localidad estable y rutas de dispositivos predecibles.

numa_balancing Migración automática de páginas NUMA

Propósito

Controla el balanceo NUMA automático, que muestrea el acceso a memoria protegiendo páginas periódicamente y puede migrar tareas o páginas. El estado elegido equilibra la corrección automática de localidad con el ruido de fallos de página y migraciones.

Valores y variantes

disable Desactivar el balanceo NUMA automático.
enable Activar el balanceo NUMA automático.
omitted Utilizar el valor predeterminado del kernel o de la distribución.

Compromiso o modo de fallo

Con el balanceo automático desactivado, una mala ubicación de la aplicación seguirá siendo mala. Vincule explícitamente la memoria y valide los contadores de acceso remoto.

Verificar tras el arranque

sysctl kernel.numa_balancing
numactl --hardware
numastat -p $$ 2>/dev/null || true
Enlace permanente
intel_iommu Inicialización de Intel DMAR/IOMMU

Propósito

Controla la inicialización de Intel IOMMU y las capacidades relacionadas de remapeo DMA o de interrupciones, según la compatibilidad del hardware y del firmware.

Valores y variantes

on Activar el driver Intel IOMMU.
off Desactivarlo.
igfx_off Omitir la unidad DMAR de gráficos integrados.
sp_off Desactivar la compatibilidad con superpáginas de IOMMU.
sm_on or sm_off Permitir o impedir el modo escalable de Intel.
strict Solicitud obsoleta específica del driver equivalente a iommu.strict=1.
tboot_noforce No permitir que tboot fuerce la activación de IOMMU; reduce la protección frente a ataques DMA.

Compromiso o modo de fallo

Los defectos del firmware y la política de traducción pueden afectar a la latency o a la estabilidad del dispositivo. Valide cada generación de servidor/BIOS.

Verificar tras el arranque

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
Enlace permanente
iommu Política predeterminada de passthrough DMA

Propósito

Selecciona la política de dominios IOMMU predeterminada para dispositivos ordinarios. El passthrough o el mapeo de identidad pueden reducir la sobrecarga de traducción DMA para dispositivos de confianza, mientras que los dominios traducidos proporcionan un aislamiento más sólido.

Valores y variantes

iommu=pt Utilizar el modo passthrough de forma predeterminada.
iommu=nopt Utilizar el modo DMA traducido de forma predeterminada.
iommu.passthrough=1 Control explícito moderno de passthrough.
iommu.passthrough=0 Utilizar la traducción IOMMU de forma predeterminada.
iommu.strict=0 or 1 Política relacionada de invalidación en modo traducido: diferida o estricta.
iommu=off, force, noforce, soft, merge, nomerge Controles generales específicos de la arquitectura; no son sinónimos directos de passthrough.

Compromiso o modo de fallo

El passthrough debilita el aislamiento DMA. Un dispositivo defectuoso o comprometido puede acceder a la memoria del host fuera de sus búferes previstos.

Verificar tras el arranque

dmesg | grep -Ei "IOMMU.*(passthrough|Default domain)|DMAR"
find /sys/kernel/iommu_groups -maxdepth 2 -type l 2>/dev/null | head -n 40
Enlace permanente

Parámetros: 3

Nombres de red y política de recuperación de NVMe

Comportamiento de asignación de nombres de NIC en el espacio de usuario y ajustes de tiempo de espera y reintentos de almacenamiento que determinan la rapidez con la que se hacen visibles los fallos.

net.ifnames Política de nombres de interfaz predecibles de systemd/udev

Propósito

Controla la asignación de nombres de interfaz predecibles en systemd/udev. Desactivarla puede restaurar nombres heredados como eth0 cuando la distribución lo permite; es una convención del espacio de usuario que se pasa en la línea de comandos del kernel, no un control de latency de red.

Valores y variantes

0 Desactivar NamePolicy predecible.
1 or omitted Permitir nombres predecibles según el esquema de nombres activo de systemd y la política .link.

Compromiso o modo de fallo

El orden heredado ethX puede cambiar cuando cambian el hardware, el firmware o el orden de detección. Una identidad de interfaz incorrecta es más peligrosa que cualquier preferencia de nombres.

Verificar tras el arranque

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
Enlace permanente
nvme_core.io_timeout Tiempo de espera de comandos de E/S NVMe en segundos

Propósito

Establece el valor de entrada del tiempo de espera de E/S NVMe en segundos. El código upstream actual almacena el parámetro del módulo como un entero sin signo con un valor predeterminado de 30 y, después, lo convierte al tiempo de espera de la capa de bloques en jiffies; por lo tanto, el tiempo de espera efectivo de la cola debe verificarse tras el arranque.

Valores y variantes

30 Valor predeterminado upstream actual en segundos; verifique el kernel de destino.
a finite positive integer Tiempo de espera explícito en segundos.
4294967295 Valor máximo de entrada sin signo de 32 bits, no un token de infinito. La expresión del driver nvme_io_timeout * HZ puede desbordarse antes de convertirse en el tiempo de espera efectivo de la solicitud; en un kernel de 1000 Hz este valor puede resultar en unos 49.7 días en lugar de 136 años.

Compromiso o modo de fallo

Un tiempo de espera muy grande o desbordado puede dejar la E/S bloqueada durante un período inesperado y retrasar el restablecimiento, la conmutación por error o la recuperación de la aplicación. Considere el valor observado en /sys/block/<device>/queue/io_timeout como el comportamiento efectivo garantizado.

Verificar tras el arranque

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
Enlace permanente
nvme_core.max_retries Número máximo de reintentos de comandos NVMe

Propósito

Establece el número máximo de reintentos para los comandos NVMe aptos. El código upstream actual lo almacena como un byte sin signo y utiliza 5 de forma predeterminada.

Valores y variantes

0 No reintentar los comandos aptos.
1–255 Número máximo de reintentos; 10 duplica el valor predeterminado upstream actual.
omitted Utilizar el valor predeterminado del kernel.

Compromiso o modo de fallo

Más reintentos pueden prolongar la tail latency y retrasar la conmutación por error. Menos reintentos pueden hacer visibles antes los errores transitorios del medio o del transporte.

Verificar tras el arranque

cat /sys/module/nvme_core/parameters/max_retries
dmesg | grep -Ei "nvme.*(retry|timeout|reset)"
Enlace permanente

Cómo se diseñan los perfiles

Cinco capas que sustentan un perfil exacto de arranque para producción

Un perfil fácil de mantener separa las opciones invariables de la plataforma de las listas de CPU específicas de la topología y de las anulaciones de seguridad de alto riesgo. HFTKernel evalúa estas capas conjuntamente y entrega una configuración revisable, comprobable y reversible.

01
Arranque y recuperación

Dispositivo raíz, modo de montaje inicial, consola serie y reserva de kdump probada.

02
Determinismo de la plataforma

Driver de inactividad, política de frecuencia, PCIe ASPM, clocksource, NUMA y política IOMMU.

03
Topología

CPU de mantenimiento, CPU full-dynticks, descarga de RCU, máscara de IRQ predeterminada, afinidad de colas y cpusets de aplicaciones.

04
Aplicación de políticas en tiempo de ejecución

Máscaras de colas de trabajo, afinidad de hilos del kernel, política EPB/governor, colas de NIC, vinculación de memoria y CPU affinity de servicios.

05
Controles de riesgo

Mitigaciones de seguridad, LSM, auditoría, ASLR, watchdog y política de comprobación de máquina revisados de forma independiente.

Verificación tras el arranque

Confirme el estado efectivo antes de medir la latency

La línea de comandos es solo una entrada. Esta lista de comprobación confirma el kernel en ejecución, la topología de CPU, el conjunto full-dynticks, la ubicación de IRQ, el clocksource, la política de energía, IOMMU, el estado de seguridad y la política de recuperación de NVMe.

Secuencia de verificación de solo lectura
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