Was Sie beschrieben haben, verwirrt das Ballonfahren und das Zusammenführen derselben Seite. Ich werde versuchen, die beiden näher zu erläutern, um den Unterschied deutlich zu machen.
Gedächtnisballon
Dies ist ein Trick , um sicherzustellen , dass einige der an den zugewiesenen Speicher Gast virtuellen Maschine bleibt von einem anderen nutzbaren Gast oder der Gastgeber selbst (Caches, etc). Dies geschieht auf folgende Weise:
In den Gast-Kernel wird ein Treiber eingefügt, der die Speichernutzung des Gasts überwacht und einen Teil des nicht verwendeten Speichers "stiehlt" (indem er sich selbst im Speicher des Gasts zuordnet und so sicherstellt, dass dieser Gast diesen Bereich nicht berühren kann).
Dann informiert es den Host-Kernel, dass es diese Speicherseiten tatsächlich aus dem Kern entfernen kann, dass sie im Gast nicht verwendet werden (bis der Gast einen gewissen Speicherdruck erfährt, an welchem Punkt der Ballon entleert und verwendet wird) diese Bereiche wieder).
Letztendlich kann der Kernel genau denselben Speicher einem anderen Gast zuweisen und die gesamte Speichernutzung effizienter gestalten, wenn die Gäste mit viel freiem Speicher arbeiten.
Gleiche Seite zusammenführen
Diese Technik identifiziert identische Speicherseiten, die aus irgendeinem Grund nicht bereits als "schreibgeschützt" beim Kopieren beim Schreiben markiert sind, und markiert sie als solche.
Auf Betriebssystemebene besteht nur ein begrenzter Bedarf an solchen Tricks. Einfach gesagt, sind die meisten identischen Speicherseiten bereits schreibgeschützt (manchmal sogar ohne CoW), da es sich meistens um Anwendungscode, Bibliotheken usw. handelt. Sie werden nativ über eine Memory Map geöffnet und können daher vom Kernel beibehalten werden Nur eine Kopie von ihnen im Kern (wenn überhaupt, kann sie auch vollständig ausgeblendet und bei Bedarf aus dem Primärspeicher eingelagert werden).
Auf der Ebene des virtualisierten Betriebssystems wird dasselbe Prinzip in jedem Gastsubsystem ordnungsgemäß angewendet. Der Host-Kernel hat jedoch keine Ahnung, ob zwei der Gäste zumeist denselben Code ausführen und sich daher denselben Speicher teilen - die Gäste kommunizieren nicht, um dies zu koordinieren.
Deshalb ist es manchmal das gesamte System für identische Speicherseiten scannen - die meiste Zeit, werden sie identisch sein über das Gastbetriebssystem ist, nicht in jedem - der Gast - Kernel macht einen anständigen Job den Speicher ordentlich er innerhalb der Reichweite zu halten. In einer typischen VM-Umgebung, in der ein Host-Kernel mehr als 50 Gäste verwaltet, können daher erhebliche Speichereinsparungen erzielt werden.
Beides auf einmal
Ballooning und Same-Page-Merging können sehr gut koexistieren und für identische Systeme eine erhebliche Überbelegung des Speichers erzielen.
Zur Beantwortung Ihrer Frage: Das Zusammenführen derselben Seite kann und wird manchmal auf Betriebssystemebene aktiviert. Dies hat mit der gemeinsamen Nutzung von Seiten zu tun, die interpretiert werden und daher möglicherweise identisch sind, ohne dass dieselbe Sicherungsdatei vorhanden ist.
In Ihrem Chromium-Beispiel - die Prozess-Binärdateien selbst sind bereits über eine schreibgeschützte Startzuordnung dedupliziert - teilen sie sich genau denselben Speicherplatz. Die Seiten-Caches (Inhalte der Registerkarten) werden normalerweise auch von Prozessen gemeinsam genutzt (schreibgeschütztes Kopieren beim Schreiben), da der Festplatten-Cache verwaltet wird. Dieselbe Datei auf der Festplatte kann gleichzeitig zwischen verschiedenen Prozessen in der VM geöffnet werden -optimaler Sinn.
Der Vorteil ist am offensichtlichsten beim gemeinsamen Status verschiedener Javascript-Engines. Ich bin mir jedoch nicht sicher, ob sie im exakt gleichen Speicherlayout zugeordnet sind und sicherstellen, dass die gesamte Speicherseite identisch ist.
Dies ist auf mobilen Systemen anders. Android beispielsweise verwendet KSM in großem Umfang, um identischen Code zwischen verschiedenen Anwendungen zu deduplizieren.
In beiden Fällen können Sie es selbst unter Linux aktivieren (Kernel SamePage Merging). Der Treiber exportiert verschiedene Statistiken, die Sie nach dem Lesen dieser Antwort interpretieren und selbst entscheiden können, ob sie zu Ihrem Zweck passen.
https://www.kernel.org/doc/Documentation/vm/ksm.txt