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
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
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 !