Depuis la sortie de macOS Mojave il y a un an, des utilisateurs de Mac équipés de disques durs (Fusion Drive compris) se plaignent d'une dégradation des performances. Parcourir les dossiers du Finder ou obtenir la taille d'un gros dossier est encore moins rapide qu'avant.
Constatant lui aussi un ralentissement, Mike Bombich, le créateur de Carbon Copy Cloner, a mené une analyse. Sa conclusion est très claire : c'est APFS, le nouveau système de fichiers qui est imposé lors de la mise à jour vers Mojave, qui est responsable du freinage.
La régression touche spécifiquement l'indexation et est liée à la façon dont APFS organise l'ensemble des données sur le support de stockage. HFS+, l'ancien système de fichiers, préallouait sur le support un espace pour la structure du système de fichiers (schématisé par la section bleue sur le graphique ci-dessus). Lorsque l'on ajoutait des fichiers, leurs données s'inséraient dans les espaces libres du support (section verte), tandis que leurs métadonnées (noms des fichiers, hiérarchie des dossiers…) étaient groupées ensemble dans la partie bleue.
Au contraire, APFS « éclate » les métadonnées en les stockant aux côtés des données des fichiers. Avec le nouveau système, les métadonnées sont donc éparpillées sur le support de stockage. Ce n'est pas un problème pour les SSD qui peuvent lire indifféremment le premier et le dernier bloc de mémoire, mais c'en est un pour les disques durs.
Lors d'une opération d'indexation sous HFS+, la tête du disque dur avait seulement à se déplacer dans la section bleue dévolue aux métadonnées. Sous APFS, la tête du disque dur doit faire des aller-retour sur tout le plateau à la recherche des petits points bleus disséminés.
Selon les mesures de Mike Bombich, la première indexation d'un million de fichiers sur un disque dur est trois fois plus longue sous APFS par rapport à HFS+ (vous pouvez voir combien vous avez de fichiers en cliquant sur le bouton « Infos » de l'Utilitaire de disque — pour vous donner une idée, mes 450 Go de données sont constitués de 1,4 million de fichiers).
Plus on ajoute et supprime de fichiers à son disque dur, plus les performances se dégradent. Après 20 cycles (à chaque cycle le développeur remplaçait aléatoirement 5 % des fichiers), l'indexation est 15 à 20 fois plus lentes sous APFS, selon la configuration du système de fichiers.
Activer la fonction de défragmentation d'APFS, qui est peu documentée et désactivée par défaut, n'améliore pas vraiment les choses : l'indexation est accélérée à la marge seulement et on obtient le même résultat en conservant les instantanés.
Quand Apple dit qu'APFS est « optimisé » pour les SSD, elle ne ment pas : les disques durs n'ont pas été pris en compte pour cet aspect du système de fichiers. On se souvient que la migration vers APFS s'est faite en deux temps : d'abord les SSD avec High Sierra, puis les disques durs et Fusion Drive avec Mojave (à la suite d'une tentative avortée lors de la bêta de High Sierra). Cette année supplémentaire n'aura donc pas permis d'améliorer l'indexation sur les disques durs.
Le ralentissement de cette opération a des conséquences visibles pour les utilisateurs. Cela ne freine pas la copie des fichiers, mais cela rend la navigation dans l'arborescence du Finder plus lente, tout comme l'obtention des informations sur le poids d'un dossier. APFS ralentit également le démarrage, qui peut passer de quelques dizaines de secondes à plusieurs minutes.
Alors faut-il éviter APFS quand on a un disque dur ou un Fusion Drive ? Mike Bombich répond « non » malgré tout, car le nouveau système de fichiers apporte — heureusement — des bénéfices (instantanés, espace partagé…). De toute façon, Apple ne laisse pas le choix, la conversion est automatique lors du passage à Mojave. On trouve des tutoriels pour conserver HFS+ sous Mojave, mais puisqu'il ne s'agit pas d'un cas de figure prévu par Apple, on s'expose potentiellement à des problèmes.
Cette inadéquation d'APFS aux disques durs rend d'autant plus scandaleuse la commercialisation actuelle de l'iMac 21,5" équipé d'un tel support de stockage.