Speichernutzung durch "Metafile" reduzieren?

8

Mein Arbeitscomputer (Windows 7 64-Bit) verbringt viel Zeit damit, den Speicher auszutauschen, wenn ich zwischen Programmen wechsle. Dies überrascht mich, da ich 4 GB RAM habe und die von mir verwendeten Programme nicht besonders RAM-hungrig sind (Outlook, Emacs, p4win, Firefox, verschiedene Build-Tools). Ich habe RAMMap heruntergeladen und es zeigt über ein Gigabyte Speicher, der von "Metafile" verwendet wird.

Aus dem Sysinternals-Blog :

Die Metadatei ist Teil des Systemcaches und besteht aus NTFS-Metadaten. NTFS-Metadaten umfassen die MFT sowie die anderen verschiedenen NTFS-Metadatendateien. ... In der MFT benötigt jeder Dateiattributdatensatz 1 KB und jede Datei hat mindestens einen Attributdatensatz. Fügen Sie dazu die anderen NTFS-Metadatendateien hinzu, und Sie können sehen, warum die Kategorie Metadatei auf Servern mit vielen Dateien sehr groß werden kann.

Ich verstehe also, was die "Metafile" -Daten sind ... Ich arbeite an großen Builds mit Hunderttausenden von Dateien (keine ist so groß, aber sie summieren sich auf mehrere Gigabyte). Meine Frage ist, wie ich den von "Metafile" verwendeten Speicher reduzieren kann. Ich verwende nicht alle diese Dateien gleichzeitig aktiv. Warum muss Windows also Informationen im RAM speichern? Es ist wirklich ärgerlich, meinen Computer jedes Mal neu zu starten, wenn ich einen neuen Build synchronisiere.

Jay Conrod
quelle
4
Builds sind E / A-intensiv und daher behält Windows einen großen Dateisystem-Cache bei, um die Leistung zu verbessern. Leider verbrauchen Build-Tools auch viel Speicher und normalerweise in großen Spitzen, was wahrscheinlich das Überfluten verursacht. Da dies gegen den Systemcache konkurriert. Die beste Lösung könnte darin bestehen, mehr Speicher hinzuzufügen.
Tgiphil
@tgiphil, Es ist verständlich, dass beim Auschecken oder Erstellen des Builds viel Speicher verwendet wird. Es wird jedoch immer noch verwendet und verursacht viel später Schläge, wenn ich nur in einem kleinen Bereich arbeite. Leider gibt mir die IT keinen Speicher mehr.
Jay Conrod
Ich denke, Windows 7 optimiert bereits Ihre Leistung mit Caching. Schließen Sie unnötige Anwendungen, um den verfügbaren Speicher zu erhöhen und den Swap zu reduzieren. Sie können einen guten Speicherplatz zurückerhalten, indem Sie beispielsweise Outlook und Firefox schließen. Wenn Sie Visual Studio verwenden und nur kompilieren müssen, versuchen Sie stattdessen einen Befehlszeilen-Build. Ich hoffe das hilft. Übrigens. Bei einem so geringen Arbeitsspeicher (6 GB unter 100 US-Dollar) ist dies eine hervorragende Investition in die Produktivität.
Tgiphil

Antworten:

4

Ich glaube, dass der Systemcache seinen Speicher bei Bedarf freigibt, aber es können Störungen auftreten. Nachfolgend sind einige Möglichkeiten aufgeführt.

Ihr 64-Bit-System reserviert den Videospeicher in den ersten 4 GB Speicher. Wenn Ihre Grafikkarte über viel Speicher verfügt, geht dieser Speicher verloren, wie in beschrieben:
Der verwendbare Speicher ist möglicherweise geringer als der auf Windows 7-basierten Computern installierte Speicher

Sie können die Speichernutzung auf dem Computer überprüfen, indem Sie den Geräte-Manager öffnen und im Menü Ansicht die Option "Ressourcen nach Verbindung" auswählen. Erweitern Sie den Speicherknoten und prüfen Sie, ob Sie herausfinden können, was den Speicher belegt, wenn überhaupt. In einigen Fällen kann der Speicher erhöht werden, indem nicht verwendete Geräte wie Firewire deaktiviert werden.

Sie können auch versuchen, genau das Gegenteil von dem zu tun, was in diesem Artikel beschrieben wird:
Erhöhen Sie die Größe des Dateisystem-Speichercaches in Windows 7

Sie können auch versuchen, Windows 7 SuperFetch zu deaktivieren .

Wenn nichts hilft, ist es hilfreich, einen Screenshot der Registerkarte Task-Manager mit dem Namen Leistung zu veröffentlichen.

harrymc
quelle
Die +1 steht für "Superfetch deaktivieren".
Kein Downgrade, aber Superfetch erhöht höchstwahrscheinlich seine Leistung - nicht verringert sie -, da ausführbare Build-Dateien im Allgemeinen häufig ausgeführt werden und vom Zwischenspeichern profitieren. Die Grafikkarte, die sich auf den verfügbaren Speicher auswirkt, gilt nicht für Windows 7 64-Bit mit nur 4 GB. In diesem Fall würde die Grafikkarte über 4 GB abgebildet.
Tgiphil
@tgiphil: Aus dem oben zitierten Microsoft-Artikel: "Bei einer Grafikkarte mit 256 MB integriertem Speicher muss dieser Speicher innerhalb der ersten 4 GB Adressraum zugeordnet werden."
Harrymc
In meiner Organisation haben wir auch Tonnen kleiner Dateien und eine riesige NTFS-Metadatei im RAM. Soweit ich weiß, speichert Windows die Metadatei nicht wie alles andere im Cache und gibt sie nie wirklich aus dem RAM frei. Der Computer wird zu 100% ausgelastet sein und dann stürzen alle Ihre Anwendungen aufgrund von Speichermangel ab. Dies ist natürlich nicht Windows 7, sondern Windows Server 2008 R2.
Phil
Auch der Link "Dateisystem-Speichercache vergrößern" weist auf Dinge hin, die nicht wirklich funktionieren. Siehe tweakhound.com/blog/?p=1164
Phil
0

In Windows Server 2008 R2 tritt genau das gleiche Problem mit dem "Cache" der Metadatei auf, dass zu viele Metadatei-Informationen im aktiven Speicher gespeichert werden. Daher haben die Cache-Funktionen keine Berechtigung, die Freigabe dieses Speichers bei Speicherdruck zuzulassen.

Ich habe ein Powershell-Skript auf der Seite serverfault.com geschrieben. Windows Server 2008 R2-RAM-Auslastung für Metadateien , mit dem der maximale aktive Speicher für Metadateien auf einen vernünftigen Wert festgelegt wird . Der Rest wird in den Standby-Speicher verschoben, und die normalen Cache-Funktionen können dann die Dinge entsprechend priorisieren. Windows 7 x64 und Server 2008 R2 x64 haben beide standardmäßig maximale maximale Speichergrenzen für Metadateidaten von 1 TB. Ja TB, nicht GB.

Work führt dieses Skript jetzt an allen unseren Standorten auf unseren Servern aus, die die Sicherungen der Website organisieren, die während des Sicherungszyklus täglich Millionen von Dateien verarbeiten. Auf diesen Sicherungsservern wird auch ein speicherintensives Java-Programm (VMware vSphere), 2 SQL-Server und WSUS mit einem eigenen SQL-Server ausgeführt. Wenn die Sicherungssoftware zuerst die Metadaten (Name, Größe, Änderungsdatum, Berechtigungen, Attribute usw.) liest, um die Liste der Dateien zu ermitteln, die in diesem Durchgang gesichert werden sollen, wird der Metadatei-Cache SEHR schnell gefüllt. Selbst wenn sie alles tun, fahren sie gut mit nur 4 GB RAM.

BeowulfNode42
quelle