En fait, ce que vous avez décrit confond la montgolfière et la «fusion de la même page». Je vais essayer de développer les deux pour rendre la distinction apparente.
Montgolfière de mémoire
C'est une astuce pour vous assurer qu'une partie de la mémoire allouée à la machine virtuelle invitée reste utilisable par un autre invité ou l' hôte lui-même (caches, etc.). Cela se fait de la manière suivante:
Le noyau invité est injecté avec un pilote, qui surveille l'utilisation de la mémoire de l'invité et `` vole '' une partie de la mémoire inutilisée (en l'allouant pour lui-même dans l'espace mémoire de l'invité, s'assurant ainsi que rien sur cet invité ne peut toucher cette plage).
Ensuite, il informe le noyau hôte, qu'il peut en fait supprimer ces pages mémoire du noyau, qu'elles ne seront pas utilisées dans l'invité (jusqu'à ce que l'invité subisse une certaine pression mémoire, moment auquel le ballon se dégonfle et utilise ces gammes à nouveau).
En fin de compte, le noyau peut allouer exactement la même mémoire à un autre invité et rendre l'utilisation de la mémoire entière beaucoup plus efficace si les invités fonctionnent avec beaucoup de mémoire libre.
Fusion de la même page
Cette technique identifie les pages de mémoire identiques qui, pour une raison quelconque, ne sont pas déjà marquées «quasi-lecture seule» avec copie sur écriture, et les marque comme telles.
Maintenant, au niveau du système d'exploitation, le besoin de ce genre de trucs est limité. Assez simplement, la plupart du temps lorsque vous avez des pages de mémoire identiques, elles sont déjà en lecture seule (parfois même sans CoW), car il s'agit principalement de code d'applications, de bibliothèques, etc. Elles sont ouvertes en mode natif via une carte mémoire, et donc le noyau peut conserver une seule copie d'eux dans le noyau (le cas échéant, il peut également le paginer complètement et lui permettre d'être paginé à partir du magasin principal si nécessaire).
Au niveau du système d'exploitation virtualisé, le même principe est correctement appliqué au sein de chaque sous-système invité. Cependant, le noyau hôte n'a aucune idée si deux des invités exécutent principalement le même code et partagent donc la même mémoire - les invités ne communiquent pas pour coordonner cela.
C'est pourquoi il peut parfois rechercher dans le système entier des pages de mémoire identiques - la plupart du temps, elles seront identiques sur tous les systèmes d'exploitation invités, pas dans chacun d'eux - le noyau invité fait un travail décent en gardant la mémoire propre dans sa plage. Ainsi, dans l'environnement VM typique, où un noyau hôte gère plus de 50 invités, les économies de mémoire peuvent être assez substantielles.
Les deux à la fois
La montgolfière et la fusion de pages identiques peuvent très bien coexister, réalisant une surcharge de mémoire assez importante pour des systèmes identiques.
Pour répondre à votre question, la fusion de pages identiques peut et parfois est activée au niveau du système d'exploitation. Cela a à voir avec le partage de page qui est interprété, et pourrait donc finir par être identique sans avoir le même fichier de sauvegarde.
Dans votre exemple Chromium - les fichiers binaires de processus eux-mêmes sont déjà dédupliqués via une carte de démarrage en lecture seule - ils partagent exactement le même espace mémoire. Les caches de page (contenu des onglets) sont généralement également partagés entre les processus (copie en écriture seule) en raison de la façon dont le cache disque est géré - le même fichier sur le disque peut être ouvert simultanément entre différents processus dans la machine virtuelle -un sens optimal.
L'avantage serait plus évident avec l'état partagé de différents moteurs Javascript - mais je ne suis pas sûr s'ils sont alloués dans la même disposition de mémoire exacte, garantissant que la page de mémoire entière est identique.
C'est différent sur les systèmes mobiles. Android, par exemple, utilise largement KSM pour dédupliquer un code identique entre différentes applications.
Dans les deux cas, vous pouvez l'activer vous-même sous Linux (Kernel SamePage Merging). Le pilote exporte diverses statistiques que, après avoir lu cette réponse, vous devriez être en mesure d'interpréter et de décider vous-même si cela correspond bien à votre objectif.
https://www.kernel.org/doc/Documentation/vm/ksm.txt