Forum général.cherche-logiciel commande procinfo

Posté par  .
Étiquettes : aucune
0
3
mai
2006
Bonjour,

Je cherche à récupérer la charge cpu d'une machine avec un script shell. Dans ce script j'exécute le programme procinfo ; le problème est que les valeurs (en pourcentage) de user, nice et system et idle ne change pas...

en idle j'ai toujours 96.3% en user 3.1%... depuis 1 semaine avec des vérifications toutes les 5 minutes...

Quelqu'un voit pourquoi? procinfo ne metterai pas à jour ces valeurs? je trouverai étrange que ces valeurs ne changent jamais...


[root@machineA etc]# procinfo
Linux 2.6.12-1.1381_FC3smp (bhcompile@porky) (gcc 3.4.4 20050721 ) #1 SMP Fri Oct 21 04:03:26 EDT 2005 2CPU [machineA]

Memory: Total Used Free Shared Buffers
Mem: 4090092 1758620 2331472 0 404572
Swap: 2088408 1108 2087300

Bootup: Fri Mar 24 10:37:52 2006 Load average: 0.00 0.04 0.10 1/112 17251

user : 2d 12:18:04.52 3.1% page in : 0
nice : 0:14:50.69 0.0% page out: 0
system: 10:00:35.47 0.5% swap in : 0
idle : 77d 8:01:17.79 96.3% swap out: 0
uptime: 40d 3:21:57.83 context :3194903451

irq 0:3468461126 timer irq 12: 2271 i8042
irq 1: 76 i8042 irq 15: 31188994 ide1
irq 4: 2 irq169: 0 ohci_hcd:usb1, ohci_
irq 6: 3 irq177: 19706112 ioc0
irq 8: 23127 rtc irq185: 94011369 eth0
irq 9: 0 acpi
  • # charge moyenne

    Posté par  (site web personnel) . Évalué à 1.

    Avec procinfo, tu obtiens la moyenne depuis le boot de ta machine.
    Depuis 40 jours que ta machine est allumée, elle a passé 96,3% de son temps en idle.
    Si elle fait à peu près la même chose tous les jours, c'est normal que au bout d'une semaine, ces valeurs ne changent pas : une semaine plus tard, elle aura toujours passé 96.3% de son temps en idle.

    Si tu veux la charge instantannée, utilise plutôt "uptime".
    • [^] # Re: charge moyenne

      Posté par  . Évalué à 1.

      merci pour ta réponse.

      Si je n'm'abuse uptime ne me donne pas le pourcentage instantamné d'idle...

      # uptime
      15:48:29 up 40 days, 4:10, 2 users, load average: 0.02, 0.08, 0.08


      la commande "sar" me le donne... mais seulement toutes les 10 minutes... La commande m'affiche un résumé de la charge depuis 0h00.

      Je chercherais un moyenne plus restreinte (toutes les 5 minutes voir moins)

      Cela existerait? Je sais que la charge instamné est accessible avec top... mais il doit bien y avoir des outils comme sar qui font des moyennes...

      Merci de votre aide.
      • [^] # Re: charge moyenne

        Posté par  . Évalué à 1.

        En exécutant la commande :

        /usr/bin/sar | /usr/bin/tail -n 2 | /usr/bin/head -n 1 | /bin/sed 's/\ \ */ /g'

        (PS: trouvé ici --> http://www.xenux.net/index.php?links=6&skin=&id=78)


        je récupère le %tage moyen d'idle des 10 dernières minutes... J'aurais préféré récupérer le %tage moyen des 5 dernières si c'était possibles...
        une idée?
        • [^] # Re: charge moyenne

          Posté par  . Évalué à 2.

          vmstat $(( 5 * 60 )) | awk '{print $NF}'
          • [^] # Re: charge moyenne

            Posté par  . Évalué à 1.

            merci mais ta comande ne me donne pas "instantamnément" la charge moyenne des cinqs dernières minutes...

            mais merci pour ta commande car je ne la connaissais pas. :)


            je cherche encore...
      • [^] # Re: charge moyenne

        Posté par  . Évalué à 2.

        Je sais que la charge instamné est accessible avec top... mais il doit bien y avoir des outils comme sar qui font des moyennes...

        Tu as la charge moyenne des 1, 5 et 15 dernières minutes avec par exemple "cat /proc/loadavg" ou la commande "w".

        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).

        J'ai un script shell qui fait ça toutes les secondes pour adapter la vitesse du CPU à la charge instantanée (ou presque, la charge sur une seconde en fait) :

        last_total_time=0
        last_idle_time=0
        while sleep 1 ; do
        . procstat=($(grep cpu0 /proc/stat))
        . user_time=${procstat[1]}
        . nice_time=${procstat[2]}
        . system_time=${procstat[3]}
        . idle_time=${procstat[4]}

        . idle_time=$[idle_time + nice_time]
        . total_time=$[user_time + system_time + idle_time]

        . total_elapsed=$[total_time - last_total_time]
        . last_total_time=$total_time
        . idle_elapsed=$[idle_time - last_idle_time]
        . last_idle_time=$idle_time

        . idle_ratio=$[100 * idle_elapsed / total_elapsed]
        done


        idle_ratio est une valeur entre 0 (CPU à 100%) et 100 (CPU idle), sur laquelle je fais des tests ensuite.
        • [^] # Re: charge moyenne

          Posté par  . Évalué à 1.

          Merci pour ton script, il est vraiment bien!
          Ce n'est pas idéalement ce que je cherche à faire dans l'immédiat... mais ton script me servira surement par la suite... merci.

          en fait je voudrait éviter "d'attendre" et avoir une moyenne sur quelques minutes (quitte également à faire des calculs)

          J'utilise nagios pour ordonnancer l'exécution d'un script cherchant et affichant la charge cpu. Et, je pense qu'une vérification (c'est à dire une exécution du script) toutes les 5 minutes me paraît bien...

          Pour l'instant mes vérifications se font que toutes les 10 minutes avec :
          /usr/bin/sar | /usr/bin/tail -n 2 | /usr/bin/head -n 1 | /bin/sed 's/\ \ */ /g'

          car "sar" me donne la charge moyenne "que" toute les 10 minutes et il est inutile pour moi de lancer le script avec un intervalle inférieur à 10 minutes. :)

Suivre le flux des commentaires

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