====== 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