Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

déterminer les process qui swappent

8 réponses
Avatar
patpro ~ Patrick Proniewski
Bonjour,

depuis que j'ai un script qui surveille le volume des fichiers de swap
sur ma machine, je m'aperçois que le volume augmente plus facilement
qu'il ne diminue.
En effet, je ne parviens jamais à "vidanger" les fichiers de swap (et
donc trouver les process qui swappent) sans rebooter.
Même un délog de tous les utilisateurs ne me fait jamais revenir à un
seul fichier.
Je précise que j'ai 1,5 Go de RAM, et qu'en temps normal je n'ai qu'un
seul fichier de swap, et ce, même avec des semaines d'uptime si je ne
fais pas le fanfaron avec le FreePlayer (par exemple).

Ma question donc : comment déterminer quels processes utilisent la swap ?

patpro

8 réponses

Avatar
Paul Gaborit
À (at) Mon, 19 Sep 2005 16:02:51 +0200,
patpro ~ Patrick Proniewski écrivait (wrote):
depuis que j'ai un script qui surveille le volume des fichiers de swap
sur ma machine, je m'aperçois que le volume augmente plus facilement
qu'il ne diminue.


Normal (*).

En effet, je ne parviens jamais à "vidanger" les fichiers de swap (et
donc trouver les process qui swappent) sans rebooter.
Même un délog de tous les utilisateurs ne me fait jamais revenir à un
seul fichier.


Normal (*).

Je précise que j'ai 1,5 Go de RAM, et qu'en temps normal je n'ai qu'un
seul fichier de swap, et ce, même avec des semaines d'uptime si je ne
fais pas le fanfaron avec le FreePlayer (par exemple).

Ma question donc : comment déterminer quels processes utilisent la swap ?


Par définition, tous les processus utilisent le swap.

(*) Ce qui compte c'est comment est configuré votre gestionnaire de
swap (le 'dynamic_pager' appelé par le script /etc/rc)...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
patpro ~ patrick proniewski
In article ,
Paul Gaborit wrote:

Ma question donc : comment déterminer quels processes utilisent la swap ?


Par définition, tous les processus utilisent le swap.


je la repose autrement :

comment savoir quels sont les process qui utilisent les fichiers de swap
surnuméraires (et qui sont responsables de la non-disparition de ceux
ci) ?

Par ailleurs, je ne suis pas d'accord sur le fait que tous les process
_utilisent_ le swap, vu que je peux faire plusieurs semaines d'uptime
avec un fichier de swap modifié seulement au moment du boot, ce dernier
n'est visiblement pas utilisé.

patpro


Avatar
pmanet
patpro ~ patrick proniewski wrote:

vu que je peux faire plusieurs semaines d'uptime
avec un fichier de swap modifié seulement au moment du boot,


je témoigne que certains process mla foutus sont probablement en cause
dans la consommation de RAM excessive amenant à swapper sans rendre leur
mémoire.
Je peux aussi rester des semaines sans swap, et tout à coup passer à 15
MO de ram libre, et ensuite ne plus redescendre en dessous de 100-150.

j'ai eu de forts soupçons autour de Classic, Internet Preference et
MacSoup... en tout cas, en présence d'encodages prolongés.
Si j'arrete tout, je ne récupère pas ma RAM libre et je continue à avoir
des pageout,meme de nombreuses heures après.
--
Philippe Manet

Avatar
Paul Gaborit
À (at) Mon, 19 Sep 2005 18:35:09 +0200,
patpro ~ patrick proniewski écrivait (wrote):
In article ,
Paul Gaborit wrote:

Par définition, tous les processus utilisent le swap.


je la repose autrement :

comment savoir quels sont les process qui utilisent les fichiers de swap
surnuméraires (et qui sont responsables de la non-disparition de ceux
ci) ?


Les fichiers de swap sont partagés et utilisés par tous les processus
à la fois. Il n'y a pas de correspondance fixe entre le mémoire vue
par le processus et un endroit du disque utilisé par la mémoire
virtuelle.

Pour que les fichiers surnuméraires disparaissent, il faut que le taux
d'occupation *global* tombe en-dessous d'un seuil qui déclenche une
réorganisation des fichiers swap. Les taux sont paramètrés au
lancement de 'dynamic_pager'. Je ne suis pas sûr qu'on puisse les
changer au vol.

Par ailleurs, je ne suis pas d'accord sur le fait que tous les process
_utilisent_ le swap, vu que je peux faire plusieurs semaines d'uptime
avec un fichier de swap modifié seulement au moment du boot, ce dernier
n'est visiblement pas utilisé.


Parce que votre mémoire suffisait à servir tous les processus. Mais
lorsque le swap commence à être utilisé, il l'est par tous les
processus.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>


Avatar
Saïd
patpro ~ Patrick Proniewski :
Bonjour,

depuis que j'ai un script qui surveille le volume des fichiers de swap
sur ma machine, je m'aperçois que le volume augmente plus facilement
qu'il ne diminue.
En effet, je ne parviens jamais à "vidanger" les fichiers de swap (et
donc trouver les process qui swappent) sans rebooter.
Même un délog de tous les utilisateurs ne me fait jamais revenir à un
seul fichier.
Je précise que j'ai 1,5 Go de RAM, et qu'en temps normal je n'ai qu'un
seul fichier de swap, et ce, même avec des semaines d'uptime si je ne
fais pas le fanfaron avec le FreePlayer (par exemple).

Ma question donc : comment déterminer quels processes utilisent la swap ?



On peut changer le comportement par defaut (qui est qu'un fichier swap
n'est afface que s'il est entierment libéré, i.e. 4ko utilises justifient
le maintien du fichier) et demander a ce que le nombre de fichiers swaps
soit reduit des que la taille des trous inutilises dans le swap devient plus
grande que celle d'un fichier, ce qui doit reduire les performances de la
machine pendant quelques secondes. (man dynamic_pager et modifier /etc/rc en
consequence)

Mais tant que ton DD est assez gros ca ne vaut pas la peine de s'en
preocupper, AMHA.

Sinon, je ne sais pas comment obtenir la liste des processus dont une
partie des donnees est dans un des fichiers swap. A mon avis c'est une
information confidentiel defense du noyau qu'il ne voudra jamais cracher :)
(jamais vu d'appel systeme permettant de savoir ou se trouve physiquement un
segment de donnee, et encore ca ne donnerait la reponse que pour le
processus qui appelle cet appel systeme ce qui n'est pas tres interessant).

--
Saïd.

Avatar
patpro ~ patrick proniewski
hop,

Merci Paul et Said pour vos précisions !

patpro
Avatar
filh
Paul Gaborit wrote:

À (at) Mon, 19 Sep 2005 18:35:09 +0200,
patpro ~ patrick proniewski écrivait (wrote):
In article ,
Paul Gaborit wrote:

Par définition, tous les processus utilisent le swap.


je la repose autrement :

comment savoir quels sont les process qui utilisent les fichiers de swap
surnuméraires (et qui sont responsables de la non-disparition de ceux
ci) ?


Les fichiers de swap sont partagés et utilisés par tous les processus
à la fois. Il n'y a pas de correspondance fixe entre le mémoire vue
par le processus et un endroit du disque utilisé par la mémoire
virtuelle.

Pour que les fichiers surnuméraires disparaissent, il faut que le taux
d'occupation *global* tombe en-dessous d'un seuil qui déclenche une
réorganisation des fichiers swap. Les taux sont paramètrés au
lancement de 'dynamic_pager'. Je ne suis pas sûr qu'on puisse les
changer au vol.


Il me semblait pourtant que justement sous OSX il y avait comme un vice
de conception ici qui faisait que justement un process pouvait
parfaitement bloquer une zone de swap dans un fichier d'un rang n et
empécher ainsi la libération des fichiers de rang inférieur

De plus, de ce que j'ai constaté, les fichiers ne disparaissent que lors
du lancement dun processus en plus (en gros, je quitte toutes mes
applis, il reste autant de swap, j'en relance une et hop je vois un ou
deux fichiers détruts).

FiLH


--
Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire
une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle.
Roland Barthes.
http://www.filh.org



Avatar
Saïd
Xavier :
Saïd wrote:

jamais vu d'appel systeme permettant de savoir ou se trouve physiquement un
segment de donnee


Il suffit de le demander gentiment à la MMU

Les appels système ad-hoc existaient sous MacOS Antic, m'étonnerait bien
qu'il n'y ait pas ça dans Mach.



Les MacOS Antic c'est ceux ou une application pouvait se faire refouler au
lancement parce qu'il ne restait pas assez de RAM physique disponible?


Bon je dois bien pouvoir trouver une liste de tous les appels systemes sous
Mac OS X.

--
Saïd.
C programmers never die - they're just cast into void.