Réduction de la mémoire d'exécution sous Windows 8

Conception de Windows 8

Vision en coulisses de l'équipe d'ingénierie Windows

Réduction de la mémoire d'exécution sous Windows 8

  • Comments 0

Les fondamentaux, tels que l'utilisation de la mémoire représentent un principe d'ingénierie clé de Windows 8. Avec la conception de Windows 8, notre objectif est de réduire de façon majeure la mémoire d'exécution totale requise du système central. Cela est toujours apprécié de tous, en particulier dans un monde où chacun souhaite exécuter de plus en plus d'applications en même temps ou les exécuter sur un système doté de seulement 1 ou 2 Go de mémoire. L'ordinateur portable dont nous parlons dans ce billet est exactement le même que celui sur lequel nous nous sommes appuyés lors de la PDC de Windows 7 en 2008 : un miniportable commercial, de première génération, de type ATOM, doté de 1 Go de mémoire. Ce billet, qui décrit nos efforts visant à réduire l'encombrement de la mémoire, a été rédigé par Bill Karagounis, chef de projet au sein de l'équipe Performances. --Steven

L'utilisation de la mémoire d'exécution de Windows 8 constitue un facteur important pour déterminer la configuration système requise de Windows 8, ainsi que le nombre croissant de périphériques qui hébergeront Windows 8. Comme vous le savez, nous proposons l'expérience Windows 8 complète sur des périphériques SoC, caractérisés par une basse consommation d'énergie. Cela renforce encore l'importance d'avoir une mémoire disponible importante pour exécuter simultanément différentes applications et pour soutenir la réactivité globale des périphériques.

Voici une notion qui n'est peut-être pas évidente : la réduction de l'utilisation de la mémoire sur les plateformes à faible énergie peut prolonger l'autonomie de la batterie. Hum ? Sur n'importe quel PC, la RAM utilise constamment de l'énergie. Si un système d'exploitation utilise une mémoire considérable, cela peut forcer les fabricants à inclure plus de RAM physique. Plus vous avez de RAM, plus l'énergie utilisée est importante et moins la batterie dure longtemps. Avoir une RAM supplémentaire sur une tablette peut, dans certains cas, accroître de plusieurs jours la durée pendant laquelle la tablette peut rester sur votre table, en ayant l'air éteinte, tout en étant en réalité dynamique et actualisée.

Objectifs en matière d'utilisation de la mémoire

Depuis le début, notre objectif a été de proposer Windows 8 avec la même configuration système requise que Windows 7. Nous savons que si nous dépassons cet objectif, les ressources supplémentaires bénéficient aux applications, même si nous conservons la configuration requise publiée au même niveau. Il est amusant de se rappeler ce à quoi ressemblait le matériel « à valeur basse » en 2009 et de voir qu'aujourd'hui, les modules mémoire de 256 Mo sont devenus introuvables. Nous voulions nous assurer que les utilisateurs exécutant du matériel de l'époque de Windows 7 pourront mettre facilement à niveau leurs ordinateurs existants vers Windows 8 et bénéficier des avantages qu'il propose. En outre, de nombreux ordinateurs antérieurs à la version Windows 7 pourront exécuter Windows 8, d'après les tests que nous avons réalisés sur les anciens ordinateurs que nous conservons intentionnellement dans notre infrastructure de test des performances.

Dans Windows 8, il était important d'intégrer de nouvelles fonctionnalités tout en recherchant les opportunités de réduction de la mémoire utilisée de façon générale et par des fonctionnalités existantes. Windows 8 est sur la bonne voie pour satisfaire l'objectif que nous nous sommes fixé.

Comparaison de l'utilisation de la mémoire du Gestionnaire des tâches

La façon la plus simple de comparer l'utilisation de la mémoire sur Windows 8 et sur Windows 7 est d'installer les deux systèmes d'exploitation sur un ordinateur doté de 1 Go de RAM (configuration requise minimale pour le système d'exploitation) et de les comparer après les avoir redémarrés plusieurs fois, puis les avoir laissés inactifs.

Le Gestionnaire des tâches de Windows comporte la vue principale de la mémoire système via ses statistiques « En cours d'utilisation » (décrites en détail dans ce document). Les graphiques ci-dessous comparent la consommation de mémoire sur le miniportable de 3 ans de Steven (qu'il a utilisé récemment lors de sa présentation //build/), exécutant Windows 7 lorsqu'il est inactif, puis avec la même machine exécutant Windows 8.

Gestionnaire des tâches de Windows 7. Utilisation de l'UC : 5 %, Mémoire : 404 MoFigure 1 : utilisation de la mémoire sous Windows 7 SP1

Gestionnaire des tâches de Windows 8. Utilisation de l'UC : 1 %, Mémoire : 281 MoFigure 2 : utilisation de la mémoire sous Windows 8

Le matériel spécifique constituant une machine, l'utilisation de la mémoire des pilotes et même le temps d'activité peuvent provoquer des variations. Par conséquent, les résultats en mémoire sont différents en fonction des machines (ou même sur la même machine à des moments différents). Comme vous pouvez le constater toutefois, Windows 8 se comporte mieux que Windows 7.

Pour vous amuser davantage sur une machine test, ouvrez le Gestionnaire des tâches et désactivez votre carte vidéo (déchargez le pilote graphique). Vous n'exécuterez jamais votre machine de cette façon, mais cela vous donnera une idée encore plus précise de la mémoire utilisée par Windows lui-même. Une fois le pilote graphique désactivé, la machine ci-dessus passe sous la barre des 200 Mo après une période d'inactivité.

REMARQUE : pour Windows 8, une nouvelle installation contient également la technologie Windows Defender étendue qui, pour la première fois, intègre la fonctionnalité anti-programmes malveillants complète (également optimisée pour l'utilisation de mémoire et des ressources comme l'indique le blog de Jason sur la protection contre les programmes malveillants. (Cette fonctionnalité n'existe pas sur une nouvelle installation de Windows 7 où il est recommandé d'ajouter un logiciel de sécurité).

Faire de la place dans Windows 8

Nous avons apporté des centaines de changements spécifiques pour réduire l'utilisation de mémoire du système d'exploitation dans Windows 8. Je vais aborder certains aspects spécifiques qui ont permis de réduire considérablement la mémoire utilisée.

Combinaison de mémoire

Lorsque vous accédez au contenu de la RAM sur un PC typique en cours d'exécution, de nombreuses parties de la mémoire ont le même contenu. Les copies redondantes des données sur la RAM système représentent une opportunité de réduire l'encombrement de la mémoire, même pour les services ou composants du système d'exploitation.

Comment cela est-il possible ? Les applications allouent parfois de la mémoire pour une utilisation future et s'initialisent toutes avec la même valeur. L'application peut ne jamais avoir à utiliser la mémoire, car elle est là pour anticiper des fonctionnalités que l'utilisateur peut ne jamais appeler. Si plusieurs applications en cours d'exécution se comportent ainsi en même temps, le système compte des copies redondantes de mémoire.

La combinaison de mémoire est une technique dans laquelle Windows accède efficacement au contenu de la RAM système lors d'une activité normale et localise le contenu dupliqué dans toute la mémoire système. Windows libère ensuite les doublons et ne conserve qu'une seule copie. Si l'application tente d'écrire dans la mémoire à l'avenir, Windows lui donne une copie privée. Tout cela se produit en arrière-plan dans le gestionnaire de mémoire, sans aucun impact sur les applications. Cette approche peut libérer des dizaines ou des centaines de Mo de mémoire (selon le nombre d'applications qui s'exécutent simultanément).

Changements de services et réductions

Les services du système d'exploitation configurés pour s'exécuter en permanence constituent une source importante d'utilisation de mémoire ambiante. Lorsque nous avons évalué l'ensemble des services du système d'exploitation au cours de la planification de Windows 8, nous avons décidé d'en supprimer un certain nombre (13), de déplacer un autre ensemble de services vers le démarrage « manuel » et de transférer certains des services « toujours en cours d'exécution » vers un modèle de « démarrage sur demande ». C'est là qu'un « déclencheur » dans le système d'exploitation (comme l'arrivée d'un périphérique ou la disponibilité d'une adresse réseau) provoque ce qui suit :

  1. Le service démarre.
  2. Le service effectue les tâches qui lui sont propres (quelles qu'elles soient).
  3. Il reste un peu sur place pour s'assurer qu'il n'a pas oublié de faire autre chose.
  4. Le service s'en va.

Vous remarquerez que Plug and Play, Windows Update et le Service d'infrastructure de pilote mode-utilisateur sont tous lancés par un déclencheur dans Windows 8, contrairement à Windows 7 où ces services étaient en permanence en cours d'exécution.

Nous avons bien sûr ajouté une tonne de nouvelles fonctionnalités (et du nouveau code) à Windows 8. Certaines sont intégrées sous la forme de nouveaux services. Sur ces nouveaux services, deux démarrent automatiquement. Tous les autres se lancent manuellement ou par déclencheur.

Faire la même chose avec moins de mémoire

Lorsque Windows exécute des applications et effectue la maintenance de son propre système, des fichiers et données de programme sont transférés du disque vers la mémoire principale. Lors du développement de Windows 7 et Windows 8, jusqu'à maintenant, nous avons analysé des parties (pages) de mémoire pendant l'exécution normale et la fréquence de leur référencement. L'idée ici est que, si vous devez payer le prix de l'allocation d'une partie de la mémoire, autant l'utiliser (la référencer) souvent. Si vous ne référencez pas souvent cette mémoire mais que vous en avez besoin, consolidez-la avec autre chose.

Peu après la sortie de Windows 7, nous avons appliqué une technique semblable à plusieurs des composants de bas niveau de Windows datant des débuts de NT (début des années 1990). Le travail incluait la ré-architecture du code et le changement des structures de données pour séparer complètement les parties « chaudes » de la mémoire (fréquemment référencées) des parties « froides ». En condensant les éléments chauds, nous sommes parvenus à réduire le coût mémoire d'exécution global.

Étant donné la nature des changements (système d'exploitation de bas niveau), nous voulions terminer le travail aussi rapidement que possible dans l'agenda pour avoir le temps de les exécuter. Ces changements ont pour le moment été intégrés à Windows 8 depuis presque 2 ans auprès de milliers d'employés Microsoft qui utilisent le produit dans leur travail quotidien. Et nous avons constaté des résultats cohérents montrant une utilisation de la mémoire réduite par dizaines de Mo sur une machine moyenne.

Initialisation tardive du « Bureau »

En juin, vous avez vu Steven et Julie présenter l'interface utilisateur de style Metro pour la première fois. Nous espérons que de nombreux utilisateurs de tablettes passeront beaucoup de temps dans cet environnement, en général en utilisant des applications de style Metro. Au cours de cette démonstration, nous avons également montré que pour Windows 8, vous pouvez mettre en avant vos applications existantes et les utiliser dans l'environnement familier du Bureau.

Du point de vue de la mémoire, nous avons tiré parti du fait que sur un certain nombre de périphériques, les utilisateurs resteront dans l'interface utilisateur de style Métro immersive presque tout le temps. Dans ce cas, Windows 8 n'initialisera les composants du système d'exploitation uniques à l'environnement du Bureau que lorsque cela sera nécessaire. Ceci est une autre source d'économie de la mémoire, environ 23 Mo actuellement. (Notez que, comme le Gestionnaire des tâches s'exécute sur le Bureau, les chiffres de mémoire illustrés ci-dessus incluent son coût).

Définition plus précise des priorités de la mémoire

Le modèle dont dispose Windows 8 pour définir les priorités des allocations de mémoire effectuées par les applications et les composants système est mieux adapté. En d'autres termes, Windows est mieux armé pour choisir la mémoire à conserver et celle qu'il peut supprimer plus rapidement.

Par exemple, les programmes antivirus effectuent diverses vérifications sur les fichiers lorsqu'ils sont ouverts par d'autres programmes. La mémoire que le programme antivirus alloue pour vérifier les signatures des virus est généralement allouée une seule fois (il est peu probable que cette mémoire spécifique soit de nouveau nécessaire). Sur Windows 7, la mémoire est traitée comme si elle avait la même priorité dans le système qu'une autre mémoire (par exemple la mémoire allouée par une instance en cours d'exécution de Microsoft Excel). Si la mémoire devenait rare, Windows 7 pouvait finir par supprimer la mémoire qui aidait une autre application en cours d'exécution (comme Excel) à rester réactive pour l'utilisateur, ce qui n'aurait pas été idéal pour la réactivité du système dans ce cas.

Sur Windows 8, les programmes ont la possibilité d'allouer de la mémoire à « faible priorité ». Ceci est un signal important pour Windows de savoir que, en cas de nécessité, Windows peut supprimer la mémoire à faible priorité pour libérer de l'espace, et cela n'affecte en rien l'autre mémoire nécessaire à la réactivité du système.

Pour conclure, j'ai suivi notre philosophie et approche pour réduire l'utilisation de mémoire dans Windows 8. Vous avez vu certains exemples de résultats, mais je n'ai fait qu'effleurer le travail d'ingénierie réalisé jusqu'à ce jour dans ce domaine. Je n'ai par exemple pas abordé le modèle d'application de Windows 8 et les changements apportés tout au long du processus pour rendre les nouvelles applications de Windows 8 plus « conviviales en matière de mémoire ». Recherchez ces sujets dans le contenu //build/ et dans les billets à venir, car c'est une part réellement importante de l'histoire de la réimagination de Windows.

Nous avons déjà parcouru un long chemin, mais tout n'est pas terminé.

--Bill Karagounis

  • Loading...
Leave a Comment
  • Please add 1 and 8 and type the answer here:
  • Post