La capacité du noyau en temps réel existe depuis plus d'une décennie dans l'écosystème open source. De même, la prise en charge de Red Hat Enterprise Linux (RHEL) pour le noyau en temps réel est disponible depuis plusieurs années. Pourtant, de nombreux administrateurs système interprètent mal ses concepts de base et son comportement opérationnel réel. Dans cet article, je décris certaines de ses principales fonctionnalités, les différences par rapport au noyau standard et les étapes d'installation rapide.
Initialement, Red Hat a lancé un produit appelé "Red Hat Enterprise MRG", où MRG signifiait Messaging, Real-time et Grid. MRG 2 était basé sur les versions RHEL 5 et RHEL 6, tandis que MRG 3 était entièrement basé sur RHEL 6. À partir de RHEL 7, le produit MRG est devenu obsolète et "RHEL for Real-Time" a été introduit en tant que produit distinct.
Qu'est-ce que le noyau temps réel ?
Un noyau temps réel n'est pas nécessairement supérieur ou meilleur qu'un noyau standard. Au lieu de cela, il répond à différentes exigences commerciales ou système. Il s'agit d'un noyau optimisé conçu pour maintenir une faible latence, un temps de réponse constant et un déterminisme. À titre de comparaison, un noyau RHEL standard se concentre sur les opérations axées sur le débit et la planification équitable des tâches. Le noyau temps réel est également appelé kernel-rt
ou preempt-rt
.
Le moyen le plus simple d'identifier un noyau temps réel est d'exécuter le uname -r
commande sur le terminal, puis recherchez le rt mot-clé dans la version du noyau. Si rt est manquant, le système utilise le noyau standard.
La sortie suivante est un exemple :
#uname -r
3.10.0-1127.10.1.rt56.1106.el7
Quelques éléments importants de kernel-rt
mécanismes comprennent :
- La priorité d'une tâche est vérifiée (1-99) en cas de forte charge.
- Les tâches de haute priorité (99) ont la priorité pour l'exécution du processeur.
- N'utilise pas la politique de planification complètement équitable (CFS).
- Les politiques de planification utilisées sont SCHED_FIFO ou SCHED_RR.
- Maintient un temps d'exécution à faible latence.
- Offre la possibilité de mesurer, d'enregistrer et de configurer le temps de réponse.
Pour mieux comprendre comment kernel-rt
est différent d'un noyau standard, le diagramme suivant explique comment utiliser kernel-rt
maintient une faible latence et des temps de réponse dans le système.
Dans le schéma ci-dessus, bleu les tracés représentent le temps de réponse (ms) sur un noyau RHEL7 standard réglé, tandis que vert les points représentent le temps de réponse (ms) sur un kernel-rt
RHEL7 réglé . La section verte montre la cohérence, la faible latence et le faible temps de réponse. Pour étudier ce graphique et les tests associés plus en détail, veuillez vous reporter au guide officiel de Red Hat "Why Use Red Hat Enterprise Linux for Real Time to Optimize Latency."
Ci-dessous, j'ai énuméré quelques autres différences essentielles pour comparer RHEL pour le temps réel avec RHEL standard :
- Kexec et vmcore :l'installation et la configuration sont identiques à celles de RHEL standard.
- Modules tiers – Tous les modules doivent être recompilés avec
kernel-rt
avant d'être utilisé. irqbalance
démon - Désactivé par défaut.- Politique de planification - Seul SCHED_FIFO ou SCHED_RR est utilisé.
- Interruption (IRQ) :utilise des processeurs dédiés pour isoler les processus les uns des autres.
Installez RHEL pour le temps réel
Effectuons une installation rapide et observons les autres packages qui font partie d'un kernel-rt
installation. Une image ISO distincte de kernel-rt
est disponible pour un nouvel approvisionnement. Un utilisateur/administrateur peut également installer le kernel-rt
Package RPM sur un système RHEL standard existant, suivi d'un redémarrage.
Étape 1 :Téléchargez l'image ISO nommée RHEL for Real-Time depuis le portail client Red Hat et la mise à disposition. Vous pouvez également utiliser une boîte RHEL standard existante et activer le rhel-7-server-rt
référentiel pour récupérer kernel-rt
colis.
Étape 2 :Effectuez une installation de groupe pour installer simultanément tous les packages spécifiques à RT.
Étape 3 :Vérifiez tous les packages dépendants.
Étape 4 :Redémarrez le système, puis sélectionnez kernel-rt
depuis la console de démarrage.
Les utilisateurs doivent effectuer l'installation du groupe RT, car il fournit tous les éléments kernel-rt
nécessaires forfaits dépendants. Le tableau suivant affiche de brefs détails sur les packages dépendants :
- kernel-rt - Noyau en temps réel
- rt-setup - Le package le plus critique pour la configuration de l'environnement RT.
- rtctl - Configure les priorités de planification pour le thread du noyau.
- rt-test, rt-checks, rteval - Utilisé pour tester les capacités et les charges du système.
Permettez-moi de vous donner un très bref scénario réel illustrant pourquoi l'installation du groupe RT est cruciale. L'un des principaux clients de télécommunications exécutait le noyau RHEL en temps réel (3.10.0-693.11.1.rt56.632.el7) en tant qu'environnement de cluster à trois lames sur la machine HP ProLiant BL460c Gen9. Ils ont observé des retards de trafic et des délais d'attente dans l'environnement du cluster. Un grand nombre de paquets UDP self-heartbeat (HB) manquaient ou étaient abandonnés. Nous avons observé qu'il n'y avait aucun problème avec les cartes réseau ou les modules de cluster après avoir analysé pcap
et strace
paquets. Un diagnostic plus approfondi a montré que le rt-setup
le paquet était manquant car kernel-rt
a été installé de force sans aucun de ses packages dépendants.
Environnement | HB manqué en 7 jours | HB manqué en 7 jours avec rt-setup |
---|---|---|
hostname-a12 | 138 | 0 |
hostname-a13 | 113 | 0 |
hostname-a14 | 118 | 5 |
Ce rt-setup
package est responsable de la configuration et de l'exécution de rt-entsk
démon, qui empêche la génération d'IPI et le retard des tâches en temps réel.
Les puces suivantes présentent certaines des fonctionnalités clés de rt-setup
(v2.0-6):
- Crée des groupes en temps réel.
- Ajoute une configuration des limites en temps réel pour PAM.
- Ajoute
/usr/bin/rt-setup-kdump
pour configurer kdump dans RT. - Ajoute des règles spécifiques à udev pour les irq threadés et
/dev/rtc
accès. - Ajoute
/usr/bin/slub_cpu_partial_off
pour désactivercpu_partials
dans SLUB. - Ajoute un démon de clé statique d'horodatage net-socket (
rt-entsk
).
Conclusion
Cela vaut la peine d'exécuter un noyau en temps réel et d'évaluer son potentiel car de nombreuses applications peuvent en bénéficier. Kernel-rt
peut être réglé pour réduire davantage les problèmes de performances. Des outils tels que ftrace
sont fournis avec RHEL pour le temps réel et sont très utiles pour analyser et déboguer les problèmes de latence. Cependant, ces détails sortent du cadre de cet article.
Le noyau temps réel existe depuis longtemps, mais de nombreux administrateurs système ne savent pas comment l'utiliser. Dans cet article, j'ai défini ce que fait le noyau temps réel. Je vous ai également fourni des informations sur la façon de l'installer. Peut-être que le noyau en temps réel aidera votre organisation à obtenir des performances Linux encore meilleures !
[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]