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 :

Consommations de CPU et de mémoire d'un machine


Sujet :

Linux

  1. #1
    Membre éclairé

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut Consommations de CPU et de mémoire d'un machine
    Bonjour,

    On me demande un programme sous Linux écrit en C qui donnerait les consommations de CPU et de mémoire de la machine sur laquelle il s'execute...

    Je ne connais pas la lib qui permettrait d'avoir ces informations ?

    Merci !

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour

    Tournes-toi vers proc pour commencer.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre confirmé Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut
    sujet interressant, car j'aimerrais comprendre comment récupérer des informations systeme en C.


    j'ai trouvé ce programme mais je n'arrive pas a le compiler :
    je suis sous ubuntu 10

    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
    29
    30
    31
    32
    33
        #include <stdio.h>
        #include <sys/sysinfo.h>
        #include <linux/kernel.h>
        int
    main (void)
    {
        struct sysinfo info;
        if (sysinfo(& info) != 0) {
            perror("sysinfo");
            exit(EXIT_FAILURE);
        }
        fprintf(stdout, "Nb secondes depuis boot    : %ld \n",
            info.uptime);
        fprintf(stdout, "Charge système depuis 1 mn : %.2f%%\n",
            info.loads[0] / 655.36);
        fprintf(stdout, "                      5 mn : %.2f%%\n",
            info.loads[1] / 655.36);
        fprintf(sdout, "                      10 mn : %.2f%%\n",
            info.loads[2] / 655.36);
        fprintf(stdout, "Mémoire disponible         : %ld Mo\n",
            info.freeram >> 20);
      fprintf(stdout, "Mémoire partagée      : %ld Mo\n",
          info.sharedram >> 20);
      fprintf(stdout, "Mémoire dans buffers  : %ld Mo\n",
          info.bufferram >> 20);
      fprintf(stdout, "Espace de swap total  : %ld Mo\n",
          info.totalswap >> 20);
      fprintf(stdout, "Espace de swap libre  : %ld Mo\n",
          info.freeswap >> 20);
      fprintf(stdout, "Nb processus en cours : %d \n",
          info.procs);
      return EXIT_SUCCESS;
    }

    et j'ai ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ---  compilation main.c  ---
    main.c: In function ‘main’:
    main.c:10: warning: implicit declaration of function ‘exit’
    main.c:10: warning: incompatible implicit declaration of built-in function ‘exit’
    main.c:10: error: ‘EXIT_FAILURE’ undeclared (first use in this function)
    main.c:10: error: (Each undeclared identifier is reported only once
    main.c:10: error: for each function it appears in.)
    main.c:18: error: ‘sdout’ undeclared (first use in this function)
    main.c:32: error: ‘EXIT_SUCCESS’ undeclared (first use in this function)
    make: *** [lib/main.o] Erreur 1

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 261
    Billets dans le blog
    181
    Par défaut
    Il semble que dans le code que vous avez copier, ou celui que vous utilisez y a des fautes un peu partout.
    Il faut rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <stdlib.h>
    Avec les autres includes.

    Ligne 18: A la place de stout, il faut mettre stdout.

    Voilà
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre confirmé Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut
    merci, ça marche NIKEL !!

    le code complet :

    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
    29
    30
    31
    32
    33
    34
    	#include <stdlib.h>
        #include <stdio.h>
        #include <sys/sysinfo.h>
        #include <linux/kernel.h>
        int
    main (void)
    {
        struct sysinfo info;
        if (sysinfo(& info) != 0) {
            perror("sysinfo");
            exit(EXIT_FAILURE);
        }
        fprintf(stdout, "Nb secondes depuis boot    : %ld \n",
            info.uptime);
        fprintf(stdout, "Charge système depuis 1 mn : %.2f%%\n",
            info.loads[0] / 655.36);
        fprintf(stdout, "                      5 mn : %.2f%%\n",
            info.loads[1] / 655.36);
        fprintf(stdout, "                      10 mn : %.2f%%\n",
            info.loads[2] / 655.36);
        fprintf(stdout, "Mémoire disponible         : %ld Mo\n",
            info.freeram >> 20);
      fprintf(stdout, "Mémoire partagée      : %ld Mo\n",
          info.sharedram >> 20);
      fprintf(stdout, "Mémoire dans buffers  : %ld Mo\n",
          info.bufferram >> 20);
      fprintf(stdout, "Espace de swap total  : %ld Mo\n",
          info.totalswap >> 20);
      fprintf(stdout, "Espace de swap libre  : %ld Mo\n",
          info.freeswap >> 20);
      fprintf(stdout, "Nb processus en cours : %d \n",
          info.procs);
      return EXIT_SUCCESS;
    }
    mais n'ya t'il pas une doc plus précise sur la librairie :
    #include <sys/sysinfo.h>
    #include <linux/kernel.h>

    merci d'avance

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 261
    Billets dans le blog
    181
    Par défaut
    Citation Envoyé par Mika2008 Voir le message
    mais n'ya t'il pas une doc plus précise sur la librairie :
    #include <sys/sysinfo.h>
    #include <linux/kernel.h>
    Sur les fichiers non, mais sur les fonctions déclaré par le fichier oui.
    man la_fonction
    Donc faudra ouvrir le fichier et voir
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre confirmé Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut
    ça donne pas forcemment les bonnes valeurs est ce que je l'utilise mal ?

    La je veux la taille mémoire total et la consomation tps réel :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    ...
     
     
    struct sysinfo info;
    if (sysinfo(& info) != 0) {
        perror("sysinfo");
        exit(EXIT_FAILURE);
    }
    fprintf(stdout, "Nb secondes depuis boot    : %ld \n",
        info.uptime);
    fprintf(stdout, "Charge système depuis 1 mn : %.2f%%\n",
        info.loads[0] / 655.36);
    fprintf(stdout, "             5 mn : %.2f%%\n",
        info.loads[1] / 655.36);
    fprintf(stdout, "             10 mn : %.2f%%\n",
        info.loads[2] / 655.36);
    fprintf(stdout, "Mémoire partagée      : %ld Mo\n",
        info.sharedram >> 20);
    fprintf(stdout, "Mémoire dans buffers  : %ld Mo\n",
        info.bufferram >> 20);
    fprintf(stdout, "Espace de swap total  : %ld Mo\n",
        info.totalswap >> 20);
    fprintf(stdout, "Espace de swap libre  : %ld Mo\n",
        info.freeswap >> 20);
    fprintf(stdout, "Nb processus en cours : %d \n",
        info.procs);
     
    fprintf(stdout, "Total Ram : %d \n",
        info.totalram);    
    fprintf(stdout, "Free Ram : %d \n",
        info.freeram);  
     
    fprintf(stdout, "Total SWAP : %d \n",
        info.totalswap);  
     
        fprintf(stdout, "Free SWAP : %d \n",
        info.freeswap); 
     
    ...
    ce qui donne en résultat :
    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
     
    Nb secondes depuis boot    : 3616 
    Charge système depuis 1 mn : 176.22%
                 5 mn : 164.40%
                 10 mn : 164.31%
    Mémoire partagée      : 0 Mo
    Mémoire dans buffers  : 0 Mo
    Espace de swap total  : 0 Mo
    Espace de swap libre  : 0 Mo
    Nb processus en cours : 352 
    Total Ram : 515418 
    Free Ram : 12144 
    Total SWAP : 806910 
    Free SWAP : 806204 
    ./main <fichier mtab>

    pour total ram , j'ai 2 gigas et la il m'indique 515 MO ?
    pour le swap, je compre pas aussi pourquoi il donne les même valeurs, et pour la conso mémoire partagée buffers, il ne trouve rien :'(

    si quelqu'un peut m'aiguiller merci d'avance.

Discussions similaires

  1. Connaitre le cpu et la mémoire consommée sur une machine linux
    Par supcomingenieur dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 20/06/2013, 10h54
  2. Réponses: 9
    Dernier message: 05/03/2013, 12h07
  3. [LV 8.6] Consommation du CPU à 100%
    Par K-RK-S dans le forum LabVIEW
    Réponses: 2
    Dernier message: 02/09/2009, 09h32
  4. Problème de consommation de CPU
    Par JOHN14 dans le forum Outlook
    Réponses: 3
    Dernier message: 04/03/2008, 18h25
  5. Pause dans une boucle (sans consommer de CPU !)
    Par petitprince dans le forum Delphi
    Réponses: 18
    Dernier message: 18/12/2006, 19h41

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