Capítulo 9. Kernel
Los parámetros de kernel SHMMAX y SHMALL retornaban valores predeterminados
Anteriormente, los valores de los parámetros
kernel.shmmax
y kernel.shmall
, los cuales se establecían en el archivo /usr/lib/sysctl.d/00-system.conf
, eran demasiado bajos. Como consecuencia, algunas aplicaciones, tales como SAP, no podían funcionar adecuadamente. Los valores inapropiados se han retirado y ahora se utilizan los predeterminados del kernel, los cuales son lo suficientemente altos.
Las páginas gigantes transparentes ya no corrompen la memoria
Las páginas gigantes transparentes no se sincronizaban correctamente durante las operaciones de lectura y escritura. En algunas circunstancias, la memoria se dañaba cuando se habilitaban las páginas gigantes transparentes. Se han agregado barreras de memoria al manejo de las páginas gigantes transparentes de memoria para que esta corrupción de memoria ya no se presente.
Rebase de SCSI LIO
El destino de kernel SCSI, LIO, ha sido rebasado desde Linux-4.0.stable. Esto no solamente incluye muchas correcciones de errores, las más importantes para iSER, sino también soporte agregado para comandos XCOPY, WRITE SAME, y ATS; y soporte de integridad de datos, DIF.
makedumpfile ahora soporta el nuevo formato sadump que representa hasta 16 TB de memoria física
El comando makedumpfile ahora es compatible con el nuevo formato sadump que representa más de 16 TB de espacio de memoria física. Permite que los usuarios de makedumpfile leer los archivos de volcado mayores de 16 TB, generados por sadump en próximos modelos de servidor .
El retiro o actualización de kernel ya no muestra una advertencia
El script weak-modules, el cual es utilizado por
kmod
para administrar enlaces simbólicos de módulo kABI-compatible, retiraba el directorio /lib/modules/<version>/weak-updates
cuando retiraba los archivos asociados al kernel. Este directorio pertenece al paquete kernel y el retiro ocasionaba inconsistencias entre el sistema de archivos y el estado esperado por rpm
. Esto producía una advertencia cada vez que se actualizaba o retiraba el kernel.
El script ha sido actualizado para retirar el contenido del directorio
weak-updates
, pero abandona al directorio mismo, y ya las advertencias no aparecen.
Nuevo paquete: libevdev
Libevdev es una biblioteca de nivel bajo para la interfaz de dispositivo de eventos de entrada del kernel Linux. Esto proporciona interfaces seguras para funcionalidades y eventos de procesos desde dispositivos. Las versiones actuales de xorg-x11-drv-evdev y xorg-x11-drv-synaptics requieren que esta biblioteca como dependencia.
Tuned ahora puede ejecutarse en modo no-daemon
Anteriormente, Tuned podía ejecutarse como demonio, lo cual podía afectar el rendimiento de sistemas pequeños debido a la huella digital de memoria del demonio Tuned. Gracias a esta actualización, el modo no-daemon (one shot), el cual no requiere ningún residente en memoria, ha sido agregado en Tuned. El modo no-daemon es inhabilitado de forma predeterminada porque en este modo falta mucha funcionalidad de Tuned.
Nuevo paquete: tuned-profiles-realtime
El paquete tuned-profiles-realtime ha sido agregado a Red Hat Enterprise Linux Server y Red Hat Enterprise Linux para Real Time. Contiene un perfil realtime utilizado por la herramienta
tuned
para realizar aislamiento de CPU y ajuste IRQ. Cuando el perfil ha sido activado, lee una sección de variables, la cual especifica las CPU que deben ser aisladas y desplaza todos los hilos que puedan retirarse de esos núcleos de CPU.
Programación E/S de Multiqueue con blk-mq
Red Hat Enterprise Linux 7.2 incluye una nueva cola múltiple de mecanismo de programación E/S para dispositivos de bloques conocidos como blk-mq. Puede mejorar el rendimiento al permitir a algunos controladores asignar solicitudes de E/S a múltiples colas de hardware o software. El rendimiento mejorado surge de reducir la contención de bloqueo presente cuando los hilos múltiples de ejecución realizan E/S a un dispositivo individual. Los dispositivos más recientes, tales como Non-Volatile Memory Express (NVMe), se posicionan mejor para aprovechar esta funcionalidad debido a su soporte nativo para enviar múltiples colas de hardware y de colas de completado, y sus características de rendimiento de baja latencia. Las ganancias de rendimiento, como siempre, dependerán del hardware exacto y carga de trabajo.
La funcionalidad blk-mq se implementó actualmente y ahora se habilita de forma predeterminada, en los siguientes controladores: virtio-blk, mtip32xx, nvme, y rbd.
La funcionalidad relacionada, scsi-mq, le permite a los controladores de dispositivos SCSI ('Small Computer System Interface') el uso de la infraestructura blk-mq. La funcionalidad scsi-mq está provista como muestra previa de tecnología en Red Hat Enterprise Linux 7.2. Para habilitar scsi-mq, especifique
scsi_mod.use_blk_mq=y
en la línea de comandos de kernel. El valor predeterminado es n
(inhabilitado).
El destino multirrutas del mapeador de dispositivos (DM), el cual usa DM request-based, también puede configurarse para usar la infraestructura blk-mq si se especifica la opción de kernel
dm_mod.use_blk_mq=y
. El valor predeterminado es n
(inhabilitado).
Puede ser benéfico para establecer
dm_mod.use_blk_mq=y
si los dispositivos SCSI subyacentes también usan blk-mq, al hacerlo se reduce la carga de bloqueo en la capa DM.
Para determinar si las multirrutas DM están utilizando blk-mq en un sistema, ejecute el comando 'cat 'al archivo
/sys/block/dm-X/dm/use_blk_mq
, donde dm-X
se remplaza por el dispositivo multirrutas DM en cuestión. Este archivo es solamente de lectura y refleja el valor que había en /sys/module/dm_mod/parameters/use_blk_mq
en el momento que se creó el dispositivo multirrutas DM.
Los mensajes de error SCSI ahora pueden interpretarse sin ningún problema
Anteriormente los cambios de kernel a la función printk() producían mensajes de error en SCSI que se registraban en múltiples líneas. Como consecuencia, si se presentaban múltiples errores en diferentes dispositivos, se dificultaba la interpretación correcta de mensajes de errores. Esta actualización cambia el código de registro de errores SCSI para registrar los mensajes de error mediante la opción dev_printk(), la cual asocia cada mensaje de error con el dispositivo que generaba el error.
Los subsistemas y los controladores libATA han sido actualizados
Esta actualización de mejoras proporciona una gran cantidad de correcciones de errores de los subsistemas y controladores libATA.
FCoE y DCB han sido actualizados
Los componentes de kernel de Canal de fibra por Ethernet (FCoE) y Puente de centro de datos (DCB) han sido actualizados a las versiones más recientes de la corriente principal, lo cual proporciona una gran cantidad de correcciones en comparación con las versiones anteriores.
rebase de perf a la versión 4.1
Los paquetes perf han sido actualizados a la versión 4.1 de la corriente de desarrollo principal, lo cual proporciona un correcciones respecto a rendimiento y estabilidad en comparación con la versión anterior. En particular, este rebase agrega las funcionalidades de Intel Cache QoS Monitoring y AMD IBS Ops y proporciona soporte para Intel Xeon v4, para módulos de kernel comprimidos, para eventos parametrizados y soporte para especificar la longitud del punto de interrupción. Además, se han agregado una cantidad de opciones a la herramienta perf, tales como
--system-wide
, top -z
, top -w
, trace --filter-pids
y trace --event
.
Soporte para TPM 2.0
Esta actualización agrega soporte a nivel de dispositivos a la versión 2.0 en cumplimiento con los dispositivos de Módulo de Plataforma Confiable (TPM).
Turbostat ahora proporciona salida correcta
Anteriormente, la herramienta turbostat detecaba si el sistema tenía el soporte para dispositivo MSR al leer el archivo /dev/cpu/0/msr para
cpu0
en lugar del cpu
. Como consecuencia, al inhabilitar una CPU hacía que las CPU se borraran de la salida turbostat. Este error ha sido corregido y la ejecución del comando turbostat ls
ahora retorna la salida correcta.
Soporte para el procesador Intel Xeon v5
Esta mejora agrega soporte al procesador a la herramienta turbost.
La herramienta zswap hace uso de la API zpool
Anteriormente, la herramienta zswap usaba directamente zbud, un grupo de almacenamiento que guarda páginas comprimidas en una relación de 2:1 (cuando están llenas). Esta actualización introduce la API zpool, la cual provee acceso a grupos zbud o zsmalloc: zsmalloc almacena páginas comprimidas en una densidad en potencia más alta, lo cual requiere más memoria para páginas altamente comprimibles. En esta actualización, zsmalloc ha sido promovida a los controladores para que zpool funcione como se espera.
La longitud del archivo /proc/pid/cmdline ahora es ilimitada
La longitud del archivo /proc/pid/cmdline para el comando ps se fijaba a 4096 caracteres. Esta actualización garantiza que la longitud de /proc/pid/cmdline sea ilimitada, lo cual es muy útil, especialmente para procesos de listado con largos argumentos de línea de comandos.
Ahora se proporciona soporte para dma_rmb y dma_wmb
Esta actualización introduce actualizaciones a dos nuevos primitivos para sincronizar memoria coherente en caché de escritura y lectura, dma_wmb() y dma_rmb(). Esta funcionalidad estará disponible para uso apropiado de controladores.