Ouvrir le menu principal

MacGeneration

Recherche

DispatchView expose le fonctionnement du multitâche sur Mac

Nicolas Furno

jeudi 11 mai 2017 à 12:04 • 11

macOS

Saviez-vous que les sauvegardes Time Machine de votre Mac ne débutaient pas précisément toutes les 60 minutes ? En théorie, la sauvegarde est mise à jour toutes les heures, mais dans les faits, elle est parfois en avance ou en retard de quelques minutes. Ce n’est pas un bug, c’est voulu : depuis macOS Sierra, la décision de lancer ou de retarder une sauvegarde dépend de Grand Central Dispatch (GCD).

La sauvegarde automatique de Time Machine se fait à peu près toutes les heures. Cliquer pour agrandir

Cette technologie est présente dans le système d’Apple depuis 2009 et Snow Leopard (et iOS 4 en 2010). GCD facilite la gestion des processeurs multi-core qui sont la norme depuis plus de dix ans pour les Mac. Avant son arrivée, les développeurs de chaque app devaient gérer tous les cœurs à disposition pour optimiser leurs logiciels. C’était une tâche difficile et très peu d’apps le faisaient et encore moins le faisaient correctement.

C’est pourquoi Apple a pris les choses en main avec GCD, une technologie qui met en parallèle les tâches au sein d’un programme et au sein du système d’exploitation. En fonction des besoins et des ressources disponibles, les tâches sont positionnées et programmées sur un cœur ou sur un autre. L’idée étant d’éviter les ralentissements en répartissant la charge sur tous les cœurs, notamment pour éviter le blocage complet de l’interface (la fameuse roue colorée de macOS).

Le principe de GCD est facile à saisir instinctivement. Néanmoins, Quand on essaie de comprendre comment il fonctionne concrètement, c’est une autre paire de manches. Le système est devenu extrêmement sophistiqué au fil des années et la prise de décision dépend d’un si grand nombre de critères que GCD apparaît comme une boîte noire pour la majorité des utilisateurs et même pour les développeurs. En particulier, la gestion de la priorité, pour savoir quelle tâche doit être exécutée en premier, est très difficile à comprendre.

L’icône de Grand Central Dispatch. Cliquer pour agrandir

macOS compte toujours plus sur ce système de gestion de tâches et c’est tout particulièrement le cas avec El Capitan et Sierra. Certains bugs de ces systèmes sont sans doute liés à GCD, puisqu’il prend en charge de plus en plus de fonctions du système. Les coupures de Bluetooth que l’on observe parfois avec Sierra sont peut-être associées à GCD plutôt qu’aux pilotes eux-mêmes.

Pour en revenir à Time Machine, un bug rare (le Mac ne devait pas entrer en veille pendant plusieurs jours de suite) corrigé avec macOS 10.12.4 pouvait bloquer complètement les sauvegardes automatiques. GCD est, au moins en partie, responsable : c’est lui qui lance une sauvegarde automatique, et non plus le processus historique launchd. Ce choix a permis à Apple d’optimiser encore davantage son système de sauvegarde et le choix d’initier ou de retarder une mise à jour dépend aussi de votre utilisation du Mac.

Une heure après la sauvegarde précédente, macOS essaie de deviner ce que vous faites avec votre ordinateur pour décider de lancer une nouvelle sauvegarde ou la retarder de quelques minutes. Cela passe par l’utilisation du processeur, naturellement, mais ce n’est pas le seul critère. GCD a été développé avec l’optimisation de l’autonomie en tête et le lancement de la sauvegarde dépend aussi d’autres choses certainement liés à l’état de la batterie sur les portables.

Cette sophistication permet d’améliorer les performances de macOS, mais elle complique au passage la recherche face à un bug. Pour essayer de mieux comprendre le fonctionnement de GCD, DispatchView est un utilitaire gratuit qui filtre l’historique de macOS (les logs) pour n’afficher que ce qui concerne GCD. Il affiche l’information sur deux colonnes : à gauche, la liste des messages envoyées par le Duet Activity Scheduler (DAS), le composant qui détermine la priorité de chaque tâche ; à droite, la liste Centralized Task Scheduling (CTS) qui exécute ou programme les tâches en fonction de cette priorité.

À gauche, l’analyse de GDC pour lancer ou retarder certaines tâches ; à droite, l’exécution des tâches en fonction de ce qui a été décidé. Ici, on voit la décision d’initier une sauvegarde Time Machine. Cliquer pour agrandir

L’interface est rudimentaire et les informations remontées par macOS ne sont pas toujours très lisibles. Mais en cas de problème lié à GCD, cet outil peut servir à déterminer la cause. Sur la capture d’écran, on voit à droite que la sauvegarde Time Machine a été initiée grâce à ce message :

2017-05-11 10:01:39.242046+0200  localhost UserEventAgent[52]: (com.apple.cts) [com.apple.xpc.activity.All] DAS told us to run com.apple.backupd-auto

On peut alors chercher dans la colonne de gauche la décision du DAS en retrouvant à peu près la même heure. Les messages ne sont pas explicites, mais vous verrez parfois des tâches qui sont suffisamment importantes et qui vont ainsi être exécutées par le CTS :

2017-05-11 10:01:39.240029+0200  localhost DuetHeuristic-BM[109]: (DuetActivitySchedulerDaemon) [com.apple.duetactivityscheduler.scoring] '<private>' CurrentScore: 0.931058, ThresholdScore: 0.780057 DecisionToRun:1

Et parfois, des tâches qui ne sont pas suffisamment importantes et qui ne sont pas exécutées. Ce qui revient à retarder la tâche en question et éventuellement la relancer quelques secondes ou minutes plus tard selon les cas. Voici à quoi cela ressemble :

2017-05-11 10:01:39.238408+0200  localhost DuetHeuristic-BM[109]: (DuetActivitySchedulerDaemon) [com.apple.duetactivityscheduler.scoring] <private>:[
<private> ] sumScores:29.020000, denominator:29.020000, FinalDecision: Must Not Proceed FinalScore: 0.000000}

Seuls les développeurs au sein d’Apple qui travaillent sur Grand Central Dispatch pourraient comprendre la logique du DAS et savoir pourquoi une tâche est importante ou non. Cet utilitaire ne vous aidera pas vraiment, mais il offre une plongée fascinante dans l’envers du décor pour les plus curieux.

Et si vous voulez aller plus loin encore, Apple propose de nombreuses sessions techniques sur GCD à cette adresse.

Rejoignez le Club iGen

Soutenez le travail d'une rédaction indépendante.

Rejoignez la plus grande communauté Apple francophone !

S'abonner

L’UE recale un projet de loi voulant récupérer les données de navigation des français

20/02/2025 à 22:15

• 32


QNAP annonce un switch Ethernet 10 Gb/s 5 ports à un prix correct

10:20

• 1


Canal+ supprime la 4K aux abonnés sans engagement

09:44

• 67


L’UE recale un projet de loi voulant récupérer les données de navigation des français

20/02/2025 à 22:15

• 32


Refurb : large choix de Mac mini M4 de 589 € à 2 349 €

20/02/2025 à 21:00

• 28


Tim Cook vu à la Maison Blanche pour y rencontrer Donald Trump

20/02/2025 à 20:15

• 36


iPhone 16e : l’absence de MagSafe, un faux problème ?

20/02/2025 à 17:44

• 30


Canal+ propose maintenant Apple Music Familial à - 30 % à ses abonnés

20/02/2025 à 14:26

• 58


Amazon lance de nouveaux routeurs Eero Wi-Fi 7 plus abordables

20/02/2025 à 10:32

• 28


Les lacunes plus ou moins étonnantes de l’iPhone 16e

20/02/2025 à 09:11

• 149


Refurb : le MacBook Pro 14" M4 à 1 600 € et des versions à 1 ou 4 To de SSD

20/02/2025 à 07:31

• 19


Acer, premier constructeur à réajuster ses prix suite à la nouvelle taxe Trump sur la Chine

19/02/2025 à 21:45

• 52


Apple présente l’iPhone 16e pour remplacer l’iPhone SE 3

19/02/2025 à 18:12

• 286


Apple ferme sa boutique en ligne avant de présenter ses nouveautés

19/02/2025 à 16:54

• 30


Pi-hole bloque les publicités plus vite et plus fort

19/02/2025 à 15:30

• 66


Apple In China, un nouveau livre à paraître sur l’histoire d’Apple en Chine

19/02/2025 à 14:45

• 2


iPhone SE 4 ou iPhone 16E ?

19/02/2025 à 14:02

• 76