OVH Cloud OVH Cloud

macx_swapoff

31 réponses
Avatar
Saïd
Bonjour,

A la fin de la page de man dynamic_pager on trouve:
SEE ALSO
macx_swapon(2), macx_swapoff(2).

Mais:
brian-~ $ man macx_swapon
No manual entry for macx_swapon
brian-~ $ locate macx_swapon
brian-~ $

kesako? Ca existe vraiment ces commandes macx_swapon/off? Ca eu existe dans
une version de mac os X (avant Panther)?

--
Saïd.

10 réponses

1 2 3 4
Avatar
Eric Lévénez
Le 6/06/04 17:52, dans , « Saïd »
a écrit :

Schmurtz :
Je pense que c'est fonction sert à désactiver le swap dans son ensemble
: c'est tout ou rien, mais pas pour supprimer juste un fichier de swap.



Et tu mets quoi comme argument?
/*
* Routine: macx_swapoff
* Function:
* Syscall interface to remove a file from backing store
*/
int
macx_swapoff(
char *filename,
int flags)


macx_swapoff ne sert pas à désactiver le swap, mais à supprimer de la
gestion du swap un fichier devenu inutile. filename est le nom du fichier à
supprimer, et flags n'est pas utilisé (c'est normalement le drapeau venant
d'une notification Mach).

macx_swapoff convertit le nom du fichier en inode (vnode en fait) et vérifie
qu'il est bien utilisé par le swap (mémorisé dans le "backing store"). La
ligne 331 du fichier que tu donnes est, entre parenthèse, une erreur. Le
gros du travail qui correspond à la séparation du lien entre la gestion de
la mémoire virtuelle et les pages stockées dans le fichier est effectué par
la fonction default_pager_backing_store_delete. Si l'on demande la
suppression d'un fichier en cours d'utilisation, la fonction macx_swapoff
devrait retourner EAGAIN (ligne 359). Mais cette suppression du fichier de
swap correspond à la suppression de la gestion de ce fichier par le noyau
Mach, pas à l'effacement de son nom dans le système de fichier (un "rm" est
toujours possible).

Si on regarde dans le source de dynamic_pager, on voit que ce programme peut
recevoir du noyau des notifications. Et sur le Low Water Alert, il appelle
macx_swapoff pour libérer le fichier swap de la gestion de la mémoire
virtuelle, puis effectue le unlink du fichier, ce qui va effacer son nom
dans le système de fichiers et supprimer les blocs disques alloués.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Eric Lévénez
Le 6/06/04 16:34, dans , « Saïd »
a écrit :

Puis-je ecrire un programme en C qui appelle la fonction macx_swapoff avec
comme arguement le nom d'un fichier /var/vm/swapfile0 (ou 1 2 ...) sans
prendre aucune autres precaution? Ce sera quoi le resultat?


EAGAIN je suppose.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
Schmurtz
Eric Lévénez wrote:

macx_swapoff ne sert pas à désactiver le swap, mais à supprimer de la
gestion du swap un fichier devenu inutile. filename est le nom du fichier à
supprimer, et flags n'est pas utilisé (c'est normalement le drapeau venant
d'une notification Mach).

[Š]


Voilà une réponse claire et précise.

--
Schmurtz

Avatar
nospam
Saïd wrote:

Ah oui, effectivement. On peut supprimer un fichier de swap encore utilise?


Hum... d'après toi, que ce passe t'il si tu enlève sa béquille à un
infirme ?

Jacques

Avatar
Philippe Di Valentin
Le 7/06/04 8:50, Jacques Foucry écrivait:

Hum... d'après toi, que ce passe t'il si tu enlève sa béquille à un
infirme ?


Il s'assoit et continue sans problèmes à travailler ou à se divertir avec sa
machine qui n'a plus de swap.

--
• Philippe

Avatar
Saïd
Jacques Foucry :
Saïd wrote:

Ah oui, effectivement. On peut supprimer un fichier de swap encore utilise?


Hum... d'après toi, que ce passe t'il si tu enlève sa béquille à un
infirme ?



Quand on lui demande la permission (en passant par un appel systeme) je ne
pense pas qu'il lui arrive quoi que ce soit de facheux.

--
Saïd.


Avatar
pas.de.spam
Jacques Foucry wrote:

Saïd wrote:

Ah oui, effectivement. On peut supprimer un fichier de swap encore utilise?


Hum... d'après toi, que ce passe t'il si tu enlève sa béquille à un
infirme ?


Essaye un peu pour voir ... :-)))



--
PO.

Pour m'écrire : po(point)taubaty(arobase)wanadoo(point)fr


Avatar
Nicolas.MICHEL
gp wrote:

et quand t'as plus de RAM libre il se passe quoi ?

je ne sais pas, je n'ai encore jamais bourré les 384Mb de ram...


Y a-t-il des spécialistes de la questions ?


Pas spécialiste, mais j'ai testé la commande de Saïd qui ne créait pas
de fichiers de swap, lorsque je saturais la ram il falait ensuite faire
un hard reboot. Le disque gratait ad eternum et tout était figé.

--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas


Avatar
Saïd
Nicolas MICHEL :
gp wrote:

et quand t'as plus de RAM libre il se passe quoi ?

je ne sais pas, je n'ai encore jamais bourré les 384Mb de ram...


Y a-t-il des spécialistes de la questions ?


Pas spécialiste, mais j'ai testé la commande de Saïd qui ne créait pas
de fichiers de swap, lorsque je saturais la ram il falait ensuite faire
un hard reboot. Le disque gratait ad eternum et tout était figé.




Quelle commande exactement?
dynamic_pager -F /private/var/vm/swapfile -S 100000000 -H 10000000 -L
200000000

(les nombres sont 100 millions 10 millions et 200millions)

Comment l'as tu lance exactement? En modifiant /etc/rc et en rebootant ou
directement depuis le terminal?


Cette commande ne cause pas de non creation de fichiers swaps comme tu dis.
Normalement les fichiers de swap doivent avoir une taille fixe (100Mo), un
nouveau fichier est cree des qu'il reste moins de 10Mo a la fin du fichier
swap et des fichier swap sont liberes des que la somme de la taille des
trous dans le swap depasse 200Mo. Cette derniere operation pouvant etre
assez longue.

--
Saïd.



Avatar
Saïd
Saïd :
Nicolas MICHEL :
gp wrote:

et quand t'as plus de RAM libre il se passe quoi ?

je ne sais pas, je n'ai encore jamais bourré les 384Mb de ram...


Y a-t-il des spécialistes de la questions ?


Pas spécialiste, mais j'ai testé la commande de Saïd qui ne créait pas
de fichiers de swap, lorsque je saturais la ram il falait ensuite faire
un hard reboot. Le disque gratait ad eternum et tout était figé.




Quelle commande exactement?
dynamic_pager -F /private/var/vm/swapfile -S 100000000 -H 10000000 -L
200000000



Je viens de rebooter avec cette ligne (enfin presque, j'ai mis 64Mo, 16Mo,
e 128+16Mo +2 octets pour etre sur de librer deux fichiers swap a chaque
fois que le menage est fait) dans /etc/rc.

mes fichiers swaps ne font plus que 64Mo. j'ai lance un programme qui ecrit
900Mo de memoire, le swap est bien monte et est redescendu progressivement.
et la je n'ai plus que deux fichiers de swap (soit 128Mo). Bref, j'ai bien
sature la memoire et je n'ai rien eu de facheux a deplorer.

Je ferai un commentaire a l'usage de cette config, pour l'instant on ne
peut pas dire grand chose a part que ca ne plante pas la machine.

--
Saïd.




1 2 3 4