Windows 10 : trop de cœurs nuisent à la performance ?
Plus de cœurs, ça n’est pas toujours mieux. On pourrait imaginer que l’acquisition d’une machine surpuissante dotée de 24 cœurs ferait des merveilles en termes de performances. Mais sur son blog, le programmeur Bruce Dawson a déchanté.
Celui-ci explique en effet qu’il constatait des ralentissements inexpliqués sur sa machine, ralentissements qu’il ne retrouvait pas lorsqu’il changeait de configuration en passant sur un autre OS ou en faisant fonctionner Windows 10 sur une machine plus traditionnelle.
Bruce Dawson travaille actuellement pour Google et plus spécifiquement pour Chrome. Mais comme l’explique sa biographie, il a également travaillé par le passé pour Microsoft, principalement dans le domaine du debugging et de l’amélioration des performances. Avec un tel pedigree, le programmeur a donc cherché à comprendre un peu plus en détail ce qui provoquait ces ralentissements inexpliqués sur sa machine.
Le comportement du processeurs à l’exécution du script conçu par Bruce Dawson : dans le premier cas de figure (Windows 10) on constate un ralentissement dû au fait qu’un seul cœur du processeur traiter les processus, un à un. Ce comportement ne se retrouve pas sur Windows 7, qui peine certes à lancer les processus, mais les referme bien plus facilement et exploite la totalité des ressources du processeurs.
Pour cela, il s’est donc penché sur le fonctionnement du processeur via les informations collectées par Windows et des outils d’analyse de performance. Des analyses qui lui ont permis d’affiner son diagnostic : un processus spécifique lié à la fermeture des processus en cours et appelé NtGdiCloseProcess.
Sans entrer dans les détails techniques et complexes, ce processus ne parvient pas à exploiter correctement les cœurs multiples afin de paralléliser ses taches, et celles-ci sont traitées de façon sérielle par un seul cœur. Une utilisation non optimale de la mémoire, qui a pour effet de causer des ralentissements sensibles de la machine lorsque celle-ci doit fermer de nombreux processus en même temps.
Afin de tester ce phénomène, le chercheur a ainsi créé un script capable de créer à la volée plus de 1000 processus, puis d’attendre quelques secondes avant de les fermer brutalement. Le comportement diffère radicalement lorsque Bruce Dawson retente l’expérience sur Windows 7, qui utilise de son côté l’ensemble des cœurs pour exécuter les processus.
Pour le chercheur, ce phénomène illustre la loi d’Amdhal, une loi qui tente d’expliquer les limites inhérente à la distribution des calculs sur plusieurs cœurs et l’effet de « bottleneck » de certaines taches qui ne peuvent pas être parallélisées.
Comme le constate Bruce Dawson, des redémarrages fréquents de la machine peuvent aider à minimiser les effets de ce bug. Le chercheur ajoute avoir informé Microsoft de ce problème, et que les équipes sont en train d’investiguer le problème. On peut donc espérer une résolution de celui-ci dans un patch à venir.