Swap et Mac OS X
Par kiwi le mardi, septembre 21 2010, 10:22 - Mac OS X - Lien permanent
Je pense que pas mal d'entre vous l'ont remarqué mais OS X a une gestion de la mémoire étrange... Peut-être que cela vient des méandres de OS 9 ou autres... Mais même avec 4Go au bout de 15 jours d'utilisation on arrive a avoir 10Go de SWAP...
Il est bien possible que le swapper colle sur le disk toutes pages inutilisée depuis longtemps et vu que HFS+ a tendance a fragmenter comme un malade... On se retrouve avec une becanne inutilisable et ça me rends dingue.
Donc, il suffit donc de mettre le swap, sur une partition (ou un disque) dédié(e).
Je laisse faire cette partie, car elle est simple, sur mon iMac24" j'ai pris un disk externe sur le port firewire, car il sert pas a grand chose. La partition est en format Mac OS X, sensible à la casse, non journalisée.
Il reste a faire comprendre au dynamic_pager qu'on veux le faire swapper ailleurs. Cette manip est a faire juste après un reboot, car si vous avez plein de swap, je ne sais pas comment OS X vas réagir.
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
Ce qui désactive le swap. Après vous pouvez allègrement faire un :
$ sudo rm /private/var/vm/swapfile*
Pour supprimer tout les fichiers de swap inutilisés.
Pour reconfigurer le dynamic_pager, il faut lui dire que le swap directory n'est plus dans /private/var/vm/swapfile mais dans /Volumes/Swap/swapfile/swapfile :
$ cd /System/Library/LaunchDaemons/ $ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
Et editer le fichier XML qui doit ressembler a ça :
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EnableTransactions</key> <true/> <key>HopefullyExitsLast</key> <true/> <key>Label</key> <string>com.apple.dynamic_pager</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/sbin/dynamic_pager</string> <string>-F</string> <string>/private/var/vm/swapfile</string> </array> </dict> </plist>
Il reste plus qu'as remplacer la ligne :
<string>/private/var/vm/swapfile</string>
Par
<string>/Volumes/Swap/swapfile/swapfile</string>
Et reconvertir en binaire le XML :
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
Et relancer le dynamic_pager:
$ sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
Et voila 
Commentaires
Le monde est petit
Je cherchais justement à déplacer le swap d'un mac mini.
Petite question, si tu sais y répondre, comment ajouter un second emplacement de swap (de manière à conserver celui dans /private/var/vm/swapfile) et un autre, avec une priorité à l'utilisation ?
Histoire que si le disque dur est débranché, on ai quand même du swap.