Membre depuis le 01/06/2019
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
Membre depuis le 10/07/2019
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 ?
Membre depuis le 11/04/2019
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
Membre depuis le 26/07/2021
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
Membre depuis le 01/06/2019
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
Membre depuis le 10/07/2019
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 !
Membre depuis le 11/04/2019
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
Membre depuis le 26/07/2021
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
Membre depuis le 01/06/2019
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`
Membre depuis le 11/04/2019
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
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
andre15
Membre depuis le 10/07/2019
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 ?