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

Shell et commandes GNU Discussion :

time mais pour la mémoire


Sujet :

Shell et commandes GNU

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Par défaut time mais pour la mémoire
    Bonjour,

    Est-ce qu'il existe une commande comme time mais qui calcule la mémoire maximale utilisée ?

    De sorte que je puisse faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "mémoire" g++ hello.cpp
    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Quelle mémoire?
    • Mémoire physique?
    • Mémoire virtuelle?
    • Mémoire partagée?
    • Mémoire swap?
    • Pourcentage de la mémoire totale?


    Tu peux faire une photo à un moment donné d'un processus par la commande ps (man ps pour les options et personnalisations):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ ps -p 1736 -o pid,ucmd,rss,vsize,%mem
      PID CMD               RSS    VSZ %MEM
     1736 links2          10656  18256  3.3
    Si tu veux tracer le processus, tu peux utiliser top puis filtrer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ top -b -n 5 -d 0.1 -p 1736 |sed '/^ /!d'|sed '3~2d'
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                
     1736 florian   20   0 18256  10m 2884 S  0.0  3.3   0:10.48 links2                                                                                                                 
     1736 florian   20   0 18256  10m 2884 S  0.0  3.3   0:10.48 links2                                                                                                                 
     1736 florian   20   0 18256  10m 2884 S  0.0  3.3   0:10.48 links2                                                                                                                 
     1736 florian   20   0 18256  10m 2884 S  0.0  3.3   0:10.48 links2                                                                                                                 
     1736 florian   20   0 18256  10m 2884 S  0.0  3.3   0:10.48 links2
    Ici, une ligne toute les dixièmes de seconde.

    Au fait, si tu veux récupérer le pid du processus, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ g++ moncode &
    $ jobs -p %%
    1736
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ g++ moncode &
    $ echo $!
    1736
    Sinon, tu peux installer, à partir des dépots, memstat ou smem, comme décrit dans cet article

    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
    $ memstat -wp 1302
        416k: PID  1302 (/bin/bash)
        232k(    220k): /lib/libncurses.so.5.7 1302
         40k(     32k): /lib/libnss_nis-2.11.3.so 1302
         16k(      8k): /lib/libdl-2.11.3.so 1302
         84k(     76k): /lib/libnsl-2.11.3.so 1302
         48k(     40k): /lib/libnss_files-2.11.3.so 1302
        116k(    108k): /lib/ld-2.11.3.so 1302
       1288k(   1272k): /lib/libc-2.11.3.so 1302
         32k(     24k): /lib/libnss_compat-2.11.3.so 1302
         28k(      0k): /usr/share/locale/fr/LC_MESSAGES/bash.mo 1302
         28k(     28k): /usr/lib/gconv/gconv-modules.cache 1302
        140k(      0k): /usr/share/locale/fr/LC_MESSAGES/libc.mo 1302
       1492k(      0k): /usr/lib/locale/locale-archive 1302
        796k(    776k): /bin/bash 1302
    --------
       4756k (   2584k)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ smem -kntP [b]ash
      PID User     Command                         Swap      USS      PSS      RSS 
     1302 1000     bash                               0     1.1M     1.2M     2.0M 
    -------------------------------------------------------------------------------
       39 1                                           0     1.1M     1.2M     2.0M

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Par défaut
    Boujour,

    Merci beaucoup pour cette réponse.
    Que veut dire le pid du processus?
    (Est-ce la mémoire maximale utilisé par mon programme lors de la compilation de mon code?)

    Merci.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Le pid est le Process identifier, c'est-à-dire le numéro alloué à chaque prcessus pour l'identifier (le nom n'étant pas forcément unique).
    Lorsque linux démarre, le processus s'appelle 'init' et porte le numéro 1. Quand il se termine, l'ordi est probablement en train de s'éteindre.
    Un pid de 2000 signifie qu'au moins 2000 processus ont été lancés, qu'ils soient encore vivants ou non.

    Tu as commencé la discussion en parlant de 'time'. Mais 'time' ne fait que la différence entre la fin et le début. Il n'y a pas de système qui trace ton processus de bout en bout.
    Si tu veux 'le max de mémoire', il faudra prendre autant de mesures que nécessaires. Voilà pourquoi j'ai proposé une solution avec 'ps', mais aussi avec 'top'. Tu remarqueras dans mon exemple, que la mémoire ne change pas. Mais ce n'est qu'un exemple.

    À toi d'adapter à tes besoins.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Par défaut
    Est-ce que les 2000 processus lancés sont tous de la meme taille?
    Combien de processus prend l'allocation d'une variable?
    Pourquoi le résultat n"est-t'il pas en byte?

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par xavierdestev Voir le message
    Est-ce que les 2000 processus lancés sont tous de la meme taille?
    Non.
    Combien de processus prend l'allocation d'une variable?
    Cette question n'a pas de sens.
    Pourquoi le résultat n"est-t'il pas en byte?
    Quel résultat ?

    Il faudrait que tu expliques mieux ce qui motive ta question. Quel est le problème que tu souhaites résoudre ?

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Par défaut
    Bonjour,

    En fait, j'ai relu la réponse de floralab et c'est le pourcentage de la mémoire totale qui m'intéresse. (comme ca je peutx avoir le nombre de Go utiliisé.)

    Si j'ai bien compris, j'identifie le pid avec jobs puis je fais ps.

    Merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un "time" pour la mémoire?
    Par dodo285 dans le forum Linux
    Réponses: 3
    Dernier message: 09/07/2013, 08h48
  2. Changer de langage, mais pour lequel ?
    Par reptils dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/02/2006, 16h01
  3. Réponses: 1
    Dernier message: 26/11/2005, 20h18
  4. BeginUpdate mais pour les TWinControl
    Par Arrown dans le forum Composants VCL
    Réponses: 12
    Dernier message: 14/04/2005, 23h08
  5. Cherche composant comme TComPort mais pour l'USB
    Par Walm dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/04/2004, 15h57

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