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

 C Discussion :

RAM et CPU langage C


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 47
    Points
    47
    Par défaut RAM et CPU langage C
    Bonjour
    J'aimerais savoir, en C, comment on fait pour utiliser bp de RAM et du CPU ?
    J'imagine que pour le CPU, il suffit de faire un tas de calculs (ou un calcul simple en boucle) ... et pour la RAM, faire des malloc enorme ?

    Qqn peut-il me confirmer ?

    Merci pour votre aide
    pepito

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Beaucoup, c'est relatif.

    Tu veux utiliser 100% ? Un nombre d'instruction/d'octets précis ?

    Tu voudrais faire quoi ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 47
    Points
    47
    Par défaut
    Oui, par exemple.
    Mon but est de pouvoir utiliser de la RAM, via un fichier de configuration qui specifie la taille de la RAM (en Mo par exemple) a occuper pour le traitement.

    Apparemment, la configuration pour utiliser le CPU se fait en effectuant des calculs en boucle. ... mon soucis est pour la RAM ?! Un malloc suffirait pour faire ca ?

    Merci encore

  4. #4
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Je dirais oui.

    En outre, il faut peut-être voir si tu n'a pas besoin de locker l'accès à la RAM. De cette manière ton application (appelons la "gloutone") ne risque pas de voir son espace alloué sortis de la RAM. Voir à ce sujet mlock et cie (pour du Linux) par exemple.

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par pepito31 Voir le message
    Bonjour
    J'aimerais savoir, en C, comment on fait pour utiliser bp de RAM et du CPU ?
    J'imagine que pour le CPU, il suffit de faire un tas de calculs (ou un calcul simple en boucle) ... et pour la RAM, faire des malloc enorme ?
    Je ne sais pas ce que tu cherches à faire, mais la RAM n'est pas la seule mémoire que peut utiliser le CPU. Il peut aussi utiliser la mémoire virtuelle sur disque (swap).

    D'autre part, sur certains systèmes, on peut allouer ce qu'on veut, l'allocation ne devient effective que lors de l'utilisation de la mémoire...
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 47
    Points
    47
    Par défaut
    Re !

    Pour etre plus precis sur ce que je dois faire... je dois simuler un traitement de donnees qui peut utiliser pas mal de RAM et/ou du CPU (selon le type de donnees que je recupererai un jour - mais pour le moment, je ne fais que simuler).
    Ce traitement peut etre tres gourmand en ressources memoires, et peut ne pas l'etre (tout depend encore des donnees que j'aurai en entree). Pour simuler tous les cas possibles, et les performances des API qui recuperent ce traitement, il me faut pouvoir faire comme si les donnees existaient et avaient besoin de bp de RAM et/ou CPU pour generer d'autres donnees.
    Mon soucis, c'est qu'aujourd'hui, je ne sais pas si telle ou telle donnee en entree bouffe bp de memoire (d'ou la possibilite de le configurer en lui indiquant fictivement la taille de RAM qu'elle est sensée utiliser).
    Ma question etait donc : comment simuler une grosse charge en RAM et CPU (les deux etant configurables separement) ?

    Je ne sais pas si j'ai ete clair ...
    Merci encore pour vos infos :-)

    En tout cas, (je suis sous Linux) dans mon programme C, j'ai fait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *t;
    t=malloc(400000);
    et ca n'a pas l'air de faire grand chose ...
    comment puis je verifier que la ram est belle et bien utilisee ??
    Merci

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    bah, si tu veux bloquer la machine, c'est facile :

    la memoire disponible, comme l'a deja mentionne Emmanuel, est la somme de RAM + swap.

    Tu calcules ca, et tu fais un prog qui alloue cette taille..

    Ca crashera ou bloquera, au choix...

    Quant au CPU, un simple
    while(1)

    fera l'affaire...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 47
    Points
    47
    Par défaut
    Oui,mais il semblerait qu'un malloc(4000000) ne suffise pas a l'arreter ??
    Comment connaitre la valeur de mon swap ?

    Merci

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Windows ou unixoide ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    si je comprends bien tu veux monter en charge une machine en l'occurence pour la préparer à un flux de données et des traitements qui viendraient et donc simuler une monter de la RAM/SWAP et CPU.

    ca dépend du temps et des connaissances que tu as mais tu peux faire un système client/serveur de sockets pour faire monter progressivement la charge du PC. A chaque nouvelle tâche tu alloues un bloc de mémoire préconfiguré (RAM/SWAP) et tu effectues un peu de traitement


    bon courage
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  11. #11
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par pepito31 Voir le message
    Oui,mais il semblerait qu'un malloc(4000000) ne suffise pas a l'arreter ??
    Comment connaitre la valeur de mon swap ?

    Merci
    Il faut écrire dedans !

    Tu as sur cette page un exemple pour s'approprier de la ram.

    Pour gérer finement et dynamiquement l'utilisation de la swap, de la ram et compagnie, ce ne doit pas être évident. L'exemple ci dessus bloque la mémoire et donc tu n'aura pas de swap.

    Dans ton cas si tu veux simuler le swap (ce qui peut être intéressant pour se rapprocher de la réalité) je verrai bien un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int i = 0;
    unsigned char *buffer = (unsigned char)malloc(une_certaine_taille);
    while(1)
    {
      for (i=0; i < une_certaine_taille; i+=page_size)
      {
        buffer[i] = 0;
      }
    }
    Mais ce n'est pas évident de déterminer l'utilisation du swap puisque cela va dépendre des autres applications qui tournent sur ton poste.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 47
    Points
    47
    Par défaut
    Super !
    Merci pour ces infos.
    J'ai tenté le code que tu m'as filé, valefor et meme si je n'arrive pas a atteindre le max de RAM (certainement parce que je n'accede pas au swap), la charge en RAM est effective.

    Merci a tous pour vos conseils
    pepito

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

Discussions similaires

  1. Récuperer l'utilisation RAM et CPU avec précision d'un process?
    Par Rownlin dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 30/09/2013, 21h16
  2. Obtenir usage RAM et CPU d'un process ?
    Par Invité dans le forum C
    Réponses: 5
    Dernier message: 23/08/2011, 14h11
  3. Mesure de la RAM et CPU pour tests unitaires
    Par polymorphisme dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 06/06/2011, 09h38
  4. ralentissement WIN XP sans saturation RAM ou CPU
    Par lecosmotien dans le forum Windows XP
    Réponses: 3
    Dernier message: 11/02/2009, 19h00
  5. Différence RAM et CPU ?
    Par shadockgreg dans le forum Composants
    Réponses: 3
    Dernier message: 27/05/2008, 09h40

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