Débusquer les rongeurs de ressources...
Non pas que je sois un malade de vitesse, loin de là, mais il n'y a rien de plus agaçant que d'avoir son système qui répond avec un quart de seconde de retard sans en comprendre la cause. Et comme ce dont on dispose le plus facilement sur n'importe quel système *nix est une console, voici une batterie d'outils en mode texte pour débusquer les rongeurs de ressources.
Notre sujet porte donc sur les outils en mode texte. Des choses très "low-tech" sans icônes, ni menus déroulant, ni interfaces web-ajax-2.0-machin-bidule. Ils se lancent en tout simplicité par une commande dans un terminal, en local ou à distance avec SSH.
La majorité de ces utilitaires sont disponibles avec toutes les distributions. Je ne vais donc généralement pas détailler les procédures d'installation lorsqu'un sudo apt-get install XXX suffit à installer l'utilitaire XXX. Et lorsque ce n'est pas le cas, il sera indiqué l'URL où le télécharger.
Mémoire et CPU
La commande top est aussi répandue sur les systèmes *NIX que vi. Vous pouvez toujours compter sur elle car elle sera toujours installée sur une machine, quelle que soit la distribution utilisée.
Cet outil vous permet d'afficher la liste des processus qui tournent sur une machine, classée par consommation de CPU. Cela permet en un coup d'oeil de voir quels sont les processus fous. La touche ? permet d'avoir accès aux nombreuses options de tri, de choix de colonne, etc. Une commande à maîtriser donc (comme vi ;-).
Mais bien mieux que top, nous avons htop. Il faut bien sur l'installer mais cela vaut le coup car cet outil rajoute aux fonctions de son ancêtre, la couleur et l'interactivité grâce à ncurse. Vous pouvez donc sélectionner les processus, les tuer (touche k) les grouper par thread, etc. En pressant la touche p, l'ensemble des processus sera trié par leur charge machine et avec m ce sera par mémoire consommée.
Consommation d'énergie
Si votre objectif est de détecter ce qui vide les batteries de votre portable,powertop est l'outil qu'il vous faut.
Développé par Intel, il permet de savoir quels sont les processus, mais aussi les périphériques, qui consomment le plus d'énergie en se basant sur divers paramètres dont la tendance qu'ils ont à réveiller le kernel.
Cerise sur le gâteau, ce top là a l'intelligence de vous fournir des conseils pour optimiser la consommation en fonction de ce qu'il constate. Un must pour qui est sensibilisé au green computing.
Pour l'installer, il suffit de lancer un sudo apt-get install powertop et de lancer sudo powertop (les droits roots sont nécessaires).
X-Windows
Pour ceux qui n'ont pas encore cédé aux sirènes de Wayland, l'outil obligatoire est xrestop. Il vous permet d’auditer en temps réel les applications qui consomment le plus de ressources graphique de votre serveur X11.
Alors je vous préviens, cet outil est très mauvais pour le moral. Vous y découvrez par exemple que ce qui mange le plus de ressource peut être votre fond d'écran, la zooolie transparence dans votre console, ou plus classiquement l'ami FireFox...
La première fois que j'ai utilisé cet outil, la consommation mémoire du panda boulimique atteignait 1go !! Et, Ô surprise, fermer tous les onglets n'y a rien changé. La seule "solution" a été de redémarrer le navigateur pour revenir à une consommation "normale" et ce avec EXACTEMENT les mêmes onglets ouverts sur les mêmes pages... Ceci étant dit, cela devrait changer bientôt avec le projet Electrolysis.
Le réseau
Pour auditer les mangeurs de bande passante nous disposons de plusieurs outils. Le plus simple à utiliser est jnettop qui affiche un classement des IP par KB/S reçus ou émis. Comme quasiment tous les outils top dédiés au réseau, jnettop utilise la libraire libpcap. Un outil équivalent mais moins précis est iftop.
Pour ceux qui ont besoin d'une analyse plus fine, l'outil iptraf fournit une interface un peu complexe en ncurse avec la possibilité de créer des fichiers de logs des interfaces audités.
Un peu simpliste nethogs permet lui aussi d'afficher les consommations réseau mais a la particularité de faire cela par processus, permettant ainsi de savoir précisément quelle application s'amuse à sucer la bande passante.
Plus spécialisé, il existe aussi apachetop qui, à partir des logs du serveur, permet d'observer en temps réel la consommation en bande passante des requêtes faites sur un site.
Plus spécialisé encore, et comme nethogs ou iptraf, basé sur la librairie libpcap, nous avons dnstop dédié aux propriétaires d'un serveur bind et permettant d'auditer la consommation exprimée en % du nombre total de requêtes par classe d'IP, domaine, sous domaine, etc.
Base de données
mySql dispose d'un outil bien pratique pour en auditer la consommation par processus. Il s'agit de mytop qui dispose d'une interface ncurse permettant de savoir quel utilisateur met la base à genoux.
PostgreSQL est quant à lui plus à la traîne en ce domaine. Rien de natif et juste un projet en python non abouti et un autre en perl que je n'ai pas encore testé.
Conclusion
Voilà donc un petit ensemble d'outils sympa pour toper les vilains du système. Si vous en avez d'autres en tête n'hésitez pas à en parler ici !