OVH Cloud OVH Cloud

Mémoire libre

12 réponses
Avatar
Jean
Bonjour,

Comme Linux semble occuper l'ensemble de la mémoire, notamment avec le
cache, comment savoir quelle est la quantité de mémoire libre pour les
application et mesurer l'activité du swap ?

La finalité, c'est de voir si je peux ajouter des process serveurs
supplémentaires, et augmenter l'espace mémoire pour Oracle.

Merci, Jean

10 réponses

1 2
Avatar
Basile STARYNKEVITCH
"Jean" == Jean writes:






Jean> Bonjour, Comme Linux semble occuper l'ensemble de la
Jean> mémoire, notamment avec le cache, comment savoir quelle est
Jean> la quantité de mémoire libre pour les application et mesurer
Jean> l'activité du swap ?


Commandes free et top

Fichier /proc/meminfo



--

Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
alias: basile<at>tunes<dot>org
8, rue de la Faïencerie, 92340 Bourg La Reine, France





Avatar
Jérémy JUST
On Tue, 18 Nov 2003 12:34:15 +0100
"Jean" wrote:

Comme Linux semble occuper l'ensemble de la mémoire, notamment avec le
cache, comment savoir quelle est la quantité de mémoire libre pour les
application et mesurer l'activité du swap ?


Avec `free' et `top', tu auras un bon aperçu.


La finalité, c'est de voir si je peux ajouter des process serveurs
supplémentaires, et augmenter l'espace mémoire pour Oracle.


La RAM elle-même est toujours utilisée au maximum. Il ne faut pas
s'inquiéter si elle est pleine. Par contre, sur un système bien
dimensionné, le swap ne doit pratiquement pas être utilisé.

--
Jérémy JUST

Avatar
Jean
"Jérémy JUST" a écrit dans le message de
news:

Avec `free' et `top', tu auras un bon aperçu.


Oui, mais comme le noyau utilise toute la mémoire, je ne sais pas ce qui est
"libre" pour les applications.
Voir ci-dessous pour exemple de calcul :

top
2:37pm up 1:46, 2 users, load average: 0.03, 0.05, 0.02

92 processes: 90 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 2.1% user, 3.6% system, 0.0% nice, 94.2% idle
Mem: 126444K av, 116696K used, 9748K free, 0K shrd, 11832K
buff
Swap: 530104K av, 32040K used, 498064K free 58876K
cached

free -m
total used free shared buffers cached

Mem: 123 113 9 0 11 57
-/+ buffers/cache: 44 78
Swap: 517 31 486

Avatar
adehay
"Jean" writes:

"Jérémy JUST" a écrit dans le message de
news:

Avec `free' et `top', tu auras un bon aperçu.


Oui, mais comme le noyau utilise toute la mémoire, je ne sais pas ce qui est
"libre" pour les applications.


[...]

free -m
total used free shared buffers cached

Mem: 123 113 9 0 11 57
-/+ buffers/cache: 44 78
^^

Ça c'est la RAM libre plus les applications. Avec le swap:

Swap: 517 31 486


--
Aurélien DEHAY http://logicielslibres.info


Avatar
Jean
"Aurélien DEHAY" a écrit dans le message de
news:
free -m
total used free shared buffers

cached


Mem: 123 113 9 0 11
57


-/+ buffers/cache: 44 78
^^

Ça c'est la RAM libre plus les applications. Avec le swap:

Swap: 517 31 486



1) Désolé mais c'est pas clair. Dans l'exemple il me reste combien ?
En fait, je ne sais pas ce que sont ces 2 zones : "Buffers" et "Cache" ...


2) Je suppose que l'on peut ajouter des process et que ceux qui roupillent
seront swappés. Donc l'allocation du swap n'est pas dramatique en soit.
Jusqu'a ce que ça sature et que le system se mette a swapper comme un fou.
Comment mesurer l'activité de "swappage" à un instant T ? Et a partir de
quel seuil ça devient critique ?

Jean



Avatar
Landry MINOZA
Le Mardi 18 Novembre 2003 15:09, Jean à écrit:



1) Désolé mais c'est pas clair. Dans l'exemple il me reste combien ?
En fait, je ne sais pas ce que sont ces 2 zones : "Buffers" et "Cache" ...


le cache permet de différer les accès aux systèmes de fichier afin
d'accélérer les temps d'accès aux fichiers par les applications.

2) Je suppose que l'on peut ajouter des process et que ceux qui roupillent
seront swappés. Donc l'allocation du swap n'est pas dramatique en soit.
Jusqu'a ce que ça sature et que le system se mette a swapper comme un fou.
Comment mesurer l'activité de "swappage" à un instant T ? Et a partir de
quel seuil ça devient critique ?
avec ton niveau d'exigence, je crois que ce qui s'impose, c'est :

gkrellm-server sur ton serveur et
gkrellm sur ta machine d'admin.

Tu verra tout ça graphiquement...
Ce sera beaucoup plus explicite.
Ensuite, tu compare avec les sorties des progs classiques précités, plus
quelques petits tours dans /proc...


--
Landry MINOZA
supprimer .invalid pour répondre.

Avatar
Jérémy JUST
On Tue, 18 Nov 2003 15:09:52 +0100
"Jean" wrote:

Je suppose que l'on peut ajouter des process et que ceux qui
roupillent seront swappés. Donc l'allocation du swap n'est pas
dramatique en soi.


En soi, non, tant que ça ne concerne que des processus durablement
inactifs.


Jusqu'a ce que ça sature et que le system se mette a swapper
comme un fou.


Non, c'est mauvais bien avant.
J'ai une machine avec 6 Go de RAM et 16 Go de swap. Récemment, j'ai dû
faire un calcul qui chargeait en mémoire 8 Go de données (sachant que la
machine était utilisée pour d'autres choses en même temps). Il restait en
tout 3 Go de swap disponible.
Pourtant mon calcul, ainsi que les autres processus, ont terriblement
ramé. Le calcul a pris une semaine, alors qu'il n'a consommé qu'une
dizaines d'heures de temps CPU, tout simplement parce qu'il a passé son
temps à attendre que les données swappées soient relues depuis le disque.

Le swap doit être considéré comme une solution de secours. Une sorte de
vase d'expansion. Son utilisation ralentit tout. Seuls des processus
inactifs devraient y être placés.
Je crois que sous Linux, `top' donne pas mal de détails par processus.
Tu devrais en lire la page de manuel.


Et a partir de quel seuil ça devient critique ?


C'est impossible à dire.
Sur une machine inutilisée, tout pourrait être swappé sans aucun
inconvénient. Sur une machine sur laquelle tourne Oracle, ce serait très
mauvais que les processus oracle soient swappés. J'imagine que certains de
ces processus contiennent les index de la base, et ça ferait perdre un
temps fou de devoir aller les chercher sur disque.

En pratique, sur une machine personnelle bien configurée (pas de
services inutiles), le swap n'est généralement utilisé qu'à hauteur de
quelques mégas en temps normal.
Pour un serveur, "Ça Dépend"(TM).


--
Jérémy JUST

Avatar
Thomas Labourdette

"Aurélien DEHAY" a écrit dans le message de
news:
free -m
total used free shared buffers

cached


Mem: 123 113 9 0 11
57


-/+ buffers/cache: 44 78
^^

Ça c'est la RAM libre plus les applications. Avec le swap:

1) Désolé mais c'est pas clair. Dans l'exemple il me reste combien ?

En fait, je ne sais pas ce que sont ces 2 zones : "Buffers" et "Cache" ...


78Mo (used - (free+buffer+cache))

--
Thomas Labourdette
7 semaines : J'ai pensé qu'une bague de ferait plaisir
7 mois : Un vase, c'est toujours utile
7 ans : Tiens, tu t'achèteras ce que tu veux !




Avatar
J. Mayer
On Tue, 18 Nov 2003 16:01:22 +0100, Jérémy JUST wrote:

Et a partir de quel seuil ça devient critique ?


C'est impossible à dire.


C'est impossible à chiffrer, mais simple à dire:
il y a problème quand le programme qui doit prendre la main
n'est pas dans la RAM physique ou s'il n'arrive pas à utiliser son
timeslice sans être obligé de recharger des données du swap.

Ce qui en clair veut dire: dès que les process actifs commencent
à être swappés...


Avatar
J. Mayer
On Tue, 18 Nov 2003 18:12:03 +0100, Thomas Labourdette wrote:


"Aurélien DEHAY" a écrit dans le message de
news:
free -m
total used free shared buffers

cached


Mem: 123 113 9 0 11
57


-/+ buffers/cache: 44 78
^^

Ça c'est la RAM libre plus les applications. Avec le swap:

1) Désolé mais c'est pas clair. Dans l'exemple il me reste combien ?

En fait, je ne sais pas ce que sont ces 2 zones : "Buffers" et "Cache" ...


78Mo (used - (free+buffer+cache))


Oui, mais non, car les buffers et les caches sont immédiatement
(plutot, très rapidement) libérable si une appli a un gros besoin
momentanné de mémoire. Ca se paye, bien sur...
En fait, sur un système tel que Linux, il n'existe aucun moyen
de savoir combien on peut allouer de RAM, et ce, quel que soit le
critère proposé.
Certains parlent de l'utilisation du swap. Or il est possible de
swapper sans même avoir de swap monté ! En effet, les pages de code
des programmes sont swappées dans le fichier du programme lui même:
pourquoi dupliquer l'information qui existe déjà ?
De même, il est possible de gagner des pages sur les buffers et les
caches, mais ça peut se payer cruellement en performances.
De plus, des pages peuvent se libérer "magiquement":
un process fait un retour de fonction, dépile ses arguments et...
libère une page qu'il n'a jamais alloué...

La question est: comment fait le kernel ? La réponse est simple:
quand on lui demande une page, il ne sait pas s'il peut en trouver
une. Des fois, il en a une sous la main de libre. Sinon, il essaye
de libérer des pages par tous les moyens. S'il n'y arrive pas,
alors seulement à ce moment là, il sait qu'à un instant donné,
il n'a plus de RAM dispo, sachant que la même requête pourra réussir
une fraction de secondes plus tard (libération implicite d'un gros
buffer DMA à la fin d'un transfert disque, par ex).

Donc, le seul moyen de savoir si on peut avoir de la mémoire,
c'est de la demander et de s'en servir (les pages réclamées mais
jamais utilisées sont comptabilisées dans la taille du process
mais ne sont pas allouées physiquement). C'est embêtant, mais
c'est la seule bonne réponse...





1 2