Reduzieren der Laufzeitspeichernutzung in Windows 8

Die Entwicklung von Windows 8

Einblicke in die Arbeit des Windows-Entwicklerteams

Reduzieren der Laufzeitspeichernutzung in Windows 8

  • Comments 2

Der Speicherauslastung kommt bei der Entwicklung von Windows 8 eine besondere Bedeutung zu. Das Ziel besteht darin, die Gesamtanforderungen an den Laufzeitspeicher für das Kernsystem von Windows 8 erheblich zu reduzieren. Dies ist besonders wichtig, da Kunden immer mehr Anwendungen gleichzeitig ausführen möchten oder Systeme verwenden, die nur über 1 bis 2 GB Arbeitsspeicher verfügen. Bei dem Laptop, der in diesem Beitrag besprochen wird, handelt es sich um denselben wie beim Windows 7 PDC 2008: ein handelsübliches ATOM-Netbook erster Generation mit 1 GB Arbeitsspeicher. In diesem Beitrag, der vom Gruppenprogrammmanager unseres Performance-Teams, Bill Karagounis, verfasst wurde, werden die Anstrengungen im Hinblick auf die Speicherauslastung vorgestellt. – Steven

Die Laufzeitspeicherverwendung von Windows 8 ist ein wesentliches Kriterium für die Systemanforderungen von Windows 8, ebenso wie die steigende Anzahl unterschiedlichster Geräte, auf denen Windows 8 ausgeführt wird. Wie Sie wissen, werden Sie Windows 8 auf SoC-Geräten, die sich durch einen geringen Stromverbrauch auszeichnen, uneingeschränkt nutzen können. Daher ist es umso wichtiger, große Arbeitsspeicherressourcen für mehrere gleichzeitig ausgeführte Anwendungen bereitzustellen und die allgemeine Reaktionszeit der Geräte nicht zu beeinträchtigen.

Was vielleicht nicht jedem bekannt ist: Durch die reduzierte Speicherauslastung auf Plattformen mit niedrigem Energieverbrauch kann die Akkulebensdauer verlängert werden. Wie bitte? Der Arbeitsspeicher jedes Computers verbraucht ununterbrochen Strom. Wenn ein Betriebssystem viel Arbeitsspeicher beansprucht, müssen Gerätehersteller möglicherweise mehr physischen Arbeitsspeicher einzubauen. Mehr Arbeitsspeicher erhöht den Stromverbrauch und verringert die Akkulebensdauer. In Tablet-Geräten führt zusätzlicher Arbeitsspeicher möglicherweise dazu, dass sich die Zeit, in der das Tablet im Standbymodus auf Sie wartet, erheblich verkürzt.

Ziele bzgl. der Speicherauslastung

Von Anfang an war es unser Ziel, Windows 8 mit den gleichen Systemanforderungen wie Windows 7 bereitzustellen. Wenn wir dieses Ziel sogar übertreffen können, stehen mehr Ressourcen für Anwendungen zur Verfügung, auch wenn die offiziell genannten Anforderungen gleich bleiben. Es ist erstaunlich, wie sich das untere Spektrum erhältlicher Hardware seit 2009 verändert hat und z. B. Speichermodule mit 256 MB schon gar nicht mehr erhältlich sind. Wir wollten gewährleisten, dass Benutzer mit ihrer vorhandenen Windows 7-Hardware problemlos auf Windows 8 umsteigen und von den neuen Funktionen profitieren können. Wir erwarten aufgrund unserer Erfahrungen mit älteren Computern, die wir für Leistungstests verwenden, dass Windows 8 sogar auf vielen Computern ausgeführt werden kann, die vor der Veröffentlichung von Windows 7 hergestellt wurden.

Eine wichtige Aufgabe war es, unter Windows 8 Platz für neue Funktionen zu schaffen und gleichzeitig die Speicheranforderungen vorhandener Funktionen sowie jene des Gesamtsystems zu reduzieren. Wir sind auf dem besten Weg, unsere Ziele für Windows 8 zu erreichen.

Vergleich der Speicherverwendung im Task-Manager

Am einfachsten lässt sich ein ungefährer Vergleich der Speicherauslastung von Windows 8 und Windows 7 ziehen, indem beide Betriebssysteme auf Computern mit 1 GB Arbeitsspeicher (Minimalanforderung) installiert werden und die Computer dann wiederholt neu gestartet werden und sich anschließend eine Zeit lang im Leerlauf befinden.

Der Windows Task-Manager bietet in der Auslastungsstatistik die Hauptansicht des Systemspeichers (wie ausführlich in diesem Dokument beschrieben). In der folgenden Grafik wird der Vergleich zwischen der Speicherauslastung von Stevens 3 Jahre altem Netbook, das er bei der //build/-Keynote kürzlich verwendet hat, mit Windows 7 im Leerlauf und auf demselben Computer mit Windows 8 dargestellt.

Windows 7-Task-Manager. CPU-Auslastung: 5 %, Speicher: 404 MBAbbildung 1 – Speicherauslastung unter Windows 7 SP1

Windows 8-Task-Manager. CPU-Auslastung: 1 %, Speicher: 281 MBAbbildung 2 – Speicherauslastung unter Windows 8

Die jeweilige Hardware eines Computers, die Speicherauslastung durch Treiber und selbst die Dauer seit dem Einschalten können dazu führen, dass die Ergebnisse für den Speicher auf unterschiedlichen Computern unterschiedlich ausfallen (oder zu unterschiedlichen Zeiten auch dem gleichen Computer). Wie Sie sehen, schneidet Windows 8 im Vergleich mit Windows 7 gut ab.

Sie können die Sache auf dem Testgerät noch spannender machen, indem Sie den Geräte-Manager aufrufen, und den Anzeigeadapter deaktivieren (den Grafiktreiber deaktivieren). Selbstverständlich würden Sie einen Computer niemals mit diesen Einstellungen verwenden, doch erhalten Sie so einen noch genaueren Wert für die tatsächliche Speicherauslastung durch Windows. Bei deaktiviertem Grafiktreiber nutzt der Computer nach einer gewissen Leerlaufzeit weniger als 200 MB.

HINWEIS: Eine Neuinstallation von Windows 8 enthält die erweiterte Windows Defender-Technologie, die erstmalig auch vollständige Antimalware-Funktionen bereitstellt – d. h. sie ist auf Speicher- und Ressourcenverwendung optimiert, wie in Jasons Blogeintrag über den Schutz vor Malware erläutert. (Eine Neuinstallation von Windows 7 enthält diese Funktionen nicht, daher raten wir hier zur Installation einer Sicherheitssoftware).

Mehr Platz unter Windows 8

Wir haben hunderte spezifischer Änderungen vorgenommen, um unter Windows 8 die Speicherauslastung durch das Betriebssystem zu reduzieren.

Speicherzusammenfassung

Wird bei einem herkömmlichen PC auf den Arbeitsspeicher zugegriffen, weisen zahlreiche Speicherbereiche denselben Inhalt auf. Diese redundanten Kopien von Daten im Systemarbeitsspeicher bieten eine Möglichkeit zur Verringerung der Speicherauslastung durch Dienste und Betriebsystemkomponenten.

Wie kommt es zu dieser Redundanz? Anwendungen belegen mitunter Speicher für eine künftige Verwendung. Hierbei wird der gesamte Speicher mit demselben Wert initialisiert. Möglicherweise kommt es jedoch nie zur Verwendung des Speichers durch die Anwendung, da dieser für eine Funktion reserviert wurde, die der Benutzer nicht aufruft. Wird dieser Vorgang für mehrere Anwendungen ausgeführt, enthält das System redundante Speicherkopien.

Bei der Speicherzusammenfassung handelt es sich um eine Technik, bei der Windows im normalen Betrieb auf den Systemarbeitsspeicher zugreift und Dubletten im gesamten Systemspeicher ermittelt. Diese Dubletten werden anschließen von Windows gelöscht – nur eine einzige Kopie bleibt erhalten. Versucht eine Anwendung anschließend, in den Speicher zu schreiben, stellt Windows eine spezifische Kopie bereit. All dies erfolgt im Hintergrund im Speicher-Manager, ohne Auswirkungen auf Anwendungen. Hierdurch lässt sich Speicher im zwei- bis dreistelligen MB-Bereich freigeben (abhängig von der Anzahl der gleichzeitig ausgeführten Anwendungen).

Änderungen an Diensten und Senken der Dienstanzahl

Dauerhaft ausgeführte Betriebssystemdienste sind einer der Gründe für die hohe Umgebungsspeicherauslastung. Während der Planung von Windows 8 haben wir die Entscheidung getroffen, auf einige (13) dieser Dienste zu verzichten und weitere Dienste nur „manuell“ aufrufen zu lassen. Des Weiteren werden einige der Dienste, die dauerhaft ausgeführt wurden, nur noch auf Anforderung gestartet. Hierbei wird durch einen „Auslöser“ im Betriebssystem (wie das Anschließen eines Geräts oder die Verfügbarkeit einer Netzwerkadresse) Folgendes ausgeführt:

  1. Der Dienst wird gestartet.
  2. Die (kontextabhängige) Aufgabe des Diensts wird ausgeführt.
  3. Die Dienst wird eine Zeit lang prophylaktisch ausgeführt.
  4. Der Dienst wird beendet.

Sie werden bemerken, dass Plug & Play, Windows Update und der Benutzermodus-Treiberframeworkdienst unter Windows 8 ausschließlich per Aufruf gestartet werden, während diese Dienste unter Windows 7 noch dauerhaft ausgeführt wurden.

Selbstverständlich haben wir unter Windows 8 zahlreiche neue Funktionen (und neuen Code) hinzugefügt. Einige dieser neuen Funktionen werden in neuen Diensten zusammengefasst. Zwei dieser neuen Dienste werden automatisch gestartet, alle anderen Dienste starten ausschließlich per Aufruf.

Ausführen derselben Aufgaben mit weniger Speicher

Beim Ausführen von Anwendungen und systemeigener Prozesse von Windows werden Programmdateien und -daten von der Festplatte in den Hauptspeicher geladen. Bei der bisherigen Entwicklung von Windows 7 und Windows 8 haben wir die Bereiche (Seiten) des Speichers während der normalen Ausführung analysiert und ermittelt, wie oft auf diese verwiesen wird. Der Gedanke hierbei ist, dass ein zugewiesener Speicherbereich auch häufig verwendet werden sollte (d. h., es wird häufig auf diesen Speicherteil verwiesen). Wird auf diesen Speicher nur selten verwiesen, und ist er dennoch erforderlich, sollte der Speicherbereich mit einem anderen Bereich zusammengefasst werden.

Kurz nach der Fertigstellung von Windows 7, haben wir einen vergleichbaren Ansatz für einige untergeordnete Komponenten von Windows verwendet, die noch aus den frühen Tagen von NT (den frühen 1990ern) stammen. Dazu gehörte, die Neufassung von Code und die Änderung von Datenstrukturen, um „heiße“ (mit vielen Verweisen) und „kalte“ Speicherbereiche vollständig voneinander zu trennen. Durch die umfassende Zusammenfassung von „heißen“ Elementen konnten wir die gesamte Laufzeit-Speicherauslastung reduzieren.

Angesichts der Bedeutung dieser Änderungen (untergeordnete Betriebssystemkomponenten) wollten wir diese Aufgaben so schnell wie möglich erledigen und verifizieren. Heute sind diese Änderungen unter Windows 8 seit fast zwei Jahren umgesetzt, und tausende Mitarbeiter von Microsoft verwenden das Produkt bei ihrer täglichen Arbeit. Die Ergebnisse zeigen auf einem durchschnittlichen Computer durchgängig eine Reduzierung der Speicherauslastung im zweistelligen Bereich.

Bedarfsabhängige Initialisierung des Desktops

Im Juni haben Steven und Julie die Metro-Benutzeroberfläche zum ersten Mal vorgestellt. Wir erwarten, dass zahlreiche Tablet-Benutzer hauptsächlich in dieser Umgebung Metro-Anwendungen ausführen werden. Während dieser Präsentation haben wir gezeigt, dass Sie vorhandene Anwendungen unter Windows 8 auch in der vertrauten Desktopumgebung verwenden können.

Hinsichtlich der Speicherauslastung haben wir den Vorteil genutzt, dass auf bestimmten Geräten Benutzer fast ausschließlich die intuitive Metro-Benutzeroberfläche verwenden werden. In diesem Fall werden desktopspezifische Betriebsystemkomponenten von Windows 8 nur bei Bedarf initialisiert. Auch hierdurch wird die Speicherauslastung verringert, gegenwärtig um ca. 23 MB. (Beachten Sie, dass Task-Manager für den Desktop ausgeführt wird und die diesbezüglichen Einsparungen folglich in den obigen Zahlen enthalten sind).

Feinere Speicherpriorisierung

Windows 8 verfügt über ein verbessertes Schema für die Priorisierung von Speicherzuordnungen von Anwendungen und Systemkomponenten. Daher kann Windows einfacher ermitteln, welche Speicherbereiche beizubehalten sind und welche Bereiche gelöscht werden können.

Beispielsweise führen Antivirenprogramme zahlreiche Überprüfungen von Dateien durch, wenn diese durch andere Programme geöffnet werden. Der Speicher, den das Antivirenprogramm belegt, um Virensignaturen zu überprüfen, wird in der Regel zur einmaligen Verwendung zugeordnet. (Es ist unwahrscheinlich, dass ein bestimmter Speicherbereich erneut verwendet wird.) Unter Windows 7 erhalten diese Speicherbereiche dieselbe Priorität im System wie andere Speicherbereiche (z. B. Speicher, der für die Ausführung von Microsoft Excel belegt wurde). Wenn nur noch wenig Speicher zur Verfügung steht, könnte es vorkommen, dass Windows 7 den Speicher löscht, der dazu dient, die Ausführung einer anderen aktiven Anwendung (wie Excel) zu gewährleisten. Dies stellt hier nicht die optimale Lösung für die Ausführung des Systems dar.

In Windows 8 können alle Programme Speicher mit einer niedrigen Priorität zuweisen. So kann Windows, wenn nur noch wenig Speicher zur Verfügung steht, zunächst diesen Speicher freigeben, ohne das Reaktionsverhalten des Systems zu beeinträchtigen.

Noch einmal zusammengefasst: Ich habe den Ansatz zur Reduzierung der Speicherauslastung unter Windows 8 umrissen. Sie haben sich mit einigen Beispielergebnissen vertraut machen können, obwohl die technische Arbeit in diesem Bereich selbstverständlich nur in Grundzügen dargestellt werden konnte. Das Anwendungsmodell von Windows 8 und die Änderungen beim Prozesslebenszyklus, durch die Windows 8-Anwendungen „speicherfreundlicher“ werden, konnten leider gar nicht einbezogen werden. Weitere Informationen zu diesem Thema finden Sie in den //build/-Inhalten und künftigen Blogbeiträgen, da es sich hierbei um einen bedeutenden Teil der Neuentwicklung von Windows handelt.

Wir haben bereits große Fortschritte erzielt, der Prozess ist jedoch noch lange nicht abgeschlossen.

– Bill Karagounis

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