GNU/Linux >> Linux Esercitazione >  >> Linux

Lavorare con il kernel in tempo reale per Red Hat Enterprise Linux

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 disattivare cpu_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. ]


Linux
  1. Lavorare con le pipe sulla riga di comando di Linux

  2. Registra Red Hat Enterprise Linux e allega un abbonamento ad Ansible

  3. Configurazione di un indirizzo IPv6 in Red Hat Enterprise Linux 7 e 8

  4. Creazione di un'immagine Red Hat Enterprise Linux 7 personalizzata per Microsoft Azure

  5. CentOS / RHEL:esclusione con Yum per gli aggiornamenti del kernel

RHEL 6 – Guida all'installazione del server Red Hat Enterprise Linux passo dopo passo

Red Hat Enterprise Linux (RHEL) 8 passaggi di installazione con schermate

Installa Red Hat Enterprise Linux Server dall'immagine ISO

Come installare Red Hat Enterprise Linux 8 (RHEL 8)

Patch del kernel Linux Raspberry Pi con KernelCare GRATIS!

Guida Jumpstart per Oracle Enterprise Linux con screenshot