Scheduler CPU pas top pour des workers temps réel

andre15 20/07/2025
RÉSOLU
andre15
Auteur Actif
Avatar de andre15
andre15
Auteur Actif

Yop les devs ! J'ai un souci sur des serveurs Linux (CentOS 7) qui font tourner des processus workers temps réel (traitement de flux audio/vidéo). De temps en temps on a des micro-freezes des lags qui font louper des frames. Les machines ont du CPU dispo, pas de saturation mémoire, pas de swap. J'ai l'impression que le scheduler CPU standard de Linux (CFS) est pas optimal pour nos besoins temps réel. Des idées pour améliorer la latence du scheduling ?

20/07/2025 à 21:34

11 commentaires

ilacroix
Membre Actif
Avatar de ilacroix
ilacroix
Membre Actif

salut. ouais le CFS c'est pas fait pour le vrai temps réel. tu peux essayer de jouer avec les priorités temps réel (SCHED_FIFO ou SCHED_RR) via chrt. il faut que tes applis soient capables de les gérer par contre et attention si t'as des process mal codés ça peut te bloquer toute la machine

Modifié le 23/05/2026 à 16:20
andre15
Auteur Actif
Avatar de andre15
andre15
Auteur Actif

j'ai testé chrt -f 99 pour mes processus critiques mais ça aide pas tant que ça. j'ai toujours ces petits glitches aléatoires. ptete un problème d'interruptions ou de drivers ?

Modifié le 23/05/2026 à 16:20
fmarchal
Membre Actif Secouriste
Avatar de fmarchal
fmarchal
Membre Actif Secouriste

si c'est des micro-freezes ça peut être des interruptions ou même l'accès disque. t'as checké les stats /proc/interrupts ou utilisé un outil comme irqbalance ? et t'as un kernel low-latency ou RT patché ? c'est souvent la solution pour ces cas extrêmes

Modifié le 23/05/2026 à 16:20
stephanie-devaux
Membre Actif
Avatar de stephanie-devaux
stephanie-devaux
Membre Actif

et n'oublie pas le governor cpu en performance pour éviter les changements de fréquence. et aussi désactiver les C-states pour que les coeurs ne se mettent pas en veille profonde. ça réduit la latence de réveil mais consomme plus d'énergie. vérifie aussi les P-states

24/07/2025 à 09:32
ilacroix
Membre Actif
Avatar de ilacroix
ilacroix
Membre Actif

le kernel RT c'est vraiment le move pour ça. tu peux aussi isoler des coeurs CPU pour tes workers avec grub et isolcpus= ou cpusets. ça évite que le scheduler y mette d'autres trucs et que les interruptions soient routées dessus. c'est radical mais efficace

Modifié le 23/05/2026 à 16:20
andre15
Auteur Actif
Avatar de andre15
andre15
Auteur Actif

ok je vais regarder le kernel RT et les isolcpus. j'ai déjà le cpu governor en performance mais pas pensé aux c-states. je vais essayer de les désactiver. ça fait bcp de pistes à explorer ! merci !

Modifié le 23/05/2026 à 16:20
fmarchal
Membre Actif Secouriste
Avatar de fmarchal
fmarchal
Membre Actif Secouriste

une autre chose à vérifier c'est la mémoire. si t'es en NUMA tu dois t'assurer que tes processus allouent la mémoire sur le même noeud NUMA que les CPUs qu'ils utilisent avec numactl. sinon ça fait des latences d'accès mémoire entre noeuds. ça se voit pas toujours au premier coup d'oeil

Modifié le 23/05/2026 à 16:20
stephanie-devaux
Membre Actif
Avatar de stephanie-devaux
stephanie-devaux
Membre Actif

et enfin désactive le swap. même si tu ne l'utilises pas une petite page fault sur un bloc qui est sur le swap ça peut te tuer un process temps réel. toujours pas de swap sur les systèmes critiques. double check swappiness aussi

Modifié le 23/05/2026 à 16:20
ilacroix
Membre Actif
Avatar de ilacroix
ilacroix
Membre Actif

pense aussi aux softirqs et ksoftirqd. si tes drivers réseau ou disque génèrent trop d'interruptions ou que tes ksoftirqd tournent trop ça peut empiéter sur tes processus temps réel. tu peux affiner l'affinity des softirqs aussi avec /proc/irq/IRQ_NUMBER/smp_affinity

Modifié le 23/05/2026 à 16:20
fmarchal
Membre Actif Secouriste
Avatar de fmarchal
fmarchal
Membre Actif Secouriste

oui la gestion des interruptions c'est clé. pour les drivers tu utilises des modules standards ou des drivers proprio ? des fois une mise à jour ou un réglage spécifique du driver peut faire une énorme différence sur le comportement temps réel

29/07/2025 à 16:31
andre15
Auteur Actif
Avatar de andre15
andre15
Auteur Actif

swap est déjà off ! pour NUMA c'est une bonne remarque je vais regarder numactl. le kernel RT et l'isolation des CPUs ça semble être les plus gros leviers. je vais aussi creuser l'affinity des IRQ. merci à tous pour les infos super utiles !

Modifié le 23/05/2026 à 16:20

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire