Windows a toujours eu un portail intégré vers un passé très récent : le compteur d’utilisation du processeur du Gestionnaire des tâches.

Gestionnaire des tâches sous Windows XP

« Le numéro du processeur dans le Gestionnaire des tâches est une petite nécrologie émouvante du passé immédiat », a expliqué l’ancien ingénieur de Microsoft Dave Plummer, « Ce n’est pas ce qui s’est passé au moment où vos yeux se sont posés sur la ligne. »

Plummer a écrit la version originale de Task Manager, à l’époque où il s’agissait d’une machine simple, méchante et destructrice de processus plutôt que l’outil considérablement plus potelé et plus câlin d’aujourd’hui. Il a depuis fait visiter le code source aux téléspectateurs, admettant en cours de route qu’il avait laissé son numéro de téléphone dans les commentaires tout en recherchant un étrange bug dans la façon dont les numéros de processeur étaient signalés. Ce bug fait l’objet de sa dernière explication.

utilisateur Windows ennuyé

« Windows est nul », déclare un ancien ingénieur de Microsoft et explique comment y remédier

Alors, comment le Gestionnaire des tâches a-t-il signalé le pourcentage de CPU ? La réponse est compliquée. Windows n’avait aucune valeur magique d’utilisation du processeur en attente d’être lue. Au lieu de cela, le gestionnaire de tâches de Plummer était piloté par une minuterie. Chaque fois que le timer se déclenchait, le code demandait au noyau les temps d’exécution cumulés et les comparait à l’échantillon précédent.

« Pour un processus individuel, le calcul correspond essentiellement au temps CPU cumulé actuel moins le temps CPU cumulé précédent. Et cela vous donne la quantité de CPU consommée par ce processus pendant l’intervalle entre les échantillons », a-t-il déclaré.

« Le pourcentage par processus correspond simplement au delta de ce processus divisé par le delta total. »

« Maintenant », a poursuivi l’ingénieur chevronné, « si cela ressemble au genre de chose que vous écrivez lorsque vous avez été enfermé trop longtemps dans un bureau avec un exemplaire de Petzold et beaucoup de café, c’est parce que c’est fondamentalement le cas. »

« Petzold » fait référence aux livres de Charles Petzold, qui étaient un compagnon indispensable pour les programmeurs Windows dans les années 1990, jusque dans les années 2000 et au-delà. De nombreux ingénieurs de longue date en ont probablement encore un ou deux exemplaires bien rédigés sur leurs étagères.

Aussi élégante que soit la solution, elle avait des rides. Des bizarreries occasionnelles dans les rapports du noyau Windows pourraient empêcher les pourcentages d’atteindre 100, provoquant une multitude d’affirmations dans le code – et une demande de contact direct avec Plummer si l’utilisation du processeur dépassait ce chiffre.

Et puis il y a le problème du matériel moderne. Plummer a déclaré : « À l’époque, la comptabilité du temps du planificateur et le débit réel du processeur étaient beaucoup plus étroitement couplés car les horloges du processeur étaient relativement statiques. Sur les processeurs modernes, cependant, le matériel change constamment de vitesse.

« Un noyau essentiellement inactif peut être ralenti, garé ou mis en veille, sirotant de l’énergie avec une paille à cocktail, puis dès l’instant où le travail réel apparaît, il peut passer à une fréquence beaucoup plus élevée ou même dépasser son horloge nominale. »

Comme la comptabilité de Task Manager était fondamentalement basée sur le temps, le travail accompli dans un intervalle donné variait énormément en fonction de la fréquence à laquelle le silicium fonctionnait.

« Le compteur n’a pas tort, mais il mesure en quelque sorte le taux d’occupation plutôt que la productivité. » Il a été construit pour une époque plus simple, avant que la mise à l’échelle et la limitation de la fréquence du processeur ne deviennent la norme.

« Lorsque les chiffres (aujourd’hui) semblent un peu glissants, ce n’est pas tant parce que l’outil est cassé que parce que le matériel cesse d’être assez simple pour qu’un seul pourcentage puisse vous raconter toute l’histoire. »

Plummer a dit Le registre: « Mon objectif principal était de prendre en compte chaque cycle, en m’assurant que chacun était correctement attribué au bon « centre de coûts », puis de déterminer la quantité de travail réel effectuée au cours de cette fenêtre de temps. Cela semble assez précis, et je suppose que, plus important encore, cela me « semblait » juste en termes de ce que faisait la machine. « 

Il n’a pas été en mesure de commenter la façon dont l’itération moderne du Gestionnaire des tâches a réalisé cette astuce, nous disant : « Je sais comment j’aurais fait, mais je déteste le supposer ! ®

A lire également