Changer la partition swap de Leopard

tokamac

Membre confirmé
13 Avril 2004
73
30
46
Bonjour,
J'ai trouvé dans les forums de MacOSXHints une méthode relativement simple pour changer l'endroit où Leopard écrit sa swap (mémoire virtuelle).

L'idéal est d'avoir un Power Mac ou un Mac Pro avec deux disques durs internes, le premier hébergeant l'OS, et le second la swap. En effet placer la swap sur une seconde partition mais sur le même disque de démarrage n'a pas réellement d'intérêt. Par contre quand on le fait avec deux disques, le système peut par exemple lancer une application et écrire sa swap en même temps, d'où un gain de vitesse non négligeable. J'ai personnellement effectué la modif sur deux Power Mac G5.

La partition où se situe la swap n'a pas à être "dédiée". Leopard écrit simplement ses fichiers de swap dans un dossier invisible, au milieu d'autres dossiers de travail visibles sans interférer avec eux.

Pour info dans Leopard, les fichiers de swap (swapfile) sont par défaut écrits dans /private/var/vm/ cet emplacement étant défini par un fichier plist (fichier texte de configuration), le process étant géré par un le démon launchd (c'est nouveau depuis Leopard).
La manip suivante va les générer les fichiers swapfile dans un dossier .vm (le point permet de rendre le dossier invisible) situé sur une partition d'un autre disque.

J'insiste sur le fait que cette astuce n'est compatible qu'avec Leopard, qui gère la mémoire virtuelle différemment des versions précédentes.

Ainsi si vous avez utilisé l'excellent script Perl de Dave Bayer permettant de modifier l'emplacement de la swap de Tiger, pensez au préalable à supprimer les modifications engendrées dans votre système en utilisant la commande uninstall intégrée à son script swapfile.pl (précisions nécessaires sur son site)

Je décris la procédure pas à pas dans le post suivant.
 
1- Créer un dossier invisible nommé .vm sur une partition du 2e disque. Il contiendra les fichiers swapfile. Vous pouvez le faire graphiquement ou utiliser le Terminal en y entrant :
mkdir /Volumes/nomdelapartition/.vm

2- Régler les droits sur ce dossier .vm en définissant le groupe sur staff et l'accès en lecture/écriture à tout le monde :
sudo chown :staff /Volumes/nomdelapartition/.vm
sudo chmod 777 /Volumes/nomdelapartition/.vm

3- Aller dans /System/Library/LaunchDaemons/ et ouvrir le fichier com.apple.dynamic_pager.plist avec TextEdit.

4- Changer la dernière ligne du paragraphe :

<string>/sbin/dynamic_pager</string>
<string>-F</string>
<string>/private/var/vm/swapfile</string>

par
<string>/sbin/dynamic_pager</string>
<string>-F</string>
<string>/Volumes/nomdelapartition/.vm/swapfile</string>


5- Enregistrer le fichier sur le bureau.

6- Déplacer le fichier plist du bureau en écrasant l'ancien sous
/System/Library/LaunchDaemons/

7- Définir l'utilisateur du fichier plist sur root et le groupe sur wheel :
sudo chown root:wheel /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

8- Ouvrir Utilitaire de disque et réparer les autorisations, pour corriger toute erreur éventuelle.

9- Redémarrer.

10- Lancer le Terminal et entrer la commande :
ps -wax | grep dynamic_pager -m1
qui permet de voir où est le fichier de swap (indiqué après le -F)
Vous pouvez également utiliser la commande "Aller au dossier..." du menu "Aller" du Finder pour voir vos fichiers swapfile se créer selon les besoins du système en tapant dans le champ de recherche :
/Volumes/nomdelapartition/.vm
 
À part ça, très bien, le descriptif.
 
Tu n'est pas obligé de mettre un point. Grâce à la commande chflags tu peux rajouter un flag hidden à un dossier. Les dossiers invisibles à la racine sont tous en HIDDEN.

ls -aO pour voir les flags.

ça donnerai ça :

Bloc de code:
sudo chflags hidden /Volumes/nomdelapartition/vm
 
L'idéal c'est d'avoir assez de mémoire vive pour que le disque ne swap pas ;)

Sinon c'est assez clair pour peu que le terminal et les commandes Unix ne rebutent pas.
 
et que se passe-t-il si la partition ne monte pas "directement" au démarrage ?
Je pose cette question parce que j'avais déjà eu des problèmes de montage de partition en retard. Le démon lancé au démarrage voulait écrire sur cette partition. Ne la trouvant pas il créait tout seul l'arboressence dans /Volumes/toto
ce qui fait que le vrai disque montait en /Volumes/toto2. De ce fait, le pont de montage normale n'existait plus...
Je ne sais pas si j'ai été très clair, mais SM voit tout à fait ce dont je parle ;)
 
J'avais fait la manip avec les vieilles versions de Mac OSX. J'ai pas fait gaffe jusqu'au jour où je me suis rendu compte que mon swap était revenu à sa place originale. Donc je pense que certaines mise à jour de l'OS vont écraser les modifs.
 
Je remonte cette discussion, car je souhaiterai savoir si cette manipulation aurait ancore un intérêt quelconque sur la machine suivante :

Mac Pro 2006 / Snow Leopard 10.6.7
Disque dur système SSD OCZ Vertex 2 120 Go
Changement aujourd'hui d'un des disques pour un 1 To Sata 300 (je ne sais pas encore la marque :))

Utilisation principale : graphisme avec Blender et Photoshop. Second Life.

Merci
 
Et où voudrais-tu mettre cette partition de swap ?

Je pense que le disque le plus rapide est le SSD donc le swap y serait mieux. Comme c'est le disque système, déporter le swap sur un autre disque ne me paraît pas judicieux.
 
Juste pour info,

Sur certain système ou sur Snow le fichier n'est pas éditable comme ca

si on l'ouvre avec TextEdit on obtient ceci:

Bloc de code:
bash-3.2# cat /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist 
bplist00##
_HopefullyExitsLast_EnableTransactions_ProgramArgumentsXOnDemandULabel          #

_/sbin/dynamic_pagerR-F_/private/var/vm/swapfil_com.apple.dynamic_page(=PY_`ae{~###

Oui c'est avec la commande cat mais ca revient au meme.

Si vous voulez savoir lire le fichier utilisez la commande suivante:

Bloc de code:
bash-3.2# defaults read /System/Library/LaunchDaemons/com.apple.dynamic_pager       
{
    EnableTransactions = 1;
    HopefullyExitsLast = 1;
    Label = "com.apple.dynamic_pager";
    OnDemand = 0;
    ProgramArguments =     (
        "/sbin/dynamic_pager",
        "-F",
        "/private/var/vm/swapfile"
    );
}
bash-3.2#

Vous pouvez ensuite faire une copie du fichier original par sécurité, et refaire ce fichier avec ce qui est sortit en clair (avec TextEdit), et bien sûr changer le chemin avec le chemin voulu

:D
 
On peut aussi utiliser la commande plutil.
Pour reprendre ton exemple, la commande suivante :
Bloc de code:
plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.dynamic_pager
convertit le fichier de préférences en mode XML (donc texte).
Le fichier est alors éditable et directement utilisable. À la prochaine utilisation de l'interface graphique, il sera sans doute remis au format binaire.
 
Bonjour,

je remonte ce post cars je recherche des méthode pour optimiser l utilisation de mon SSD OCZ qui me fait des freeze permanent :mad:

Donc installation d'un RamDisk pour y installer les cache de safari et Firefox

ca j'ai trouver sans problème sur le forum

Déplacement de la Swap sur une micro Cles USB ultra rapide

Ca j'ai trouver des méthode pour Tiger, Leopard, Snow, mais pas Lion...

je voulais donc savoir si la méthode indique dans ce post est aussi valable pour Lion

merci de votre Aide
 
En quoi déplacer les fichers d'échange arrangerait tes problèmes de blocage ?