Un outil simple pour représenter graphiquement l'utilisation de la mémoire?

14

Existe-t-il un script qui montrera l'utilisation de la mémoire sous forme de graphique, par exemple sous forme de graphique à secteurs, chaque processus étant une tranche distincte?

Je ne cherche pas quelque chose comme Munin pour représenter graphiquement l'utilisation de la mémoire au fil du temps, mais plutôt montrer l'utilisation de la mémoire par processus à un moment donné.

Pour rendre ma demande encore plus obscure, c'est pour un serveur sans tête (donc pas d'applications X). La façon la plus simple serait d'écrire un fichier PNG, ou éventuellement un fichier HTML (qui pourrait utiliser Javascript pour permettre le filtrage des processus, en changeant entre les types de graphiques, etc.)

dbr
la source

Réponses:

13

La comptabilité de la mémoire par processus est délicate pour un certain nombre de raisons que j'entrerai dans une minute. Pour une surveillance simple, les scripts gkrellmd ou nagios suffisent probablement. Si vous voulez une plus grande précision, vous devrez regarder plus loin.

smem présente le concept de taille de jeu proportionnelle :

Étant donné que de grandes parties de la mémoire physique sont généralement partagées entre plusieurs applications, la mesure standard de l'utilisation de la mémoire connue sous le nom de taille de l'ensemble résident (RSS) surestimera considérablement l'utilisation de la mémoire. PSS mesure à la place la «part équitable» de chaque application de chaque zone partagée pour donner une mesure réaliste.

Exemple: vous démarrez GNOME, provoquant le démarrage d'un certain nombre de processus, un pour chaque applet et programme. Ils sont tous liés à libglib. Linux charge libglib dans un bloc de mémoire et le mappe dans tous les processus qui veulent libglib. La comptabilité de la mémoire naïve compte la taille complète de libglib par rapport à chaque processus qui y est lié.

smem répartit le coût du libglib entre les processus qui l'utilisent, pour donner une image plus proche de la réalité. Il dispose également d'un certain nombre d'options pour afficher l'utilisation de la mémoire (à partir du site Web):

  1. Afficher le smem d'informations de base sur le processus
  2. Afficher la vue système smem -R 4G -K / chemin / vers / vmlinux -w
  3. Afficher les totaux et pourcentages smem -t -p
  4. Afficher différentes colonnes smem -c "nom d'utilisateur pss"
  5. Afficher les processus filtrés en mappant smem -M libxml
  6. Afficher les mappages filtrés par le processus smem -m -P [e] volution
  7. Lire les données de capture tarball smem --source capture.tar.gz
  8. Afficher un graphique à barres étiqueté par pid smem --bar pid -c "pss uss"
  9. Afficher un graphique circulaire de RSS étiqueté par nom smem - nom de la tarte -s rss

Vous aurez cependant besoin d'un noyau très récent (> 2.6.27).

jldugger
la source
1
Oui, leur suggestion que 2.6.27 est raisonnablement récente est assez risible. Les seules distributions que je connais qui sont livrées avec un noyau plus récent sont Fedora 10 et Ubuntu 9.01.
Dave Cheney
9,04; Ubuntu 8.10 est livré avec 2.6.27, mais 2.6.30 est en rc3.
jldugger
Mes excuses, j'ai passé trop de temps en terre RHEL, où 2.6.18 est considéré comme récent.
Dave Cheney
5

Je ne peux penser à rien sur l'étagère

cependant, un combo d'un script PHP exécutant ps -AH v | awk '{print $ 8, $ 9, $ 10}' et l'utiliser avec pChart pourrait vous donner une page Web qui ferait ce que vous cherchez? (utilisation en Ko, pourcentage du total et nom du processus)

Mark Regensberg
la source
1
+1, j'ai pensé à cela avec Google Chart API. :)
Node
bon point. L'API Google Chart est probablement plus rapide à utiliser ...
Mark Regensberg
2

Jetez un œil à sarface - cela dépend des données sar, et vous pouvez surveiller votre utilisation de la mémoire (et toutes les autres données sar / sysstat) en direct.

Xerxès
la source
1

et qu'en est-il collectd ?

jnrg
la source
1

Fais le toi-même. Créez un script shell simple mettant à jour la base de données RRD. Dessinez ensuite un graphique à l'aide de rrdtool.


la source
1

Si vous êtes vraiment dans des niveaux de détail inférieurs, n'oubliez pas collectl. Voici un exemple des types d'utilisation de la mémoire par processus qu'il peut signaler:

ENREGISTREMENT 1 cag-dl585-02 (1244758290.002) (jeu 11 juin 18:11:30 2009)

RÉSUMÉ DU PROCESSUS (les compteurs sont / s)
# Utilisateur PID S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinF Commande
 9089 racine S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail:
 9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5904K 0 0 sendmail:
 9108 racine S 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm
 9120 racine S 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond
 9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs

Si vous êtes intéressé par des processus spécifiques, vous pouvez spécifier des filtres appropriés (y compris un commutateur pour afficher les threads).

Et si vous vous intéressez à la mémoire en général, elle peut également afficher les détails de la dalle et a même une sortie au format vmstat. Pourquoi voudriez-vous afficher des données au format vmstat alors que l'outil existant le fait déjà? C'est facile - avec collectivement, vous pouvez enregistrer les statistiques dans un fichier et les lire plus tard dans plusieurs formats.

essayez-le, vous l'aimerez

Jeff Atwood
la source
1
  1. Grep le (s) processus.
  2. Analyser la sortie et enregistrer au format séparé par des virgules dans un fichier texte.
  3. ouvrez le fichier séparé par des virgules dans Excel.
  4. Dessinez le graphique de ces données à l'aide de l'utilitaire graphique d'Excel.

Si vous souhaitez des instantanés de mémoire à différents intervalles de temps ... définissez le travail cron à l'intervalle souhaité et exécutez le script.

J'espère que cela pourra aider....

Jeff Atwood
la source
0

Ce n'est pas exactement ce que vous recherchez, mais vous pouvez peut-être l'adapter à vos besoins en utilisant cette référence (recherchez "Utilisation de la mémoire par processus").

Ivan
la source
0

Vous pouvez utiliser #top ou #sysstat

Rajat
la source
0

Je ne suis pas entré dans les détails, mais collectl a une option pour générer une sortie séparée par délimiteur, donc dans le cas de gnuplot, vous générez simplement vos données avec des espaces et vous êtes prêt. Il se chargera même parfaitement dans Excel. Si vous voulez des virgules, vous pouvez changer le délimiteur et si vous voulez vraiment faire la route rrd (faites juste attention parce que les tracés ne correspondent pas nécessairement aux données!), Vous pouvez changer le délimètre en deux-points et même changer les horodatages en UTC. -marque


la source
0

kSar, basé sur des données sar, mais il est basé sur java, est donc plus ou moins indépendant de la plateforme et vous permettra de passer à un hôte distant pour récupérer les données.

http://ksar.atomique.net/

Greeblesnort
la source
0

Phpsysinfo ne vous donne- t-il pas la possibilité de voir les informations sur le processus d'une manière ou d'une autre?

djangofan
la source