IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Quelques explications au sujet de sysinfo()


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Quelques explications au sujet de sysinfo()
    Bonjour,
    j'aimerais quelques précisions au sujet de la fonction sysinfo().
    Je m'explique; j'ai programmé cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    void get_sys_informations(sys_informations * sys_info)
    {
       if(sysinfo(sys_info)==0)
       {
          printf(sys_info_format,
             sys_info->uptime,
             sys_info->loads[0]/1000,
             sys_info->loads[1]/1000,
             sys_info->loads[2]/1000,
             (sys_info->totalram - sys_info->freeram)/MEGABYTE,
             (sys_info->totalram)/MEGABYTE,
             (sys_info->sharedram)/MEGABYTE,
             (sys_info->bufferram)/MEGABYTE,
             (sys_info->totalswap - sys_info->freeswap)/MEGABYTE,
             (sys_info->totalswap)/MEGABYTE,
             sys_info->procs,
             (sys_info->totalhigh - sys_info->freehigh)/MEGABYTE,
             (sys_info->totalhigh)/MEGABYTE,
             sys_info->mem_unit
          );
       }
       else
       {
          printf("[EE] Can't get system informations.\n");
          exit(EXIT_FAILURE);
       }
    }
    Donc voila c'est au sujet de sys_info->loads. comme montré dans ma fonction je divise par 1000 ce qui a l'air (je dis bien l'air) de me donner la moyenne d'utilisation de mon proco depuis respectivement 1 5 et 15 minutes. seulement voilà, si je m'amuse a faire tourner le proco a fond il arrive que la valeur dépasse les 100% (record: 185%). donc j'aimerais quelques explications a ce sujet; que veux dire précisément ce sysinfo->loads[]

    voili voilou, j'espère avoir été suffisamment clair. merci pour vos futures réponses.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Le load average n'est pas un pourcentage et il peut tout à fait dépasser 1 (1 = 100%). C'est le nombre moyen de processus qui sont "runnable" (c'est à dire prêt à tourner sur le CPU) à chaque tour de dispatcher.

    Si ton système fait tourner seulement 1 processus qui ne fait que du calcul (pas d'I/O), le load average sera de 1 (100%), parce qu'à chaque dispatch il y a en moyenne 1 processus qui veut le cpu. Si en a deux, le load average sera de 2 (200%). Si tu as 15, il sera de 15 (1500%).

    En gros si tu prend le load average et que tu soustrait le nombre de CPUs dont tu disposes, ça te donne le nombre moyen de processus qui à chaque instant voudraient tourner mais ne peuvent pas, parce que le CPU fait tourner autre chose.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    mmmh bon ok, j'avais tout faux quoi... mais j'ai sysinfo->loads[0] qui fait disons 23982 par exemple, comment je dois l'interpréter?

    edit: et pourquoi il n'y a pas, a première vue, une très grande corrélation entre /proc/loadavg et sysinfo->load[] ???

    edit2: bon désolé pour mon ignorance... je suis allés voir la page du wiki en anglais (j'avais pas pensé tout de suite a allé voir ça), donc si je comprend bien il y a bel et bien une corrélation entre les deux, et ça a tout a fait un sens de dire que mon cpu a un average load de disons 300%, c'est donc qu'il est surchargé, et que un process a pu etre heuu "processé" et deux autre on dû attendre leurs tours au moment du dispatch? c'est bien ça?

    autre question du coup, ma fonction donne-t-elle bien la valeur attendu?

    reponse ... non. groumble groumble!

    $ cat /proc/loadavg ; ./test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    3.08 3.49 2.41 3/153 10449
     
    sys_info->loads[0]=201728
    Uptime: 13882 seconds
    Load averages:
    1 minute: 201% 5 minutes: 228% 15 minutes: 157%
    memory: 811MB used of 1504MB
    Shared memory: 0MB
    Memory used by buffers: 148MB
    Swap: 0MB used of 996MB
    Process count: 153
    High Mem: 0MB used of 0MB
    Size of a memory block: 1 byte
    il y a oune bogue! svp, aidez moi a y voir clair...

Discussions similaires

  1. [ORA-04031][USER: guest] : quelques explications
    Par PpPool dans le forum Administration
    Réponses: 4
    Dernier message: 25/03/2008, 13h26
  2. Quelques explications sur un script shell
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 03/07/2007, 19h54
  3. Quelques explications pour utilisation finale
    Par Cooly dans le forum Maven
    Réponses: 3
    Dernier message: 13/03/2007, 11h07
  4. Jointure tables quelques explications
    Par kokumbo dans le forum Hibernate
    Réponses: 2
    Dernier message: 13/10/2006, 17h09
  5. mod_rewrite : quelques explications
    Par webrider dans le forum Apache
    Réponses: 4
    Dernier message: 20/08/2006, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo