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 :

Ressources utilisées par 1 process


Sujet :

Linux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Ressources utilisées par 1 process
    bonjour,

    je developpe un programme dans le quel je dois connaitre les ressources systemes utilisées par le process (memoire, temps cpu, swap ..etc). la seule fonction que j'ai trouvé est "getrusage" mais cette derniere ne donne que le temps cpu et le swap (a partir du noyau 2.4) il me reste donc la memoire.

    si quelqu'un connait une fonction qui me donne la memoire utilisée ?


    [Message déplacé du forum C par Gangsoleil]

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    Points : 26
    Points
    26
    Par défaut
    Quel langage utilises-tu : C , C++, Script Shell.....

  3. #3
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Si ca vient du forum C et que l'entente du post est [C], je suppute que le langage utilisé soit du C
    Grave urgent !!!

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Katyucha
    Si ca vient du forum C et que l'entente du post est [C], je suppute que le langage utilisé soit du C
    tu as tout compris

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Si le manque de portabilite ne te gene pas, tu trouveras surement ton bonheur dans /proc/self/.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    en fait il me faut une fonction C qui me donne la taille de memoire utilisée, sinon j'aurais recuperer les données stockées dans /proc/meminfo mais le probleme c'est que lire un fichier et le parser est beaucoup trop lent.

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Procfs est un systeme de fichiers virtuel, donc il n'y a pas vraiment d'IO. Tout depend a quelle frequence tu le fais, mais j'ai des appli graphiques de monitoring de temperature et d'etat de batterie qui rafraichissent leur etat depuis /proc toutes les 5 secondes... et je pourrais meme faire toutes les secondes sans probleme, a mon avis (a ce niveau, c'est l'affichage qui eset discriminant, pas les acces /proc).

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    moi ce que je veux c'est juste la memoire consommée par mon processus et non pas tous les process, il faut que je fasse ca a une frequence assez elevée 5 fois par seconde voir plus.
    et le but de tout ca est de connaitre les ressources systeme consommées par mon application.

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par bachirOLip6
    moi ce que je veux c'est juste la memoire consommée par mon processus et non pas tous les process,
    /proc/self se refere au processus courant.
    Le ficheir statm devrait etre ce que tu cherches (http://www.pointer.gr/documents/RedH...rectories.html).
    Citation Envoyé par bachirOLip6
    il faut que je fasse ca a une frequence assez elevée 5 fois par seconde voir plus.
    Comme le ficheir ne fait qu'une ligne, et en plus assez courte (qui plus est le tout premier champ devrait etre ce dont tu as besoin), tu peux faire une fonction d'essai assez vite: fopen pour ouvrir le fichier, tu lis la ligne avec fgets (dans un char[10] ou plus si tu as besoin des champs suivants) puis strtol, et fclose (en ajoutant evidemment les tests d'erreurs).
    Certes, ce n'est pas portable, mais si ton appli est destinee a ne tourner que sur Linux, ca vaut le coup d'essayer (ou alors faut voir dans POSIX...).

  10. #10
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Salut

    Bon ben quand tu alloue, tu sais ce que tu alloue .... puisque ce que tu passe a malloc pour allouer c'est justement la taille a alouer....

    Aloue la taille d'un int (taille qui depends de la machine)... donc sur ton PC, tu sais que tu viens de prendre 4 octets (puisque c'est ce que tu as demande)... Bref, la memoire occupee par un programme ca se calcule, ca s'evalue, ca se reflechit, mais on ne s'ennuie generalement pas a la mesurer....

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  11. #11
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    N'y a-t-il pas des problèmes annexes d'alignement de mémoire par exemple, qui font que l'espace occupé en définitive est plus important que prévu ? :

    --
    Jedaï

  12. #12
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    non à moin d'avoir ecrit ton programme n'importe comment style programmation bilousoft...

    il n'y a tjrs occupé au maximum lors de l'execution que le programme lui même la somme de la taille des variables et la somme des tailles de fichiers ouverts.... pour chaque programme
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    calculer la memoire allouée est impossible a faire dans mon cas, car mon programme n'est pas codé en C et de plus il faut compter la taille de la pile (variables locales).

    je vais passer pour quelqu'un de tetu mais il me faut une fonction C qui me donne la memoire consommée par mon processus et pas autre chose.

    pour l'instant la solution qui consist a lire le fichier /proc/statm est envisageable mais risque d'etre un peu trop couteuse.

  14. #14
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Salut,

    Ben par procfs ça paraît une bonne solution, et niveau temps, je ne pense pas que ce soit trop couteux, tu n'as qu'a essayer :
    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 <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    #define MEM_LOC "/proc/self/statm"
     
    int main(int argc, char **argv)
    {
    	FILE *fp;
    	int size=0;
    	clock_t start, end;
     
    	start=clock();	
     
    	fp=fopen(MEM_LOC, "r");
    	if(!fp)
    	{
    		fprintf(stderr, "Ne peut pas ouvrir le fichier.\n");
    		exit(EXIT_FAILURE);
    	}
     
    	if(fscanf(fp, "%d %*s", &size)==EOF)
    	{
    		fprintf(stderr, "Le fichier n'a pas pu etre lu.\n");
    		exit(EXIT_FAILURE);
    	}
    	fclose(fp);
     
    	end=clock();
     
    	printf("SIZE : %d \t TIME : %.4f s.\n", size, (double)(end-start)/(double)CLOCKS_PER_SEC);
     
    	return EXIT_SUCCESS;
    }
    T.
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

  15. #15
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Sûrement efficace.

    Un bémol, néanmoins :
    Depuis le noyau 2.6, ce n'est plus vraiment /proc qui est utilisé, mais /sys...
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  16. #16
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    C'est deja pas tres portable, alors s'il se limite a une version du noyau...

  17. #17
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par ALT
    Un bémol, néanmoins :
    Depuis le noyau 2.6, ce n'est plus vraiment /proc qui est utilisé, mais /sys...
    Personnellement j'utilise un noyau 2.4 (OpenMosix oblige) donc ce code fontionne très bien ! Après c'est à chacun d'adapter suivant son système.

    T.
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

  18. #18
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Au passage, si quelqu'un a de la bonne doc sur la bonne maniere de soutirer des infos sur le matos a sysfs en userland, je suis preneur

  19. #19
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Citation Envoyé par Tchetch
    Citation Envoyé par ALT
    Un bémol, néanmoins :
    Depuis le noyau 2.6, ce n'est plus vraiment /proc qui est utilisé, mais /sys...
    Personnellement j'utilise un noyau 2.4 (OpenMosix oblige) donc ce code fontionne très bien ! Après c'est à chacun d'adapter suivant son système.

    T.
    Oui, mais il me semble (!) que la question était d'avoir une solution portable...
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    bein je crois que j'ai pas trop le choix, en plusj'ai trouve sur un autre forum un post expliquant que /proc/ est un bout de memoire du systeme mounté comme un pseudo fs donc l'incovenient de la rapidité de la technique ne se pose plus.

    merci a tous de votre aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Login utilisé par les process internes
    Par Oratorio dans le forum Oracle
    Réponses: 0
    Dernier message: 10/07/2012, 11h22
  2. Réponses: 10
    Dernier message: 08/06/2011, 12h08
  3. Libérer ressource utilisé par ImageSource
    Par Ikit dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 30/07/2010, 19h56
  4. Identifier les fichiers en cours d'écriture par un process ext
    Par sinmaniphel dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 24/01/2007, 09h22
  5. Réponses: 1
    Dernier message: 31/10/2006, 16h25

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