La capacidad del kernel en tiempo real existe desde hace más de una década en el ecosistema de código abierto. De manera similar, el soporte de Red Hat Enterprise Linux (RHEL) para el kernel en tiempo real ha estado disponible durante varios años. Aún así, muchos administradores de sistemas malinterpretan sus conceptos básicos y el comportamiento operativo real. En este artículo, describo algunas de sus funciones clave, las diferencias con el kernel estándar y los pasos rápidos de instalación.
Inicialmente, Red Hat introdujo un producto llamado "Red Hat Enterprise MRG", donde MRG significa Mensajería, Tiempo real y Grid. MRG 2 se basó en las versiones RHEL 5 y RHEL 6, mientras que MRG 3 se basó completamente en RHEL 6. A partir de RHEL 7, el producto MRG quedó obsoleto y "RHEL for Real-Time" se introdujo como un producto independiente.
¿Qué es el núcleo en tiempo real?
Un kernel en tiempo real no es necesariamente superior o mejor que un kernel estándar. En cambio, cumple con diferentes requisitos comerciales o del sistema. Es un núcleo optimizado diseñado para mantener una latencia baja, un tiempo de respuesta constante y determinismo. A modo de comparación, un kernel RHEL estándar se centra en las operaciones orientadas al rendimiento y la programación justa de tareas. El kernel en tiempo real también se conoce como kernel-rt
o preempt-rt
.
La forma más sencilla de identificar un kernel en tiempo real es ejecutar uname -r
comando en la terminal y luego busque el rt palabra clave en la versión del kernel. Si rt falta, entonces el sistema usa el núcleo estándar.
El siguiente resultado es un ejemplo:
#uname -r
3.10.0-1127.10.1.rt56.1106.el7
Algunos kernel-rt
importantes Los mecanismos incluyen:
- La prioridad de una tarea se verifica (1-99) bajo carga pesada.
- Las tareas de alta prioridad (99) tienen preferencia para la ejecución de la CPU.
- No utiliza la política de programación completamente justa (CFS).
- Las políticas de programación en uso son SCHED_FIFO o SCHED_RR.
- Mantiene un tiempo de ejecución de baja latencia.
- Ofrece la oportunidad de medir, registrar y configurar el tiempo de respuesta.
Para comprender mejor cómo kernel-rt
es diferente de un kernel estándar, el siguiente diagrama explica cómo usar kernel-rt
mantiene baja latencia y tiempos de respuesta en el sistema.
En el diagrama anterior, azul las gráficas representan el tiempo de respuesta (ms) en un kernel RHEL7 estándar sintonizado, mientras que verde los puntos representan el tiempo de respuesta (ms) en un RHEL7 kernel-rt
ajustado . La sección verde muestra consistencia, baja latencia y bajo tiempo de respuesta. Para estudiar este gráfico y las pruebas relacionadas con más detalle, consulte la guía oficial de Red Hat "Por qué usar Red Hat Enterprise Linux en tiempo real para optimizar la latencia".
A continuación, he enumerado algunas otras diferencias vitales para comparar RHEL para tiempo real con RHEL estándar:
- Kexec y vmcore:la instalación y la configuración son las mismas que las de RHEL estándar.
- Módulos de terceros:todos los módulos se deben volver a compilar con
kernel-rt
antes de ser utilizado. irqbalance
demonio - Deshabilitado por defecto.- Política de programación:solo se utiliza SCHED_FIFO o SCHED_RR.
- Interrupción (IRQ):utiliza CPU dedicadas para aislar los procesos entre sí.
Instale RHEL en tiempo real
Realicemos una instalación rápida y observemos los otros paquetes que forman parte de un kernel-rt
instalación. Una imagen ISO separada de kernel-rt
está disponible para aprovisionamiento fresco. Un usuario/administrador también puede instalar el kernel-rt
Paquete RPM en un sistema RHEL estándar existente, seguido de un reinicio.
rhel-7-server-rt
repositorio para obtener kernel-rt
paquetes.
Paso 2 :Realice una instalación grupal para instalar todos los paquetes específicos de RT simultáneamente.
Paso 3 :Verificar todos los paquetes dependientes.
Paso 4 :reinicie el sistema y luego seleccione kernel-rt
desde la consola de arranque.
Los usuarios deben realizar la instalación del grupo RT, ya que proporciona todo el kernel-rt
necesario paquetes dependientes. La siguiente tabla muestra breves detalles del paquete dependiente:
- kernel-rt - Kernel en tiempo real
- rt-setup:el paquete más crítico para la configuración del entorno RT.
- rtctl:configura las prioridades de programación para el subproceso del núcleo.
- rt-test, rt-checks, rteval:se utilizan para probar las capacidades y cargas del sistema.
Permítanme darles un escenario real muy breve que ilustra por qué la instalación del grupo RT es crucial. Uno de los principales clientes de telecomunicaciones estaba ejecutando el kernel RHEL en tiempo real (3.10.0-693.11.1.rt56.632.el7) como un entorno de clúster de tres hojas en la máquina HP ProLiant BL460c Gen9. Observaron retrasos en el tráfico y tiempos de espera en el entorno del clúster. Faltaba o se descartaba una gran cantidad de paquetes UDP self-heartbeat (HB). Observamos que no hubo problemas con las tarjetas de red o los módulos de clúster una vez que analizamos pcap
y strace
paquetes Un diagnóstico posterior mostró que rt-setup
faltaba el paquete porque kernel-rt
se instaló a la fuerza sin ninguno de sus paquetes dependientes.
Medio ambiente | HB perdidas en 7 días | HB perdidos en 7 días con rt-setup |
---|---|---|
hostname-a12 | 138 | 0 |
hostname-a13 | 113 | 0 |
hostname-a14 | 118 | 5 |