» Catégorie : Mac OS X

Swap et Mac OS X

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 :)

Mac OS X et AddressBook

Mac OS X, utilise l'AddressBook pour plein de choses et se le partage entre applications :

  • Mail
  • iChat
  • Safari
  • AdiumX
  • ...

Le soucis c'est que des fois, le carnet d'adresses est un peu en état lamentable (et là, on dirais que le partenariat avec Microsoft il y a des années a frappé), et donc toutes les applis qui y accèdent se mettent a ramer comme c'est pas possible.

Le "workaround", consiste a :

  1. Créer 10 fiches dans votre carnet d'adresses (n'importe quoi, du moment qu'il y ait au moins une entrée dedans).
  2. Supprimer les fichiers ~/Library/Application Support/AddressBook/ABPerson.*, évidement une fois que toutes les applis accédant au carnet d'adresses sont arrêtées.

Le résultat, pour ma part est fulgurant...