OVH Cloud OVH Cloud

Questions sur l'usage du swap

6 réponses
Avatar
tanguy
Bonjour,

comment peut on savoir quels processus utilisent le swap?
le man ps fait bien mention d'un champ 'SWAP' mais je n'arrive
pas à la faire afficher...
J'ai cherché à l'afficher par differentes options mais je ne le
vois pas apparaitre par la commande ps. Je vois bien un total
affiché par la commande top mais ça me donne la même chose que
ce que je vois par la commande free (et ce n'est pas le total
qui m'interesse, je veux savoir quel processus l'utilisent)

6 réponses

Avatar
lhabert
tanguy :

comment peut on savoir quels processus utilisent le swap?


Avec l'option « l » de ps, tu as en particulier des colonnes VSZ et RSS. La
première te donne la taille totale de l'espace mémoire du programme, la
seconde la place en mémoire physique occupée par le programme. Quand le RSS
dépasse le VSZ, il y a des chances que la différence corresponde à des pages
parties dans le swap. Cela dit, ce n'est pas la seule cause possible, il y a
au moins les mmap qui peuvent causer ça aussi.

--
Luc, qui n'a jamais compris pourquoi sur son ultra 5 le RSS du serveur X
était plus grand que le VSZ.

Avatar
lhabert
tanguy :

comment peut on savoir quels processus utilisent le swap?


Avec l'option « l » de ps, tu as en particulier des colonnes VSZ et RSS. La
première te donne la taille totale de l'espace mémoire du programme, la
seconde la place en mémoire physique occupée par le programme. Quand le VSZ
dépasse le RSS, il y a des chances que la différence corresponde à des pages
parties dans le swap. Cela dit, ce n'est pas la seule cause possible, il y a
au moins les mmap qui peuvent causer ça aussi.

--
Luc, qui n'a jamais compris pourquoi sur son ultra 5 le RSS du serveur X
était plus grand que le VSZ.

Avatar
Tanguy
tanguy :

comment peut on savoir quels processus utilisent le swap?


Avec l'option « l » de ps, tu as en particulier des colonnes VSZ et RSS. La
première te donne la taille totale de l'espace mémoire du programme, la
seconde la place en mémoire physique occupée par le programme. Quand le VSZ
dépasse le RSS, il y a des chances que la différence corresponde à des pages
parties dans le swap. Cela dit, ce n'est pas la seule cause possible, il y a
au moins les mmap qui peuvent causer ça aussi.




merci pour ces infos.
(je trouve bizarre de ne pas pouvoir visualiser le champ SWAP de la
commande ps, mais bon on va faire autrement...)

lorsque je lance la commande ps j'ai le champ VSZ toujours superieur au
RSS... ça veut dire que tous les processus travaillent sur le swap?

La commande free me donne:
-bash-2.05b$ free
total used free shared buffers cached
Mem: 1033248 1019252 13996 0 70736 601792
-/+ buffers/cache: 346724 686524
Swap: 1132540 32364 1100176

Il ne devrait pas recuperer de la place dans la memoire cache au lieu de
swapper ?


Avatar
Matthieu Moy
Tanguy writes:

lorsque je lance la commande ps j'ai le champ VSZ toujours superieur
au RSS... ça veut dire que tous les processus travaillent sur le swap?


Sauf erreur de ma part, dans cette différence, il y a aussi les
portions du binaire sur le disque qui ne sont pas chargés en mémoire.
Mais ça n'est en fait pas tellement différent du swap en un sens : Ton
système estime qu'il n'a pas suffisament besoin de ça pour l'instant
pour occuper de la RAM avec.

--
Matthieu

Avatar
lhabert
Tanguy :

lorsque je lance la commande ps j'ai le champ VSZ toujours superieur au
RSS... ça veut dire que tous les processus travaillent sur le swap?


Non, comme je le dis, il y a aussi les mmap. En particulier, le code des
programmes est mmapé, donc si certaines zones du code servent peu, elles ont
des chances de ne pas se retrouver chargées (elles ne sont pas pour autant
dans le swap, le noyau peut les retrouver dans le fichier mmapé en cas de
besoin, donc il n'a pas besoin de les envoyer dans le swap). Si le VSZ n'est
qu'un peu plus grand que le RSS, tu ne peux pas conclure. Par contre, si tu
vois un programme avec 10Mo de RSS et 100Mo de VSZ, tu peux conclure avec
bonne probabilité qu'il a une fuite de mémoire.

Avatar
Tanguy

Non, comme je le dis, il y a aussi les mmap. En particulier, le code des
programmes est mmapé, donc si certaines zones du code servent peu, elles ont
des chances de ne pas se retrouver chargées (elles ne sont pas pour autant
dans le swap, le noyau peut les retrouver dans le fichier mmapé en cas de
besoin, donc il n'a pas besoin de les envoyer dans le swap). Si le VSZ n'est
qu'un peu plus grand que le RSS, tu ne peux pas conclure. Par contre, si tu
vois un programme avec 10Mo de RSS et 100Mo de VSZ, tu peux conclure avec
bonne probabilité qu'il a une fuite de mémoire.


merci, je vais voir avec ça.
(je pense qu'il va falloir que je me documente sérieusement là dessus
mais ça me donne déjà des bonnes pistes)