La capacità del kernel in tempo reale esiste da più di un decennio nell'ecosistema open source. Allo stesso modo, il supporto di Red Hat Enterprise Linux (RHEL) per il kernel in tempo reale è disponibile da diversi anni. Tuttavia, molti amministratori di sistema interpretano erroneamente i suoi concetti fondamentali e il comportamento operativo effettivo. In questo articolo, descrivo alcune delle sue caratteristiche principali, differenze rispetto al kernel standard e passaggi di installazione rapida.
Inizialmente, Red Hat ha introdotto un prodotto chiamato "Red Hat Enterprise MRG", dove MRG stava per Messaging, Real-time e Grid. MRG 2 era basato sulle versioni RHEL 5 e RHEL 6, mentre MRG 3 era basato interamente su RHEL 6. Da RHEL 7 in poi, il prodotto MRG è stato deprecato e "RHEL for Real-Time" è stato introdotto come prodotto separato.
Qual è il kernel in tempo reale?
Un kernel in tempo reale non è necessariamente superiore o migliore di un kernel standard. Soddisfa invece diversi requisiti aziendali o di sistema. È un kernel ottimizzato progettato per mantenere bassa latenza, tempo di risposta coerente e determinismo. A titolo di confronto, un kernel RHEL standard si concentra su operazioni orientate al throughput e sulla pianificazione equa delle attività. Il kernel in tempo reale è anche noto come kernel-rt
o preempt-rt
.
Il modo più semplice per identificare un kernel in tempo reale è eseguire uname -r
comando sul terminale, quindi cerca il rt parola chiave nella versione del kernel. Se rt manca, quindi il sistema utilizza il kernel standard.
Il seguente output è un esempio:
#uname -r
3.10.0-1127.10.1.rt56.1106.el7
Alcuni importanti kernel-rt
i meccanismi includono:
- La priorità di un'attività viene verificata (1-99) in condizioni di carico elevato.
- Le attività ad alta priorità (99) hanno la preferenza per l'esecuzione della CPU.
- Non utilizza la politica di pianificazione completamente equa (CFS).
- Le politiche di pianificazione in uso sono SCHED_FIFO o SCHED_RR.
- Mantiene il tempo di esecuzione a bassa latenza.
- Offre l'opportunità di misurare, registrare e configurare il tempo di risposta.
Per capire meglio come kernel-rt
è diverso da un kernel standard, il diagramma seguente spiega come usare kernel-rt
mantiene bassi i tempi di latenza e di risposta nel sistema.
Nel diagramma sopra, blu i grafici rappresentano il tempo di risposta (ms) su un kernel RHEL7 standard ottimizzato, mentre verde i punti rappresentano il tempo di risposta (ms) su un kernel-rt
RHEL7 sintonizzato . La sezione verde mostra coerenza, bassa latenza e basso tempo di risposta. Per approfondire questo grafico e i relativi test, fare riferimento alla guida ufficiale di Red Hat "Why Use Red Hat Enterprise Linux for Real Time to Optimize Latency".
Di seguito ho elencato alcune altre differenze vitali per confrontare RHEL per Real Time con RHEL standard:
- Kexec e vmcore:l'installazione e la configurazione sono le stesse di RHEL standard.
- Moduli di terze parti - Tutti i moduli devono essere ricompilati con
kernel-rt
prima di essere utilizzato. irqbalance
demone - Disabilitato per impostazione predefinita.- Criterio di pianificazione:viene utilizzato solo SCHED_FIFO o SCHED_RR.
- Interrupt (IRQ) - Utilizza CPU dedicate per isolare i processi l'uno dall'altro.
Installa RHEL in tempo reale
Eseguiamo una rapida installazione e osserviamo gli altri pacchetti che fanno parte di un kernel-rt
installazione. Un'immagine ISO separata di kernel-rt
è disponibile per un nuovo approvvigionamento. Un utente/amministratore può anche installare il kernel-rt
Pacchetto RPM su un sistema RHEL standard esistente, seguito da un riavvio.
Passaggio 1 :Scarica l'immagine ISO denominata RHEL for Real-Time dal portale clienti di Red Hat e dal provisioning. Puoi anche utilizzare una casella RHEL standard esistente e abilitare il rhel-7-server-rt
repository per recuperare kernel-rt
pacchetti.
Passaggio 2 :esegui un'installazione di gruppo per installare tutti i pacchetti specifici di RT contemporaneamente.
Passaggio 3 :verifica tutti i pacchetti dipendenti.
Passaggio 4 :riavvia il sistema, quindi seleziona kernel-rt
dalla console di avvio.
Gli utenti devono eseguire l'installazione del gruppo RT, poiché fornisce tutto il necessario kernel-rt
pacchetti dipendenti. La tabella seguente mostra brevi dettagli del pacchetto dipendente:
- kernel-rt - Kernel in tempo reale
- rt-setup - Pacchetto più critico per la configurazione dell'ambiente RT.
- rtctl - Configura le priorità di pianificazione per il thread del kernel.
- rt-test, rt-checks, rteval - Utilizzato per testare le capacità e i carichi del sistema.
Lascia che ti dia un breve scenario reale che illustra perché l'installazione del gruppo RT è fondamentale. Uno dei principali clienti di telecomunicazioni eseguiva il kernel RHEL in tempo reale (3.10.0-693.11.1.rt56.632.el7) come ambiente cluster a tre blade su una macchina HP ProLiant BL460c Gen9. Hanno osservato ritardi e timeout del traffico nell'ambiente del cluster. Un gran numero di pacchetti UDP self-heartbeat (HB) erano mancanti o eliminati. Abbiamo osservato che non si sono verificati problemi con le schede di rete o i moduli cluster dopo aver analizzato pcap
e strace
pacchetti. Ulteriori diagnosi hanno mostrato che il rt-setup
pacchetto mancante perché kernel-rt
è stato installato in modo forzato senza nessuno dei suoi pacchetti dipendenti.
Ambiente | Ho perso HB in 7 giorni | HB perse in 7 giorni con rt-setup |
---|---|---|
hostname-a12 | 138 | 0 |
hostname-a13 | 113 | 0 |
hostname-a14 | 118 | 5 |
Questa rt-setup
il pacchetto è responsabile della configurazione e dell'esecuzione di rt-entsk
demone, che impedisce la generazione di IPI e il ritardo delle attività in tempo reale.
I seguenti punti elenco mostrano alcune delle funzionalità chiave di rt-setup
(v2.0-6):
- Crea gruppi in tempo reale.
- Aggiunge la configurazione dei limiti in tempo reale per PAM.
- Aggiunge
/usr/bin/rt-setup-kdump
per configurare kdump in RT. - Aggiunge regole specifiche per udev per irq con thread e
/dev/rtc
accesso. - Aggiunge
/usr/bin/slub_cpu_partial_off
per disattivarecpu_partials
in SLUB. - Aggiunge il demone della chiave statica del timestamp net-socket (
rt-entsk
).
Concludi
Vale la pena eseguire un kernel in tempo reale e valutarne il potenziale poiché molte applicazioni possono trarne vantaggio. Kernel-rt
può essere regolato per ridurre ulteriormente i problemi di prestazioni. Strumenti come ftrace
sono forniti con RHEL per Real-Time e sono molto utili per l'analisi e il debug dei problemi di latenza. Tuttavia, questi dettagli non rientrano nell'ambito di questo articolo.
Il kernel in tempo reale è in circolazione da molto tempo, ma molti amministratori di sistema non sono sicuri di come lavorarci. In questo articolo, ho definito cosa fa il kernel in tempo reale. Ti ho anche fornito informazioni su come installarlo. Forse il kernel in tempo reale aiuterà la tua organizzazione a realizzare prestazioni Linux ancora maggiori!
[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]