Utilise `perf top`. C'est un outil noyau très puissant qui va te montrer en temps réel quelles fonctions consomment le plus de cycles CPU dans ce PID.
sudo perf top -p VOTRE_PID Tu verras les symboles des fonctions qui tournent à fond.
Si c'est un problème de `syscalls` à répétition, `strace` peut t'aider à voir les appels système que le processus fait. Par contre, `strace` peut ralentir l'application si elle fait beaucoup d'appels.
sudo strace -p VOTRE_PID
Pour des choses plus fines, regarde du côté de `bpftrace` ou `bcc-tools`. Tu peux instrumenter des points spécifiques du kernel et de l'user space pour voir exactement ce qui consomme. C'est plus complexe mais super précis.
bpftrace -e 'profile:hz:99 { @[kstack] = count(); }'
Un `pidstat -t -u 1 10 -p VOTRE_PID` peut te donner des stats CPU et thread par thread pour voir si c'est un seul thread ou plusieurs qui sont chauds.
Super le `perf top` m'a tout de suite montré une boucle infinie dans une fonction spécifique que je n'avais pas vue. Merci pour les outils je vais les garder sous le coude !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
gabriel-renaud
Membre depuis le 19/07/2024actif secouriste
J'ai un processus qui prend 100% CPU sur un serveur Linux de production. Le `top` me dit juste son PID et qu'il bouffe le CPU. Comment je peux creuser pour savoir exactement ce qui se passe dedans sans tout faire planter ?