lundi, mai 17, 2010

Linux performance monitoring avec collectl

Apres des années d'errance ;) je me lance à nouveau dans le blog
Un petit post mnémotechnique pour retrouver mes commandes collectl

Je vous propose d'utiliser collectl un autre outil qui possède des avantages sur sar et ses amis, notamment la capacité d'échantillonner en dessous de la seconde et de fournir des fichiers directement utilisables avec un outil graphique, comme mathplotlib.

Concretement collectl vous permet donc de monitorer vos palteformes en temps réel ou alors comme sar de grapher l'activité de vos machines de façon journalière.


L'outil fournit un mode démon comme sar, ce sera l'objet d'un prochain post, ainsi que du code mathplotlib pour grapher.

Je pense aussi faire un article sur le debug de jvm basé sur ces métriques.
mais l'idée ici et de lister les commandes courantes.

L'outil propose un tableau de correspondance avec les commandes standards de performance
  • vmstat:
collectl --vmstat
#procs ---------------memory (KB)--------------- --swaps-- -----io---- --system-- ----cpu-----
# r b swpd free buff cache inact active si so bi bo in cs us sy id wa
0 0 0 1242M 71120K 331M 276M 113M 0 0 0 0 734 525 3 1 95 0

  • top like
top process par cpu :
mais mieux si on tape : collectl --showtopopts
on obtient la liste des tris autorisés
exemples utiles:
collectl --top vsz: tri par virtual memory
collectl --top rss :tri par mémoire physique consomée
collectl --top iokb: tri active io w/r des process
collectl --top iosys: tri system call

une version plus complète
collectl --top ,10 -scmd --iosize

TODO explorer les fonctions de tri par activé des pages de caches(KB read from pagecache)

Monitoring des sous systèmes
collectl propose un ensemble de sous système:

b - buddy info (memory fragmentation)
c - CPU
d - Disk
f - NFS V3 Data
i - Inode and File System
j - Interrupts
l - Lustre
m - Memory
n - Networks
s - Sockets
t - TCP
x - Interconnect
y - Slabs (system object caches)

monitoring dans le détail:
C - CPU
D - Disk
E - Environmental data (fan, power, temp), via ipmitool
F - NFS Data
J - Interrupts
L - Lustre OST detail OR client Filesystem detail
N - Networks
T - 65 TCP counters only available in plot format
X - Interconnect
Y - Slabs (system object caches)
Z - Processes

Exemples de commandes courantes:

Monitoring CPU:
collect -sCc
l'ajout du petit c permet d'avoir le total global et d'autre info parfois

Monitoring DISK:(iostat -x like)
collectl -sDd

Monitoring Réseau:
collectl -sNn

TODO monitoring fragmentation mémoire & slab
collectl -sB (Interpretation)

Changer la fréquence d’échantillonnage
collectl -sD -i0.1 (attention aux valeur parfois en x/s du coup la permiere lecture peut faire peur, car un facteur dix dans ce cas va venir vous perturber:)


une commande plus complète:
exporter au format csv(-P) avec un time stamp sans compression(-oTz) 50 échantillons (-c50) vers fichier sampling (-f), l'option (-rawtoo) mettra les données brutes dans un fichier.
Dans ce cas, je pense que ce sont les données de /proc/diskstats
collectl -sdD -oTz -P -c50 -f diskinfo --rawtoo
On obtient alors deux fichiers un pour le global l'autre pour les disques

Analyse des performances
Ce n'est pas le propos de ce post mais pour ceux qui sont avides de savoir interpréter les métriques systèmes voici deux liens que je pense essentiel:
Pour interpréter vos performance linux, l'auteur utilise le paquet sysstat
Pour Windows, il existe aussi un site sympa