Capítulo 3. Cambios importantes en los parámetros externos del núcleo

Este capítulo proporciona a los administradores de sistemas un resumen de los cambios significativos en el kernel que se entrega con Red Hat Enterprise Linux 8.1. Estos cambios incluyen entradas proc añadidas o actualizadas, valores por defecto de sysctl y sysfs, parámetros de arranque, opciones de configuración del kernel o cualquier cambio de comportamiento notable.

Nuevos parámetros del núcleo

perf_v4_pmi = [X86,INTEL]

Este parámetro desactiva la función de congelación del contador de la Intel PMU.

La función sólo existe a partir de Arch Perfmon v4 (Skylake y más recientes).

Formato

hv_nopvspin [X86,HYPER_V]
Este parámetro deshabilita las optimizaciones de spinlock paravirtual que permiten al hipervisor "ralentizar" al huésped en la contención de bloqueos.
ipcmni_extend [KNL]
Este parámetro amplía el número máximo de identificadores únicos de System V IPC de 32.768 a 16.777.216.
kpti = [ARM64]

Este parámetro controla el aislamiento de la tabla de páginas de los espacios de direcciones del usuario y del núcleo.

Las opciones son:

  • Por defecto: activado en los núcleos que necesitan mitigación.
  • 0: fuerza desactivada
  • 1: fuerza activada
mds = [X86,INTEL]

Este parámetro controla la mitigación de la vulnerabilidad MDS (Micro-architectural Data Sampling).

Algunas CPUs son vulnerables a un exploit contra los búferes internos de la CPU que pueden reenviar información a un gadget de divulgación bajo ciertas condiciones. En los procesadores vulnerables, los datos reenviados especulativamente pueden utilizarse en un ataque de canal lateral de caché, para acceder a datos a los que el atacante no tiene acceso directo.

Las opciones son:

  • completo - Habilitar la mitigación de MDS en las CPUs vulnerables.
  • full,nosmt - Activa la mitigación MDS y desactiva el Multi Threading Simultáneo (SMT) en las CPUs vulnerables.
  • off - Desactivar incondicionalmente la mitigación MDS.

    No especificar este parámetro equivale a mds=full.

    Para más detalles, consulte la documentación del kernel.

mitigaciones = [X86,PPC,S390,ARM64]

Este parámetro controla las mitigaciones opcionales para las vulnerabilidades de la CPU. Se trata de un conjunto de opciones curadas e independientes del arco, cada una de las cuales es una agregación de las opciones específicas del arco existentes.

Las opciones son:

  • off - Desactivar todas las mitigaciones opcionales de la CPU. Esto mejora el rendimiento del sistema, pero también puede exponer a los usuarios a varias vulnerabilidades de la CPU.

    Equivalente a:

    • nopti [X86,PPC]
    • kpti=0 [ARM64]
    • nospectre_v1 [X86,PPC]
    • nobp=0 [S390]
    • nospectre_v2 [X86,PPC,S390,ARM64]
    • spectre_v2_user=off [X86]
    • spec_store_bypass_disable=off [X86,PPC]
    • ssbd=force-off [ARM64]
    • l1tf=off [X86]
    • mds=off [X86]
  • auto (por defecto) - Mitiga todas las vulnerabilidades de la CPU, pero deja habilitado el Multihilo Simultáneo (SMT), incluso si es vulnerable. Esta opción es para los usuarios que no quieren ser sorprendidos por la desactivación de SMT en las actualizaciones del kernel, o que tienen otras formas de evitar los ataques basados en SMT.

    Equivalente a:

    • (comportamiento por defecto)
  • auto,nosmt - Mitiga todas las vulnerabilidades de la CPU, deshabilitando el Multihilo Simultáneo (SMT) si es necesario. Esta opción es para los usuarios que siempre quieren estar completamente mitigados, incluso si significa perder SMT.

    Equivalente a:

    • l1tf=flush,nosmt [X86]
    • mds=full,nosmt [X86]
novmcoredd [KNL,KDUMP]

Este parámetro desactiva el volcado del dispositivo.

El volcado de dispositivos permite a los controladores anexar datos de volcado a vmcore para poder recopilar la información de depuración especificada por el controlador. Los controladores pueden anexar los datos sin ningún límite y estos datos se almacenan en la memoria, por lo que esto puede causar un estrés significativo en la memoria.

Desactivar el volcado de dispositivos puede ayudar a ahorrar memoria, pero los datos de depuración del controlador dejarán de estar disponibles.

Este parámetro sólo está disponible cuando se establece la configuración del kernel CONFIG_PROC_VMCORE_DEVICE_DUMP.

nospectre_v1 [X86]

Este parámetro desactiva la mitigación de la variante 1 de Spectre (derivación de la comprobación de límites).

Con esta opción, es posible que haya fugas de datos en el sistema.

psi = [KNL]

Este parámetro habilita o deshabilita el seguimiento de la información de pérdida de presión.

Formato

random.trust_cpu={on,off} [KNL]
Este parámetro habilita o deshabilita la confianza en el uso del generador de números aleatorios de la CPU (si está disponible) para sembrar completamente el generador criptográfico de números aleatorios (CRNG) del kernel. El valor por defecto es controlado por la configuración del kernel CONFIG_RANDOM_TRUST_CPU.
vm_debug[=opciones] [KNL]

Disponible con CONFIG_DEBUG_VM=y.

La activación de este parámetro puede ralentizar la velocidad de arranque del sistema, especialmente en sistemas con gran cantidad de memoria.

Todas las opciones están activadas por defecto, y esta interfaz está pensada para permitir la activación o desactivación selectiva de funciones específicas de depuración de la memoria virtual.

Las opciones son:

  • P - Habilitar el envenenamiento del tiempo de init de la estructura de la página.
  • - (guión) - Desactivar todas las opciones anteriores.

Parámetros del núcleo actualizados

cgroup_no_v1 = [KNL]

Este parámetro desactiva los controladores cgroup y las jerarquías con nombre en la versión 1 (v1).

The parameter is like the cgroup_disable kernel parameter, but only applies to cgroup v1. The blacklisted controllers remain available in cgroup2. The "all" option blacklists all controllers and the "named" option disables the named mounts. Specifying both "all" and "named" disables all v1 hierarchies.

Format: { { controller | "all" | "named" } [,{ controller | "all" | "named" }…​] }

crashkernel = size[KMG][@offset[KMG]][KNL]

The kexec system call allows Linux to switch to a 'crash kernel' upon panic. This parameter reserves the physical memory region [offset, offset + size] for that kernel image. If @offset is omitted, then a suitable offset is selected automatically.

[KNL, x86_64] select a region under 4G first, and fall back to reserve region above 4G when @offset has not been specified.

For more information, see the upstream kdump documentation.

l1tf = [X86]

Este parámetro controla la mitigación de la vulnerabilidad L1 Terminal Fault (L1TF) en las CPUs afectadas.

Las opciones son:

  • off - Desactiva las mitigaciones del hipervisor y no emite ninguna advertencia. También elimina la restricción del tamaño de la swap y del límite de RAM disponible tanto en el hipervisor como en el bare metal.
  • flush - Es el valor por defecto.

    Para más detalles, consulte la documentación del kernel.

nospectre_v2 [X86,PPC_FSL_BOOK3E,ARM64]

Este parámetro desactiva todas las mitigaciones de la vulnerabilidad Spectre variante 2 (predicción indirecta de bifurcaciones).

El sistema puede permitir la fuga de datos con este parámetro.

pci=opción[,opción...] [PCI]

Varias opciones del subsistema PCI.

Las opciones son:

  • force_floating [S390] - Forzar el uso de interrupciones flotantes.
  • nomio [S390] - No utilizar instrucciones de entrada/salida de memoria (MIO).

Nuevos parámetros de /proc/sys/kernel

hyperv_record_panic_msg

Este parámetro controla si los datos del mensaje de pánico del kernel (kmsg) se reportan a Hyper-V o no.

Los valores son:

  • 0 - No informar de los datos de kmsg de pánico.
  • 1 - Informar de los datos del kmsg de pánico. Este es el comportamiento por defecto.

Nuevos parámetros de /proc/sys/net

bpf_jit_limit

Este parámetro impone un límite global para las asignaciones de memoria al compilador de Berkeley Packet Filter Just-in-Time (BPF JIT) con el fin de rechazar las solicitudes JIT no privilegiadas una vez superado.

El parámetro bpf_jit_limit contiene el valor del límite global en bytes.

Parámetros actualizados de /proc/sys/fs

estado de la dentadura

Las dentaduras se asignan y desasignan dinámicamente.

El usuario puede recuperar los siguientes valores a partir de la lectura del archivo /proc/sys/fs/dentry-state:

  • nr_dentry - Muestra el número total de dentrías asignadas (activas no utilizadas).
  • nr_unused - Muestra el número de dentrías que no se utilizan activamente, pero que se guardan en la lista de las menos utilizadas (LRU) para su futura reutilización.
  • age_limit - Muestra la edad en segundos después de la cual las entradas de dcache pueden ser recuperadas cuando la memoria es corta.
  • want_pages - Es distinto de cero cuando se ha llamado a la función shrink_dcache_pages() y la caché no se ha podado todavía.
  • nr_negativo - Muestra el número de dentrías no utilizadas que también son dentrías negativas que no se asignan a ningún archivo. En cambio, ayudan a acelerar el rechazo de archivos inexistentes proporcionados por los usuarios.

Parámetros actualizados de /proc/sys/kernel

msg_next_id, sem_next_id y shm_next_id

Notas:

  1. El kernel no garantiza que el nuevo objeto tenga el ID deseado. Depende del espacio de usuario, cómo manejar un objeto con el ID "incorrecto".
  2. El kernel devolverá a -1 el valor no predeterminado después de la asignación exitosa de objetos de comunicación entre procesos (IPC). Si la llamada al sistema de asignación de objetos IPC falla, no está definido si el valor permanece sin modificar o se restablece a -1.