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 :

Quantité de mémoire installée


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 109
    Points : 48
    Points
    48
    Par défaut Quantité de mémoire installée
    Bonjour,

    J aimerai tester la quantité de memoire installe sur une machine ( aussi bien windows que linux, quitte a utiliser des focntion differante).

    sous linux j ai bien /proc/meminfo.
    mais je voudrai eviter de faire une lecture de fichier mais plustot utiliser uen focntion c++.

    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ça sert à quoi d'avoir cette information ?
    Boost ftw

  3. #3
    Membre averti

    Inscrit en
    Juillet 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 186
    Points : 350
    Points
    350
    Par défaut
    Bonjour,

    Le C++ est justement un langage qui est fait pour programmer sans avoir à s'occuper de détails relatifs au matériel ou à l'OS lui-même. Donc le C++ n'a pas de telle fonction. Il faut utiliser les fonctions de l'OS.

    Didier

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 109
    Points : 48
    Points
    48
    Par défaut
    Cette information n est utile car.
    j ai une application qui dois dispose de au minimum de 2go de ram pour focntionner sans faire des acces au disque (swap).
    donc je veux tester que la machien a bien 3go de ram installer au minimum.
    si pas de 3go de ram l'application dedois pas demmarer.

    peu etre existe t il une lib generaliste qui peu ne donner cette info ?

  5. #5
    Membre averti

    Inscrit en
    Juillet 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 186
    Points : 350
    Points
    350
    Par défaut
    Bonjour,

    Et même si la machine a 3Go de RAM. Qu'est-ce qui te dit qu'il n'y a pas déjà une application qui tourne et qui en utilise 2.5 ?

    Seuls des appels au système (donc dépendants de l'OS) pourront te renseigner. Ou comme tu le dis : une librairie système cross-platform. (Je ne suis même pas certain que tu aies accès à ces informations dans APR, ou ACE. Mais il y en a d'autres ...)

    Didier

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    si pas de 3go de ram l'application dedois pas demmarer.
    C'est totalement débile, si tu veux mon avis.

    Déjà ce que tu veux, c'est la quantité de mémoire libre à un moment donné. Sauf qu'entre le moment où tu demandes cette information et le moment où tu te mets à l'utiliser, il se peut que cette quantité de mémoire ne soit plus disponible.
    Ou alors tu peux avoir réussi à allouer toute ta mémoire en RAM, mais une autre application se lance et ça déplace certaines pages allouées à ton programme en swap... Laisse le système d'exploitation faire son travail. Tu veux 3GB de données, soit, mais laisse le système d'exploitation choisir s'il doit mapper certaines de ces pages sur disque ou pas.
    Boost ftw

  7. #7
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par lezurp Voir le message
    Cette information n est utile car.
    j ai une application qui dois dispose de au minimum de 2go de ram pour focntionner sans faire des acces au disque (swap).
    donc je veux tester que la machien a bien 3go de ram installer au minimum.
    si pas de 3go de ram l'application dedois pas demmarer.

    peu etre existe t il une lib generaliste qui peu ne donner cette info ?
    Salut
    Ce dont tu parles est du domaine de l'installation, tu dois faire ça avec un logiciel qui crée des executables d'installation, ex InstallShield, NSIS
    If you type Google into Google, you Can break the internet" - The IT Crowd

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par lezurp Voir le message
    Cette information n est utile car.
    j ai une application qui dois dispose de au minimum de 2go de ram pour focntionner sans faire des acces au disque (swap). donc je veux tester que la machien a bien 3go de ram installer au minimum. si pas de 3go de ram l'application dedois pas demmarer.
    Je rejoins Loufoque sur ce point : aller batailler pour retrouver cette information pour contourner exprès les fonctionnalités du système d'exploitation qui est en charge de gérer ta machine et purement et simplement bloquer le logiciel, c'est un non-sens absolu. Cette décision appartient à l'administrateur système. Je ne te dis même pas combien de temps j'ai perdu, en tant que technicien, à essayer d'installer, sur des postes correctement dimensionnés, des logiciels récalcitrants.

    En plus 3Go de mémoire, même aujourd'hui, ça reste très gros.

    Tu veux faire quoi exactement ?

    Citation Envoyé par buggen25 Voir le message
    Salut, Ce dont tu parles est du domaine de l'installation, tu dois faire ça avec un logiciel qui crée des executables d'installation, ex InstallShield, NSIS
    Pas forcément, car d'une part, ton PC peut évoluer (dans un sens comme dans l'autre), d'autre part, la décision revient quand même à l'utilisateur final, qui doit être prévenu (« Attention : ça risque de planter, tu veux essayer quand même ? ») et enfin : ça risquerait d'être TRÈS pénible à déployer sur un serveur d'applications.

  9. #9
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Pas forcément, car d'une part, ton PC peut évoluer (dans un sens comme dans l'autre), d'autre part, la décision revient quand même à l'utilisateur final, qui doit être prévenu (« Attention : ça risque de planter, tu veux essayer quand même ? ») et enfin : ça risquerait d'être TRÈS pénible à déployer sur un serveur d'applications.
    Déja dés l'installation on doit fixer ce problème, "you have not enough memory to install the application, continue, abort". De plus un programme qui te demande qu'il ne peut pas se lancer est un peu limite. En plus un programme qui m'affiche ce message (« Attention : ça risque de planter, tu veux essayer quand même ? ») de prime abord, j'ai peur, Ensuite je vais dans Ajout/Suppression de programmes.
    Par contre il y'a des programmes qui te demande ça, comme les jeux videos par exemple qui te dise que la carte graphique n'est pas suffisemment puissante. Tout a fait d'ac avec Obsidian
    If you type Google into Google, you Can break the internet" - The IT Crowd

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 109
    Points : 48
    Points
    48
    Par défaut
    bien oui en fait , je veux je veux le verifier a l'installation et a chaque demmarrage de mon application.

    je me fiche en fait de ce qui est lancer ou pas ca releve du probleme de l'utilisateur. je ne veux pas la memmoire libre a un temp t. ( j ai parle rde swap je n aurai pas du, desoller)

    je veux etre juste certain que mon api va s intaller sur une machine avec au minimum 4go de ram (et non 3go), et que a chaque demmarrage de mon appi il y a toujours 4 go de ram.
    Si il veux installer un exchange + faire tourner je ne sais trop quel serveur derrier c ets sont probleme.

    Ce que je veux c ets tout comme SMS2008 un message qui dit a l'install "pas possible d installer ca mon ami, tu n a pas assez de ram" sur linux et sur windoz. t je veux relancer cette procedure a chaque demarrage ( au cas ou un petit malin aurai enlever de la ram).

  11. #11
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par lezurp Voir le message
    bien oui en fait , je veux je veux le verifier a l'installation et a chaque demmarrage de mon application.

    je me fiche en fait de ce qui est lancer ou pas ca releve du probleme de l'utilisateur. je ne veux pas la memmoire libre a un temp t. ( j ai parle rde swap je n aurai pas du, desoller)

    je veux etre juste certain que mon api va s intaller sur une machine avec au minimum 4go de ram (et non 3go), et que a chaque demmarrage de mon appi il y a toujours 4 go de ram.
    Si il veux installer un exchange + faire tourner je ne sais trop quel serveur derrier c ets sont probleme.
    Tes trois paragraphes se contredisent tous. Décide-toi : « tu veux ou tu veux pas ? ».

    Ce que je veux c ets tout comme SMS2008 un message qui dit a l'install "pas possible d installer ca mon ami, tu n a pas assez de ram" sur linux et sur windoz. t je veux relancer cette procedure a chaque demarrage ( au cas ou un petit malin aurai enlever de la ram).
    Encore une fois, à moins d'avoir une raison valable, tu n'as pas à le faire : outre le fait que ce soit très agaçant, ça risque de poser problème dès que ton environnement différera un peu de celui sur lequel tu as développé ton application, et c'est à toi que l'on viendra demander des comptes : attends-toi à ne plus dormir pendant un bon moment !

    En plus, 3Go de RAM, c'est très gros, alors pour une seule application, c'est énorme ! C'est le maximum de mémoire que tu puisse adresser en 32 bits sur PC, une fois les périphériques PCI et autres pages mémoires mappées dans l'espace d'adressage. Ton soft est forcément mal conçu.

    Il va servir à quoi, ton logiciel ?

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 109
    Points : 48
    Points
    48
    Par défaut
    bon alors.

    l'application est en 64bit sous linux.
    C'est du traitement d'image (tres grand quantité a traite en simultané), reconstruction 3D, et autre jolie truc très sympa extrêmement gourmand. non ce n est pas une banal application avec un leek memory quelconque c'est rellement une application tres lourd ( juste les donnes brute font pres de 1go). Cela a ete vérifier et concret vérifier et optimisé.

    Le soft est fait pour tourné sur une workstation DEDIER imperativement pour un OS definie. rien ne doit tourner d autre que mon soft. Tout comme pour sms2008

    je veux tester a l'installation si il y a bien 4go de ram physiquement presente.
    je veux également tester a chaque démarrage de mon applilcation que j ai 4go de ram physiquement present.

    Il dois bien existe un truc pour connaitre la ram physiquement presente sous linux et windoz, plein de soft (de gros soft ) utilise ce genre de fonction.

    je ne voie pas pourquoi je ne dormirai pas la nuit, si je dit ca marche pour cette environnement un point c est tout.?? que ce soit un linux fixe ou un vista pro.

    Serieux je ne voie vraiement pas pourquoi c ets si absurde que ca !?

  13. #13
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par lezurp Voir le message
    l'application est en 64bit sous linux.
    C'est du traitement d'image (tres grand quantité a traite en simultané), reconstruction 3D, et autre jolie truc très sympa extrêmement gourmand. non ce n est pas une banal application avec un leek memory quelconque c'est rellement une application tres lourd ( juste les donnes brute font pres de 1go). Cela a ete vérifier et concret vérifier et optimisé. Le soft est fait pour tourné sur une workstation DEDIÉE imperativement pour un OS definie. rien ne doit tourner d autre que mon soft. Tout comme pour sms2008
    C'est par cela qu'il aurait fallu commencer, à mon avis. Cela dit, ce n'est pas convaincant en soi : que la machine rame comme une folle, c'est le problème de l'utilisateur. Le concepteur n'a pas à lui interdire de lancer l'application si ce n'est pas techniquement impossible. Les derniers logiciels à ne pas vouloir démarrer que j'ai connus sont ceux qui fonctionnaient sur des systèmes qui ne géraient pas le swap (DOS).

    Comment définis-tu la limite minimum ? À l'estime, ou bien est-ce que ça repose sur quelque chose de plus technique ?

    Il dois bien existe un truc pour connaitre la ram physiquement presente sous linux et windoz, plein de soft (de gros soft ) utilise ce genre de fonction.
    Sous Unix, tout est fichier. Il est donc normal de les ouvrir pour obtenir des informations. Comme tu dois le savoir, « /proc » est un pseudo-filesystem. C'est donc une inferface de communication avec le noyau. Tu peux toutefois utiliser la libproc pour y accéder.

    Dans tous les cas, il n'y aura jamais d'interface universelle pour le faire. Il vaut donc mieux faire une fonction qui encapsule elle-même tous les cas possibles.

    je ne voie pas pourquoi je ne dormirai pas la nuit, si je dit ca marche pour cette environnement un point c est tout.?? que ce soit un linux fixe ou un vista pro. Serieux je ne voie vraiement pas pourquoi c ets si absurde que ca !?
    Parce que tu n'es pas celui qui aura à déployer le logiciel in situ. Si j'ai à déployer, moi, ce logiciel et qu'il n'y a aucun moyen d'agir sur son comportement, c'est appel au helpdesk immédiat, et je ne raccroche pas avant d'avoir un logiciel en état de fonctionner. Si en plus, je m'aperçois que c'est un simple contrôle du programmeur et que, une fois contourné, ça fonctionne très bien avec 2,9Go de RAM, là, je ne recommande plus chez toi. L'intégration est une phase importante du développement logiciel.

    N'oublie pas que tes logiciels ne seront pas les seuls à être commandés par les compagnies auxquelles tu destines tes créations, et celles-ci ne peuvent pas se permettre d'acheter, maintenir, stocker et alimenter une machine par application, juste parce que le programmeur en a décidé ainsi pour se faciliter la tâche.

    C'est arrivé chez nous dans une autre mesure : une machine d'analyse produisant un flot d'information très important est contrôlé par un logiciel qui, lui aussi, doit être installé sur une machine dédiée et, lui aussi, refuse de se lancer si d'autres logiciels fonctionnent en même temps. Moralité, le logiciel en lui-même est inexploitable et les programmeurs titulaires ne peuvent pas écrire les programmes servant à automatiser le traitement du flux d'informations produit. Pas la peine de te dire quelle réputation a acquis la compagnie qui fabrique ce produit.

  14. #14
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Que la mémoire soit en RAM ou en swap ça change quoi ? Ce sera juste plus lent, mais au moins ça permettra à ton programme de s'adapter à toutes les situations.
    Boost ftw

  15. #15
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Pourquoi ne pas simplement *allouer* ta mémoire pour vérifier si tu en as assez ?

    Si tu sais d'avance que tu as besoin de 2Go de RAM pour fonctionner, et que ça ne change pas au cours du temps, tu les alloues au début de ton programme, et ensuite, tu surcharge tes opérateurs new et delete pour allouer dans ce buffer alloué plutôt que dans la RAM (moins évident à faire si tu te bases sur des libs externes pour ton traitement).

    L'avantage est qu'en plus, c'est portable. Et si l'allocation échoue, alors, tu sais que ton programme ne tournera pas correctement. De plus, ta mémoire étant déjà alloué, tu n'es pas dépendant du reste du contexte système, et tu ne crains pas le malloc qui échoue en plein milieu de l'exécution.

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le problème n'est pas que 2Go de mémoire sont nécessaires, mais que 2Go de RAM hors swap sont nécessaires.
    Allouer la mémoire ne testera pas cela, et tapera allègrement dans le swap ni nécessaire.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 109
    Points : 48
    Points
    48
    Par défaut
    merci pour vos commentaires/reponses.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/07/2007, 09h59
  2. Réponses: 1
    Dernier message: 25/05/2007, 10h38
  3. [vb.net] trouver la quantité de RAM installée
    Par tbdarkspirit dans le forum VB.NET
    Réponses: 3
    Dernier message: 08/04/2007, 15h44
  4. Connaitre la quantité de mémoire utilisé
    Par alain92 dans le forum C++
    Réponses: 5
    Dernier message: 10/08/2006, 18h42
  5. Mémoire installée sur pc distant
    Par systeme1 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 30/11/2005, 13h04

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