1 votes

Comment puis-je mesurer l'utilisation réelle de la mémoire de mes processus en cours d'exécution ?

Duplicata possible :
Signification de la ligne buffers/cache dans la sortie de free

J'ai deux serveurs, serveur1 et serveur2. Tous deux sont des lames HP identiques, exécutant exactement le même système d'exploitation (RHEL 5.5). Voici la sortie de free pour tous les deux :

### server1:
             total       used       free     shared    buffers     cached
Mem:       8017848    2746596    5271252          0     212772    1768800
-/+ buffers/cache:     765024    7252824
Swap:     14188536          0   14188536

### server2:     
             total       used       free     shared    buffers     cached
Mem:       8017848    4494836    3523012          0     212724    3136568
-/+ buffers/cache:    1145544    6872304
Swap:     14188536          0   14188536

Si je comprends bien, le serveur 2 utilise beaucoup plus de mémoire pour la mise en cache des entrées/sorties sur le disque, ce qui compte toujours comme de la mémoire utilisée.

Mais les deux fonctionnent avec le même système d'exploitation et, si je me souviens bien, j'ai configuré les deux avec les mêmes paramètres lors de leur installation. J'ai fait un diff sur /etc/sysctl.conf et ils sont identiques.

Le problème est que je collecte l'utilisation de la mémoire et d'autres métriques sur une période de temps (par exemple : vmstat, iostat, etc.) alors qu'une charge est générée sur le système. La mémoire utilisée pour la mise en cache perturbe mes calculs sur les résultats.

Comment puis-je mesurer l'utilisation réelle de la mémoire par mes processus en cours, plutôt que l'utilisation de la mémoire par le système d'exploitation pour la mise en cache ? Est-ce que used - (buffers + cached) un moyen valable de mesurer cela ?

0 votes

C'est parce que le serveur 2 a mis en cache plus de choses en mémoire par rapport au serveur 1.

0 votes

@MichaelHampton J'ai fait une top et ça ne semble pas être le cas.

0 votes

@Hex est used - cached o used - (cached + buffers) un moyen valide de mesurer la mémoire réelle utilisée par les processus en cours d'exécution ?

2voto

ewwhite Points 193555

Ce n'est vraiment pas un problème... Essayez-vous de résoudre quelque chose ?

L'autre suggestion concernant la libération de votre cache de page, des inodes et des dentries via le paramètre drop_caches du sous-système VM est appropriée. Essayez d'abord cela.

Voir : http://www.linuxinsight.com/proc_sys_vm_drop_caches.html pour l'historique et le contexte.

Si vous êtes vraiment curieux de savoir ce qui consomme votre mémoire vive ou votre cache disque, vous pouvez consulter l'écran suivant utilitaire vmtouch ou regardez en haut et triez par utilisation de la mémoire (tapez "M"). Exécution de pmap -x contre les PID les plus élevés qui en résultent peut vous donner une idée de ce qui se trouve dans le système de mémoire virtuelle (cache).

0 votes

J'essaie de mesurer approximativement la quantité de mémoire utilisée par un ensemble de processus (une instance de base de données Oracle). Comme c'est la seule chose qui fonctionne, je suppose que la majeure partie de la mémoire utilisée par le système est utilisée par Oracle.

0 votes

Il est facile de voir cela dans top . Avez-vous essayé ?

0 votes

Je collecte des données sur l'utilisation de la mémoire et d'autres paramètres sur une période donnée (ex : vmstat , iostat ) pendant qu'une charge est générée sur le système. La mémoire utilisée pour la mise en cache perturbe mes calculs sur les résultats.

1voto

Hex Points 1919

Pouvez-vous effacer le cache en utilisant

sync ; echo 3 > /proc/sys/vm/drop_caches

et ensuite le tester en utilisant

free -t -m

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X