Accélérer une sauvegarde Time Machine

Depuis quelques versions de macOS, Apple a implémenté une fonction qui permet de mieux gérer les SSD mais qui a le (gros) désavantage de ralentir dans certains cas les sauvegardes Time Machine. Si vous voulez accélérer les transferts, spécialement avec une sauvegarde en réseau, il existe une méthode.

Première étape, vérifier que le problème vous touche. Tapez la commande suivante pendant une sauvegarde et faites ensuite une recherche sur le mot THROTTLED dans le Terminal. S’il apparaît un peu trop, bingo (ou pas).

sudo fs_usage backupd

Si c’est le cas, vous pouvez maintenant taper cette commande.

sudo sysctl debug.lowpri_throttle_enabled=0

Depuis Mavericks, Apple intégré une fonction qui réduit la priorité des processus qui font des accès I/O, pour éviter de surcharger le CPU et ralentir la machine. Globalement, le problème se pose avec les vieux SSD (genre les modèles de 2008/2009) et les disques durs. Effet collatéral, ça touche les sauvegardes Time Machine qui se font sur un disque dur dans la majorité des cas. En gros, tous les traitements sur le SSD interne du Mac passeront avant la sauvegarde. En clair, ça ralentit pas mal la sauvegarde.

Le problème, il faut en être conscient, c’est que les transferts Time Machine peuvent bloquer le CPU et ralentir la machine quand l’option est désactivée. Typiquement, sur une machine peu puissante (MacBook, éventuellement MacBook Air, un modèle en Core 2 Duo), ce n’est pas une bonne idée de l’activer. Pour une sauvegarde ponctuelle (par exemple la première), ça peut par contre servir.

Lancer automatiquement la commande

Truc à savoir, la commande n’est pas persistante. Au redémarrage, macOS revient au comportement par défaut. Il est possible de changer ça (je vous le déconseille).

Premièrement, il faut créer un fichier qui va contenir un script.

sudo nano /Library/LaunchDaemons/fix-el-capitan-slow-time-machine-speed.plist

Ensuite, il faut copier le contenu suivant dedans.

<?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>Label</key>
<string>fix-el-capitan-slow-time-machine-speed</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/sysctl</string>
<string>debug.lowpri_throttle_enabled=0</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

Une fois que c’est sauvé, il faut donner les droits root et charger le script au démarrage.

sudo chown root /Library/LaunchDaemons/fix-el-capitan-slow-time-machine-speed.plist
sudo launchctl load /Library/LaunchDaemons/fix-el-capitan-slow-time-machine-speed.plist