Si vous chargez un programme, Windows doit copier l’exécutable en mémoire afin de l’exécuter. Si vous fermez l’application, le programme existe toujours dans la mémoire vive. Si vous exécutez à nouveau le programme, Windows n’aura pas besoin de charger quoi que ce soit à partir du disque – tout sera assis dans la RAM.

Toute votre RAM utilisée devient un cache de disque dur. Parce que le disque est six ordres de grandeur plus lent que la RAM, vous voulez qu’autant de vos programmes et fichiers de données restent dans la RAM. Votre RAM inutilisée devient un cache. C’est ce qu’est la mémoire de secours. C’est la mémoire qui être immédiatement donné à toute application qui en a besoin, mais au lieu de cela est en attente dans le cas où le contenu est nécessaire:

  • https://i.imgur.com/NQwFGoB.png

Donc en ce moment sur mon ordinateur j’ai 8 Go de mémoire qui ne fait rien d’autre que d’être un cache pour le disque dur.

Maintenant, si un programme a besoin d’un peu de RAM, Windows va lui donner un peu de mémoire. Mais avant de pouvoir remettre de la mémoire à un programme, il doit s’assurer de mettre la mémoire à zéro au préalable.

Questionnaire du lecteur : Pourquoi Windows doit-il mettre à zéro la mémoire vive avant de pouvoir la donner à un autre processus ?

Windows conserve une certaine mémoire qui a été paresseusement mise à zéro, et qui est prête à être remise à une application au pied levé. Dans le Resource Manager, cette mémoire prête à partir est appelée *Mémoire libre ; vous pouvez la voir dans la capture d’écran ci-dessus.

On l’appelle aussi la liste des pages zerod, parce que la mémoire a été mise à zéro, et ne fait rien d’utile sur l’ordinateur :

  • https://i.imgur.com/47xDkzT.png

Qu’est-ce que SuperFetch ?

Ce que fait SuperFetch, c’est travailler avec le gestionnaire de mémoire pour charger de manière proactive et paresseuse des données dans la mémoire libre afin qu’elles soient déjà en cache lorsque vous allez les exécuter. SuperFetch sait quelles applications, jeux, outils de développement, vous chargez habituellement, et les pré-fetch paresseusement dans la RAM au cas où ils sont nécessaires.

Donc quand je vais charger WoW dans 3 minutes, ces 8 Go de textures de jeu seront déjà dans la RAM. Utilisez un outil comme RAMMap pour voir quels fichiers toute la RAM de votre ordinateur met actuellement en cache.

Quiconque vous dit de désactiver SuperFetch est un idiot, ne comprend pas les ordinateurs, et force Windows à être plus lent parce qu’il ne comprend pas la différence entre :

  • Mémoire libre en veille
  • Mémoire libre en zerod

Et cette personne a besoin d’une claque à l’arrière de la tête pour avoir intentionnellement rendu son ordinateur lent.

Les applications utilisent la mémoire ; pas la RAM

Une autre chose que la plupart des gens ne comprennent pas est la différence entre le jeu engagé et le jeu de travail. C’est plus facile à comprendre à l’époque où Windows 95 fonctionnait avec 4 Mo de mémoire.

  • Sur une machine monstre avec 16 Mo de RAM
  • je peux avoir un programme qui a engagé 1,5 Go de mémoire
  • mais qui n’utilise que 117 Ko de RAM

C’est parce que tout ce dont le programme a besoin pour fonctionner peut tenir entièrement dans 117 Ko. Le reste a soit été écrit dans le fichier d’échange, soit était déjà une copie d’un fichier (par exemple, je peux mapper un fichier de données de 1,5 Go dans mon espace d’adressage, et avoir engagé 1,5 Go de mémoire, tout en ne consommant aucune RAM)

Par exemple, l’un des gadgets de la Sidebar de Windows Vista/7 avait une fuite de mémoire…. Cela signifie que le processus Sidebar.exe continuait à engager de la mémoire (jusqu’à la limite de 2 Go pour un processus 32 bits), jusqu’à ce que le processus s’écrase parce qu’il n’avait plus de mémoire. Mais Sidebar.exe ne consommait que quelque 700 Ko de RAM, car toute cette mémoire fuyante était écrite dans le fichier d’échange (parce que personne ne l’utilisait pour quoi que ce soit).

C’est une raison pour laquelle vous ne désactivez pas votre fichier d’échange. Window peut copier des pages de mémoire vive sur le disque dur. Si les pages de RAM ne sont pas réellement utilisées, elles peuvent être réaffectées à d’autres choses (comme un cache disque), car la copie de sauvegarde de ces données se trouve dans le fichier d’échange. Si jamais sidebar demandait à nouveau cette mémoire (ce qui n’arrivera jamais, car il l’a oubliée), Windows peut rééchanger ces contenus de RAM à partir du disque dur.

tl;dr : j’ai 8.5 Go de mémoire libre:

  • 8 Go font quelque chose d’utile pour rendre ma machine plus rapide
  • 0,5 Go vont se perdre en ne faisant rien

Vous voulez que SuperFetch utilise votre mémoire – cela rend la machine plus rapide. Ne le désactivez pas.

Ces gens sont comme mon père. Il pense qu’il en sait juste assez pour être dangereux. Il m’a appelé pour se plaindre que sa machine Windows 7 prend 3 minutes pour démarrer. Je lui dis :

  • c’est toute la merde d’anti-virus qu’il fait tourner
  • garde un SSD, ça démarrera en 13 secondes

Il prend un SSD, et Windows prend toujours 3 minutes pour démarrer. Je lui dis que c’est son anti-virus de merde. Il rejette mes opinions du revers de la main. Six mois plus tard, il réinstalle Windows tout neuf, et maintenant il démarre en 13 secondes.

Désactiver SuperFetch, c’est comme désactiver votre swapfile, ou installer un doubleur de RAM, ou utiliser un nettoyeur de registre : ça vous fait passer pour un idiot. En personne, je souris et j’acquiesce. Derrière votre dos, je dis de la merde sur vous sur reddit.

Lecture de bonus

Plus sur le sujet avant :

  • /r/ProgrammerHumor/comments/68ker6/ultimate_in_garbage_collection/dh071ep/
  • /r/technology/comments/1xbofp/ramdrive_to_improve_performance_and_prolong_ssd/cf9wbmf/
  • .

  • /r/programming/comments/4nvimz/john_carmack_on_memory_mapped_gpu_assets/d4818ep/

Mise à jour – Les E/S du disque dur de SuperFetch ne pourraient-elles pas nuire à mes jeux ?

Quelqu’un a demandé, j’ai répondu, mais je vais copier ici pour la visibilité et pour aider à diffuser l’information.

Pour de vrai tho, pourrait-il affecter les performances de jeu ?

Il, tout simplement, ne le fera pas.

Votre plus grande préoccupation pourrait être au sujet de SuperFetch barattant votre disque dur, lisant dans des trucs pendant que vous essayez de jouer votre jeu. Et toutes ces E/S du disque dur vont nuire aux « vraies » choses du disque dur dont vous avez besoin pour jouer à votre jeu.

Ce ne sera pas le cas.

Vérifiez Resource Monitor, l’onglet Disque. Windows 7 a ajouté une fonctionnalité où les applications peuvent indiquer qu’elles veulent effectuer des opérations d’E/S à une priorité « d’arrière-plan ».

  • un SSD a un temps de réponse d’environ 1-2 ms
  • un disque dur à plateau tournant a un temps de réponse d’environ 10-20 ms

Et donc dans Resource Monitor, vous pouvez voir combien de temps il faut pour servir les E/S du disque dur. Et sur les disques durs en rotation, vous verrez généralement 10-30 ms :

  • https://i.imgur.com/m4ogUc5.png

Mais pendant que cela se produit, il y a d’autres opérations d’E/S du disque dur qui s’exécutent en priorité en arrière-plan. Windows veillera à ce que les opérations d’E/S en arrière-plan n’interfèrent jamais avec les E/S régulières. Les E/S d’arrière-plan peuvent être punies au point de prendre 500 à 1000 ms pour servir une lecture d’arrière-plan :

  • https://i.imgur.com/3SATs9M.png

On a donc :

Temps de lecture de la réponseSSD1 msHDD10 msPrime d’E/S en arrière-plan500 ms

Il est dommage que plus de développeurs ne connaissent pas la priorité d’E/S en arrière-plan, je vous regarde :

  • Steam downloader
  • uTorrent
  • Battle.net updater
  • Windows Update( !!)

Parce que ça aide vraiment.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.