latence bizarre sur applicaton critique meme avec cpu pinning

Posté par eric-pichon le 19/08/2025
RÉSOLU

eric-pichon

Membre depuis le 18/12/2024

yo la team j'ai une app java critique qui tourne sur un serveur linux bare metal. j'ai fait du cpu pinning avec taskset pour isoler les cores pour mon app et pour le kernel/irqs sur d'autres cores. pourtant j'ai des pics de latence random qui font souffrir mon p99. iostat ne montre rien de spécial côté disk, la ram est ok. c'est comme si le scheduler kernel faisait des siennes malgré le pinning. une idée ?

# exemple de commande taskset
taskset -c 0-3 java -jar myapp.jar

# pour les irqs je les redirige vers d'autres cores
echo 4 > /proc/irq/NN/smp_affinity

Commentaires

christelle-leger

Membre depuis le 11/07/2024

même avec taskset le kernel peut bouger des trucs surtout si t'as des background tasks ou des démons qui sont pas pinnés. t'as pensé à isoler complètement les cpus pour ton app avec l'option isolcpus au boot du kernel ? et puis cgroup v2 pour des garanties plus fortes

eric-pichon

Membre depuis le 18/12/2024

non j'ai pas mis isolcpus. je vais tester ça. cgroup v2 est en place mais j'ai surtout utilisé pour limiter la ram pas le cpu. je vais regarder les paramètres cpu du cgroup

julien-laurence

Membre depuis le 23/08/2024

attention à l'hyperthreading si t'es sur un intel. si ton app utilise des cpus logiques qui partagent les mêmes ressources physiques que les cpus où tournent le kernel ça peut créer de la contention même avec du pinning. essaie de pinner sur des cores physiques distincts

wmasse

Membre depuis le 06/11/2024

regarde aussi si t'as pas des services système qui font du cpu usage périodiquement. genre auditd, rsyslog, systemd-journald. des fois ça peut générer des petits spikes qui perturbent ton app. tu peux les pinner sur les cpus non isolés aussi

eric-pichon

Membre depuis le 18/12/2024

hyperthreading c'est une bonne piste je vais vérifier le lstopo. et les services système j'ai fait un tri mais ptete j'en ai oublié un. je vais faire un flamegraph du cpu usage pendant les pics de latence ça devrait aider à identifier le coupable

christelle-leger

Membre depuis le 11/07/2024

et n'oublie pas les timers. si ton kernel a des timers très fréquents genre hrtimer ou des softirqs non gérés ça peut générer des micro-interruptions qui déraillent ton app. vérifie la conf de ton noyau genre nohz_full ou rcu_nocb_flush

eric-pichon

Membre depuis le 18/12/2024

ok j'ai mis nohz_full et rcu_nocb_flush et avec isolcpus. les latences ont baissé de ouf ! le p99 est beaucoup plus stable maintenant. c'était une combinaison de plusieurs trucs. merci pour toutes les pistes les gars !

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