Forum Programmation.shell Obtenir utilisation CPU en temps réel

Posté par  .
Étiquettes : aucune
0
20
sept.
2006
Bonjour,
Je cherche a faire un script qui se connecte sequentiellement sur 42 serveurs et qui récupère la charge CPU de la machine en tant réel. Je me suis donc penché sur les fichiers contenus dans /proc mais je n'ai trouvé que /proc/loadavg qui ne m'interesse pas trop puisque ce sont des moyennes sur 5, 10, 15 minutes.

Sinon j'ai essayé d'utiliser top mais ca affiche directement sur la sortie standard et je ne peux pas récuperer les infos voulues...

Une idée?

Merci d'avance
  • # Question

    Posté par  . Évalué à 3.

    Qu'appèles tu « la charge CPU de la machine en temps réel ? »

    J'ai le sentiment que la charge CPU n'a de sens que sur un intervalle de temps, non ?
  • # j'utilise /proc/stat

    Posté par  . Évalué à 2.

    Pour la charge instantannée (ou moyennée sur la durée que tu veux), tu peux te servir du contenu du fichier /proc/stat, dont les champs sont mis à jour en permanence, de façon incrémentale et monotone (des compteurs donc). Par défaut sur ma machine (noyau 2.6.11-6mdk) c'est 100 fois par seconde (les ticks ou jiffies, je ne sais plus).

    Pour plus d'infos, je te renvoie à ce commentaire que j'ai déjà écrit : http://linuxfr.org/comments/707964.html#707964 .
    • [^] # Re: j'utilise /proc/stat

      Posté par  . Évalué à 0.

      Ton script correspond tout a fait a ce qu'il me faut. Merci beaucoup!

      Une petite question cependant :
      Mon fichier ressemble a ca à un instant T :

      cpu 281057 7479 187405 239402499 231249 2085 22359
      cpu0 139881 1263 83957 59753915 31277 1953 21312
      cpu1 69269 1942 54499 59809702 97537 48 524
      cpu2 58699 1929 37235 59921705 13635 41 277
      cpu3 13206 2343 11712 59917176 88798 42 244
      intr 625813380 600514823 3 0 0 8 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24670646 0 0 0 0 0 0 0 152108 0 0 0 0 0 0 0 475789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      ctxt 76341800
      btime 1158168667
      processes 969145
      procs_running 1
      procs_blocked 0

      La ligne cpu correspond t'elle a une moyenne des 4 cpu?
      • [^] # Re: j'utilise /proc/stat

        Posté par  . Évalué à 4.

        $cat /usr/src/linux-2.6.17-1mdk/Documentation/filesystems/proc.txt
        ....
        The very first "cpu" line aggregates the numbers in all of the other "cpuN" lines.
        ....
  • # man vmstat ....

    Posté par  . Évalué à 0.

    sous HP UX:

    Column Descriptions
    The column headings and the meaning of each column are:


    cpu Breakdown of percentage usage of CPU time for the active processors

    us User time for normal and low priority
    processes

    sy System time

    id CPU idle


    Il faudrait voir si tu peux obtenir les memes infos sous Linux.
  • # MRTG ou SNMP

    Posté par  . Évalué à 2.

    qui permettrait de recuperer sur un serveur central les differentes valeurs des serveurs et de traiter ensuite, sous forme de graphe par exemple.
  • # TOP

    Posté par  . Évalué à 1.

    Un petit tour dans le man de top t'aurais permis de voir les options qui vont bien :

    un script qui contient :
    /usr/bin/top -b -n 1 >> $FILE

    Je l'utilise ensuite dans un cron toutes les 15mn. Apres je dirais que yapluka faire de l'extraction de la ligne que tu veux (humm je dirais la 1iere, donc un head ...)

    K.
    • [^] # Re: TOP

      Posté par  . Évalué à 0.

      Merci c'est parfait. Désolé je suis débutant...
  • # Commentaire supprimé

    Posté par  . Évalué à 2.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: SNMP

      Posté par  . Évalué à 2.

      Il est vrai que c'est un bon réflexe que d'aller voir du coté de SNMP pour ce genre de questions, mais là tu tombes mal : hrProcessorLoad ne fonctionne pas dans net-snmp sous Linux.
      Il vaut mieux taper dans la MIB UC Davis : .iso.org.dod.internet.private.enterprises.ucdavis.laTable (.1.3.6.1.4.1.2021.10) qui te donnera le load average sur 1, 5 et 10 minutes.
      Sinon, tu as .1.3.6.1.4.1.2021.11.53 (ssCpuRawIdle) qui te donne le temps pendant lequel le CPU a été inactif, mais cela t'oblige à lire 2 fois la grandeur et à faire une division.
      • [^] # Commentaire supprimé

        Posté par  . Évalué à 2.

        Ce commentaire a été supprimé par l’équipe de modération.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.