<p>J’ai examiné les traces xperf de plusieurs utilisateurs et ici la fonction <code>ntoskrnl.exe!SmKmStoreHelperWorker</code> du noyau commence à allouer de la mémoire.</p>
<p>(Cliquez sur l’image pour agrandir)</p>
<p>J’ai découvert cela sur <a href="http://forum.sysinternals.com/need-help-with-ntoskrnl-thread-causing-high-cpu_topic29289_post146738.html#146738">sysinternals</a>.</p>
<p>J’ai demandé à Microsoft et la réponse est que c’est voulu. Cela est lié à la compression de la mémoire système.</p>
<p>Dans <a href="http://blogs.windows.com/bloggingwindows/2015/08/18/announcing-windows-10-insider-preview-build-10525/">l’annonce du Build 10525 de Windows 10, Microsoft l’a un peu expliqué</a> :</p>
<blockquote></blockquote>
<p>Dans Windows 10, nous avons ajouté un nouveau concept dans le gestionnaire de mémoire<br>
appelé un magasin de compression, qui est une collection en mémoire de<br>
pages compressées. <strong>Cela signifie que lorsque le gestionnaire de mémoire détecte une<br>
pression mémoire, il <em>compressera les pages inutilisées au lieu de les écrire sur<br>
le disque.</em></strong> Cela réduit la quantité de mémoire utilisée par processus, permettant<br>
à Windows 10 de maintenir plus d’applications en mémoire physique simultanément.<br>
Cela contribue également à offrir une meilleure réactivité dans Windows 10. Le<br>
magasin de compression réside dans l’ensemble de travail du processus System. <strong>Puisque le<br>
processus System détient le magasin en mémoire, son ensemble de travail grandit<br>
exactement quand de la mémoire est libérée pour d’autres processus. Ceci<br>
est visible dans le Gestionnaire des tâches et la raison pour laquelle le processus System semble<br>
consommer plus de mémoire que les versions précédentes.</strong></p>
<p>Donc, au lieu d’écrire les données mémoire dans le fichier d’échange, il les compresse. Et cette mémoire compressée est affichée dans le processus System.</p>
<p>Microsoft a également publié plus de détails dans le hub Insider. <a href="http://www.winbeta.org/news/microsoft-educates-insiders-windows-10-handles-memory">Winbeta a créé un article</a> qui inclut plus de détails.</p>
<blockquote></blockquote>
<p>Apparemment, la raison de cela est liée au choix de Microsoft de<br>
suspendre les applications UWP lorsqu’elles n’étaient pas au premier plan, de manière très<br>
similaire à la gestion de certains systèmes d’exploitation de smartphones. Les utilisateurs de Windows 8 comprenaient<br>
(peut-être pas) que si les applications n’étaient pas à l’écran, elles ne fonctionneraient pas jusqu’à ce que<br>
l’utilisateur revienne dessus. L’approche « tout ou rien » est mise à jour<br>
<strong>avec Windows 10 introduisant une couche entre le fichier d’échange et<br>
l’activité de pagination normale. Maintenant, face à des problèmes de pression mémoire,<br>
le gestionnaire de mémoire déterminera quelles pages devraient être déplacées vers la liste modifiée dans<br>
un processus appelé écrêtage.</strong> La liste modifiée est une liste secondaire de<br>
fichiers d’échange sauvegardant une liste de fichiers d’échange en attente. Une liste de sauvegarde est<br>
capturée au cas où la mémoire serait récupérée de la liste d’attente par un autre<br>
processus, et le processus original viendrait chercher sa page. <strong>Au lieu<br>
du tout ou rien, le gestionnaire de mémoire de Windows 10 compressera les pages inutilisées plutôt<br>
que de les écrire sur le disque. Avec moins d’écritures, le résultat devrait être<br>
moins d’opérations disque</strong> — grâce à la compression — et désormais plus de données<br>
peuvent être stockées en mémoire.</p>
<blockquote></blockquote>
<p>Selon l’équipe Windows, « <strong>En pratique, la mémoire compressée occupe<br>
environ 40 % de la taille non compressée, et par conséquent, pour un appareil typique<br>
exécutant une charge de travail typique, Windows 10 écrit des pages sur le disque<br>
seulement 50 % aussi souvent que les versions précédentes du système d’exploitation.</strong> » Si tout se passe<br>
comme prévu, <strong>les utilisateurs Windows pourraient bénéficier de temps d’attente réduits<br>
pour tous les appareils ainsi que de durées de vie prolongées pour les systèmes équipés<br>
de disques durs flash</strong>.</p>
<p>La décompression est également quelque chose que Windows 10 est conçu pour bien faire.<br>
Windows 10 utilise la combinaison de la parallélisation et des<br>
lectures séquentielles pour produire des pages en mémoire une fois appelées. La nouvelle<br>
décompression devrait offrir une expérience plus rapide car Windows 10<br>
décompresse simultanément les données et les lit en parallèle en utilisant<br>
plusieurs processeurs. Les anciennes versions de Windows pouvaient sembler lentes<br>
en raison des taux de transfert entre le disque.</p>
<p>Microsoft a également publié une vidéo sur Channel9 qui explique cette fonctionnalité.</p>
<p><strong>Compression de la mémoire dans Windows 10 RTM</strong></p>
<p><a>https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM</a></p>
<blockquote></blockquote>
<p>Dans cette vidéo, Mehmet Iyigun a passé du temps à expliquer pourquoi le processus<br>
System dans Windows 10 utilise un peu plus de mémoire et pourquoi c’est une bonne<br>
chose. Un processus utilisant plus de mémoire semble être une mauvaise chose — c’est<br>
le cas jusqu’à ce que l’on comprenne mieux la gestion de la mémoire, la pagination et les défauts de page<br>
matériels/logiciels. Il s’avère que le système d’exploitation effectue des optimisations<br>
intelligentes qui permettent à vos processus de réduire une partie de la mémoire sans<br>
nécessairement la paginer sur le disque. Non seulement la mémoire est préservée<br>
en RAM, mais elle est aussi compressée — rendant les défauts de page matériels plus<br>
rares. Les résultats devraient offrir une expérience plus réactive.</p>
<p>Dans les derniers builds TH2, Microsoft a mis à jour la description dans le Gestionnaire des tâches et affiche désormais aussi que le processus SYSTEM héberge la <code>mémoire compressée</code> :</p>
<p>pour éviter les confusions sur l’utilisation « élevée ».</p>
<p>Dans la mise à jour anniversaire de Windows 10, publiée en août 2016, Microsoft a extrait la compression dans un pseudo-processus maintenant affiché appelé <code>Memory Compression</code> pour ne plus confondre les utilisateurs sur la raison de l’utilisation mémoire élevée de SYSTEM :</p>
<p>Mais il semble que le Gestionnaire des tâches n’affiche pas ce processus ; seuls ProcessExplorer/ProcessHacker sont capables de l’afficher. Le Gestionnaire des tâches affiche uniquement la quantité de mémoire compressée dans l’aperçu :</p>
<p>Si vous survolez le graphique de mémoire utilisée dans le Gestionnaire des tâches, vous voyez une info-bulle qui montre la quantité de données compressées.</p>
<p>Dans cette démonstration, 388 Mo sont compressés à 122 Mo, donc 267 Mo sont économisés grâce à la compression.</p>