Question

J'essaie de trouver la cause des goulots d'étranglement des performances dans une application en cours de débogage sous Linux. Les différents processus impliqués semblent passer beaucoup de temps à bloquer les requêtes d’E / S, et je me demandais si quelqu'un connaissait des astuces concernant Linux qui vous permettraient de voir pourquoi un processus particulier est bloqué / de quelle ressource il s'agit. attendre? Y a-t-il quelque chose d'utile dans / proc par exemple?

Était-ce utile?

La solution

Quel que soit le processus utilisé, vous utilisez top pour vérifier l'état. Vous pouvez ensuite le lancer via en treillis ou en strace . Cela devrait détailler ce qui se passe. Si cela n’est pas possible, connectez-le it à gdb . Des outils tels que iostat peuvent vous montrer en général ce qui se passe (par exemple, si le disque est un goulot d'étranglement) .

Autres conseils

Vous pouvez utiliser la commande strace pour voir ce que votre processus prépare. Vous pouvez également trouver utile d’exécuter lsof sur votre processus pour voir les fichiers et les sockets qu’il utilise.

strace est votre ami, car vous pouvez obtenir le temps nécessaire à chaque appel système et vous pouvez également sélectionner les descripteurs de fichier et l’appel système qui vous intéressent. Mais vous pouvez également obtenir de l’aide du noyau: consultez < a href = "http://www.latencytop.org/" rel = "noreferrer"> latencytop

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top