Tom's Guide > Forum > Programmation > Tout est une question de mémoire =)

Tout est une question de mémoire =)

Forum Programmation : Tout est une question de mémoire =)

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour à tous,
Je développe actuellement un client / serveur de supervision réseau en C qui permet de centraliser les informations suivantes:
quelque soit le serveur d'application sur lequel il est installé, le programme retourne:
Le nombre de processeur, avec leur fréquence max et la fréquence d'utilisation (pour faire un graph)
Le nombre de partition, leur espace max et l'espace utilisé, pour une fois de plus avoir une valeur actuelle et un rapport.
La mémoire vive max et la mémoire vive utilisée.
Mon client serveur marche très bien, quoi de plus simple sous linux debian pour retourner ces informations que de les récuperer dans quelques fichiers.
Cependant, et voila le but de ce sujet, je me disais ce matin, vue qu'en C la fonction

Code :
  1. malloc()

permet d'allouer dynamiquement de la mémoire, retournant -1 si l'espace voulu dans la mémoire vive n'est pas disponible, est ce qu'il n'existe pas un moyen autre que de consulter des valeurs dans des fichiers (exemple Linux Debian) pour obtenir la mémoire vive max d'un système et la mémoire utilisée? Existe-t-il une fonction?

Bonne journée à tous,

SY57

------------------------------ --------------------
SeeYou57
Responsable Sécurité des Systèmes d'Informations (R.S.S.I)
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Pourquoi utilise tu pas le C++ ?

new int :)

Répondre à St3fff
- 0 +

@St3fff : aucun rapport avec la question :)

@seeyou : http://www.oreilly.fr/contenu/2007 [...] sous-linux

Répondre à OmaR

Bonjour,
Pour répondre à la question de St3fff:
Pourquoi ne pas développer en C++?
Je répondrais par pourquoi ne pas développer en java, C# (avec monodevelopp pour linux), pascal, ou autre?
J'utilise le langage qui répond le mieux à ce que je veux faire. Le C++ offre certe plus de fonctionnalité, mais comme j'en ai pas l'utilité sur ce projet alors j'ai opté pour le C.
Je vais maintenant regarder le lien de Omar_Sharif et si besoin je ferais des remarques.
Cordialement,
SY57

------------------------------ --------------------
SeeYou57
Responsable Sécurité des Systèmes d'Informations (R.S.S.I)
Répondre à seeyou57

Bon je viens de regarder rapidement le lien, c'est plus ou moins ce que je fais actuellement, ce que je voulais savoir c'est est-ce qu'en C, il existe une fonction qui permet d'obtenir la memoire totale du système et la mémoire restante ou utilisée? Le tout sans faire appel ni à des script shell, ni de commande système, ni de fichier à ouvrir.
Tout simplement car c'est ce que fait mon programme actuellement.

Cordialement,

Ps: ma question est juste la pour un but d'optimisation logiciel.


Message édité par seeyou57 le 13-08-2007 à 18:07:34
------------------------------ --------------------
SeeYou57
Responsable Sécurité des Systèmes d'Informations (R.S.S.I)
Répondre à seeyou57
- 0 +

D'accord, j'avais compris que tu voulais la commande par un shell.
J'ai essayé de chercher, je n'ai rien trouvé là dessus.

Répondre à OmaR

Ce qui m'etonne c'est que le C est un langage qui est très sensible à la mémoire d'où ma question.
Si je trouve je posterais la réponse.
Merci encore,
Cordialement.

------------------------------ --------------------
SeeYou57
Responsable Sécurité des Systèmes d'Informations (R.S.S.I)
Répondre à seeyou57

Je n'ai pas bien compris ce qu'est demandé.

Obtenir la mémoire totale disponible, n'est pas la même chose que connaitre la mémoire maximale allouable par malloc. C'est dû au fait que malloc alloue une mémoire contigüe. Si elle est morcellée (par l'OS évidement), la taille allouable par malloc sera faible (par rapport à la taille totale).

Si c'est pour rechercher du memory leak, tu peux faire une macro qui remplace les malloc et les free (mais il faut modifier le code contrairement au C++).

Si c'est pour voir les infos d'un process, c'est dépendant de l'OS.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Bonjour,
Oui c'est pour avoir la mémoire total max d'un systeme, comme je l'ai dit c'est juste une question dans un but d'optimisation.
Cordialement

------------------------------ --------------------
SeeYou57
Responsable Sécurité des Systèmes d'Informations (R.S.S.I)
Répondre à seeyou57

Peut-être avec getrlimit() (ce n'est pas C ANSI évidemment).
Mais bon, si tu n'utilises que les malloc et free, ça n'a pas trop d'intérêt. :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Bonsoir,
non je n'utilise pas que ça, mon client-serveur permet de connaitre la charge en mémoire vive des serveurs sur lequel il est installé.
Actuellement, etant des système Debian Linux, ca le fait en utilisant des acquis système c'est tout.
Je voulais juste savoir si une fonction pouvait donner ces informations, ce qui rendrait mon programme facilement portable.
Cordialement

------------------------------ --------------------
SeeYou57
Responsable Sécurité des Systèmes d'Informations (R.S.S.I)
Répondre à seeyou57

En C ANSI, il n'existe pas de telles fonctions, si c'est ce que tu demandes, il faut coder selon le (les) OS. Il n'y a pas d'autre possibilité (ce qui est logique puisque c'est l'OS (via le scheduler) qui décide comment gérer sa mémoire. Donc, pour apporter une flexibilité sur l'OS, ce genre d'information ne fait pas partie de la norme C.
Et je ne crois pas non plus qu'il existe de fonction même dans la norme POSIX (ça restreindrait peut-être trop le dev d'un OS POSIX).
J'ai trouvé une fonction comme mallinfo, mais pas normée du tout :)
http://www.delorie.com/djgpp/doc/libc/libc_550.html

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > Tout est une question de mémoire =)
Aller à :

Il y a 1137 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens