janvier
2010
Je dois souvent surveiller des processus, typiquement pour voir comment évolue leur consommation de mémoire, le nombre de handles, de threads etc. Pour cela, perfmon.exe est un outil bien approprié, et permet d’afficher beaucoup de compteurs de performance Windows, et également de les sauvegarder dans un fichier journal :
Malheureusement c’est un outil bien peu ergonomique, et assez fastidieux à régler (on peut tout de même sauver les paramètres dans un fichier .msc, afin de ne pas tout recommencer à zéro à chaque fois). En particulier je déteste le choix des compteurs dans des listes déroulantes minuscules
ainsi que le choix des échelles pour lesquelles il faut compter les chiffres à la main (pas bien agréable quand les compteurs sont dans les 10000000 ou les 1000000000) :
De plus on ne peut pas faire afficher des calculs complémentaires – souvent j’aimerais voir l’écart entre deux mesures successives, afin de connaître la « vitesse » de l’évolution du compteur.
Aussi j’utilise de plus en plus PowerShell pour mes activités de surveillance de processus. Voici par exemple un petit script qui suit la mémoire utilisée.
Tout d’abord j’ai mis au point le principe directement sur la ligne de commande (le processus à surveiller est nxServer.exe) :
Notez que PowerShell manipule directement 1GB, 1MB, 1KB, xKB. Bien pratique pour ne pas se prendre la tête avec les grands nombres.
Une fois satisfait du principe, j’ai sauvé la ligne de commande dans un fichier :
fichier que j’ai ensuite édité avec PowerGUI Script Editor pour ajouter quelques fonctionnalités supplémentaires (affichage à l’écran + sauvegarde dans un fichier, calcul de la différence entre deux mesures successives) :
Et voilà :
Bon d’accord ce n’est plus très utile de diviser par 1GB, j’ai corrigé la fuite mémoire qui faisait que l’on dépassait le Giga – mais je n’ai pas envie de la réintroduire juste pour la démo !
1 Commentaire + Ajouter un commentaire
Commentaires récents
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans
- Rétrospectives, la directive première dans
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans
- Des tableaux pour l’intégration d’un équipier dans une équipe Scrum dans
une solution plus élégante pour construire la chaîne $info consiste à utiliser les indicateurs de formatage. Exemple :
$info = »{0} == current memory = {1,10:n2}Mb == difference = {2,10:n2}b » -f (get-date), ($current_memory/ 1MB), $difference
{0}, {1} … correspondent à la position des arguments, comme dans les chaînes .NET.
10:n2 indique le nombre minimal de caractères (s’il en manque, des espaces seront ajoutés avant ou après – selon le signe du premier élément), et le nombre de chiffres après la virgule.
Après -f on indique les arguments qui seront remplacés dans la chaîne.
Après ce nouveau formatage, une capture d’écran qui illustre mieux mon propos – la mémoire à peu près stable :