====== Audit performance système ====== ===== Documentations ===== * [[http://en.wikipedia.org/wiki/List_of_performance_analysis_tools|Liste d'outils]] * [[http://www.drzz.net/articles.php?id=80|Analyse système complète iostat vmstat netstat]]. * [[http://www.tux-planet.fr/afficher-les-informations-systeme-sous-linux|Afficher les informations systèmes GNU/Linux]] * [[http://stackoverflow.com/questions/131303/linux-how-to-measure-actual-memory-usage-of-an-application-or-process|Mesure mémoire process/application]] * [[http://rimuhosting.com/howto/memory.jsp|Analyse mémoire très détaillée]] ===== I/O disque ===== ==== hdparm ==== * hdparm : http://fr.wikipedia.org/wiki/Hdparm Test rapidité des disques dur avec hdparm. Avec un disque sdb. hdparm -Tt /dev/sdb Options possibles pour hdparm. hdparm --help ==== iostat ==== * iostat : http://en.wikipedia.org/wiki/Iostat Usage. iostat interval count Options usuelles. -x : extended statistics. -t : Afficher le temps de chaque rapport. -c : affiche l'usage CPU (sans -d). -d : affiche le rapport de l'utilisation disque (sans -c). -p device : affiche les statistiques des devices block et de leurs partitions (sans -x). -k : kilobytes (bytes par défaut). -m : megabytes (bytes par défaut). Statistiques CPU exécutées toutes les 6 secondes 5 fois. Si rien n'est mentionné, cela ne s'arrête pas. iostat -xtc 6 5 Détails des valeurs de retour affichées avec -c (CPU Utilization Report) à voir dans le man du système. Statistiques disques exécutées toutes les 6 secondes 5 fois. Si rien n'est mentionné en nombre de fois, cela ne s'arrête pas. iostat -xtd 6 5 Détails de valeurs de retour affichées avec -d (Device Utilization Report) à voir dans le man du système. Les colonnes r/s, w/s, kr/s, et kw/s montrent respectivement les read et write par secondes en octets et kilo-octets. Sur Solaris, les colonnes importantes à observer sont : svc_t, wait %w et %b – plus le temps de traitement est élevé, plus la performance s'en ressent bien évidemment. Couplés l'un à l'autre, le temps de traitement et le temps d'occupation donnent une bonne impression sur l'état des entrées / sorties d'un disque. **Un taux d'occupation de plus de deux-tiers et un temps de traitement de plus de 50 millisecondes sont les indicateurs d'un goulot d'étranglement.** Que faire ? Voilà quelques pistes à explorer : * répartir la charge sur plusieurs disques en utilisant un meilleur partitionnement; * distribuer le swap (la pagination) sur plusieurs disques, ce qui a d'autant plus de sens que le swapping est important sur son système; * faire figurer dans la mesure du possible les données liées sur la même partition; * augmenter la mémoire (RAM) pour diminuer la pagination; c'est le cas par exemple lors de l'utilisation de SGBD qui sont très gourmands en mémoire, mais peu demandeurs de capacités de traitement rapides par le processeur; * utiliser autant que faire se peut les ressources en cache des applications développées; php a par exemple un système de cache plutôt efficace aujourd'hui, très utile pour les requêtes et traitements récurrents; * bien entendu, éviter d'écrire des requêtes qui parcourent les tables inutilement; cela demande donc une modélisation a priori qui arbitre entre un modèle E/R approprié et les capacités matérielles requises, sans oublier la manière dont on écrit les applications; * si le disque est utilisé à 100%, on peut répartir le système de fichier sur deux disques ou plus en utilisant l'utilitaire de gestion des volumes disques que l'on trouve sous Solaris (le Volume Manager); * déplacer le système de fichier vers un autre disque ou contrôleur plus rapide. Statistiques disques du device et des partitions de sda exécutées toutes les 6 secondes 5 fois. iostat -p sda 6 5 ==== dd ==== Pour tester les temps d'accès disques (io). time dd if=/dev/hda1 of=/file400Mo bs=1M count=400 ===== CPU ===== ==== mpstat ==== * mpstat : http://en.wikipedia.org/wiki/Mpstat Statistiques CPU. Usage. mpstat Exécuter mpstat de manière infini toutes les 8 secondes. mpstat 8 ==== Autres outils utilisables ==== * [[audit_performance#iostat]]. * [[audit_performance#vmstat]]. * [[audit_performance#top]]. ===== Load average ===== Affichage du load average. top uptime cat /proc/loadavg Load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time. ===== Mémoire ===== ==== free ==== free -m total used free shared buffers cached Mem: 7983 5861 2121 0 382 1885 -/+ buffers/cache: 3593 4390 Swap: 3999 338 3661 ==== Mémoire par processus ==== Analyser la mémoire utilisée par un processus 1234. cat /proc/1234/smaps Utilisation de la commande ps. ps -efo pid,user,args,rss,%cpu,%mem,vsz --sort %mem ps -efo pid,user,args,rss,pcpu,pmem,vsz --sort pmem ps -efo pid,user,command,args,rss,pmem,vsz,size,pcpu,time,psr --sort pmem ==== Valgrind ==== FIXME * http://en.wikipedia.org/wiki/Valgrind * http://valgrind.org/ ==== Autres outils utilisables ==== * [[audit_performance#vmstat]]. * [[audit_performance#top]]. ===== Réseau ===== ==== netstat ==== * netstat : http://en.wikipedia.org/wiki/Netstat Statistiques réseaux. Liste des statistiques par interfaces. netstat -i Etat des connexions. netstat Statistique en continue. netstat -c Liste les connexions établies. netstat -tap Liste les ports en écoute. netstat -tulpen Test bande passante réseau sans contrainte du stockage. Sur machine de destination nc -lnp 12345 >/dev/null Sur la machine source dd if=/dev/zero bs=1M count=1K | nc -n 10.10.0.2 12345 La donnée est générée en RAM côté source et transmise par le réseau à destination de la machine en RAM également. Aucun stockage persistant n'est utilisé. ==== iftop ==== top des interfaces réseau. ===== Services ===== * apachetop : top Apache. * mytop : top MySQL. * ftptop : liste des connexions au serveur FTP. ===== Outils polyvalents ===== ==== sysreport ==== Outil d'aspiration de toutes les configurations d'un système. Entrer la commande suivante, un nom et un numéro de ticket et un fichier /tmp/sosreport-.-.tar.bz2. sysreport Décompresser le fichier et toutes les informations systèmes sont contenues dans le dossier et peuvent être consultées. ==== vmstat ==== * vmstat : http://en.wikipedia.org/wiki/Vmstat Statistiques processeurs, mémoires, IO. Usage. vmstat Exécution de vmstat toutes les 5 secondes de manière illimité. vmstat 5 Voir le man du système pour le détail de chaque colonne. ==== top/htop ==== FIXME http://linux.die.net/man/1/top x : afficher le script exécuté par le processus au lieu du nom du process. htop est un top un peu moins austère avec quelques couleurs. ==== sar ==== FIXME Compteur de l'activité système. http://linux.die.net/man/1/sar sar -o datafile interval count >/dev/null 2>&1 & ===== nmon ===== * http://en.wikipedia.org/wiki/Nmon