Private Bytes VS Working Set im Prozess-Explorer

38

Ich weiß, dass der Arbeitssatz die tatsächliche Menge an Speicher ist, die der Prozess verwendet, und auch, dass private Bytes die Menge ist, die beiseite gelegt wird, nur für den Fall, dass mehr benötigt wird.

Würde ich also die beiden addieren, um herauszufinden, wie viel Speicher WIRKLICH von anderen Prozessen auf dem System beansprucht wird?

Skandalist
quelle

Antworten:

51

Ich fürchte, es ist nicht ganz so einfach. Insbesondere private Bytes sind für die Beantwortung der von Ihnen gestellten Frage nicht sehr nützlich.

Das Erste, was zu beachten ist, ist, dass eine Speicherseite im Hauptspeicher oder in einem externen Speicher vorhanden sein kann (heutzutage "Disk Paging" oder "Swap"). Das zweite ist, dass ein Prozess private Speicherseiten in seinem Footprint hat, aber auch Objekte in gemeinsam genutzten Seiten verwendet, die andere Prozesse gleichzeitig verwenden.

Arbeitssatz ist die Größe der zum Prozess gehörenden Seiten, die aktuell im Hauptspeicher abgelegt sind. Wenn eine Speicherseite, die von einem Prozess verwendet wird, in die Auslagerungsdatei verschoben wird, wird sie aus der Arbeitsmengenmetrik entfernt, und wenn sie wieder in den Hauptspeicher zurückgerufen wird, wird sie erneut hinzugefügt.

Der Arbeitssatz bezieht sich jedoch nicht ausschließlich auf den Speicher, den Ihr Prozess besitzt. Prozesse verwenden viele Shared Memory-Objekte, und die Größe dieser Objekte spiegelt sich in der Statistik wider. Wenn zwei Prozesse ein 1-MB-Objekt gemeinsam nutzen, wird in beiden Prozessen eine 1-MB-Zuordnung im Arbeitssatz angezeigt. Wenn Sie also alle Arbeitssätze addieren, wird das 1-MB-Objekt zweimal aufgezeichnet, sodass sich möglicherweise alle Größen Ihres Arbeitssatzes summieren In extremen Fällen scheint die Größe des verfügbaren Stempels zu überschreiten. Weitere Informationen finden Sie hier: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

Private Bytes bezieht sich auf die Menge an Auslagerungsdateispeicher, die dem Prozess zugewiesen wird (nicht unbedingt verwendet), falls der private Speicherbedarf des Prozesses vollständig ausgelagert wird, um ihn auszutauschen. In den meisten Fällen ist der Prozess nicht vollständig (oder überhaupt nicht) in der Auslagerungsdatei resident, weshalb private Bytes "Platz" für die weitere Zuweisung zu haben scheinen. Dies ist jedoch nicht der Fall.

Private Bytes beziehen sich jedoch nur auf den privaten Speicher des Prozesses, sodass dieser Wert möglicherweise nicht die gemeinsam genutzten Ressourcen widerspiegelt (auch wenn die gemeinsam genutzte Ressource derzeit nur von diesem Prozess verwendet wird).

"Working set Private" ("WS Private Bytes" oder "Private WS" im Prozess-Explorer, je nach Version) ist wahrscheinlich die beste Metrik für Ihre Verwendung. Es beschäftigt sich nicht mit Auslagerungsdateien, sodass Sie eine genaue Darstellung der Auswirkungen der Prozesse auf Ihren physischen RAM erhalten und freigegebene Objekte nicht doppelt gezählt werden. freigegebene Objekte werden einmal gezählt (nur für den Prozess, der sie erstellt hat), dies bedeutet jedoch auch, dass Sie aus Sicht eines einzelnen Prozesses nicht aufzeichnen, dass Ihr Prozess freigegebene Objekte verwendet, die von einem anderen Prozess erstellt wurden, sodass Ihr Prozess möglicherweise mehr RAM für einen anderen Prozess verwendet Computer oder in einer Situation, in der das gemeinsam genutzte Objekt selbst erstellt werden musste, anstatt eine andere Prozessinstanz zu verwenden. Der Windows Task-Manager verwendet den privaten Arbeitsspeicher als Maß für die Speichernutzung.

Ich hoffe, das hilft

Frank Thomas
quelle
1
Würde ich also richtig sagen, dass "Private Bytes" bedeutet, wie viel Arbeitsspeicher der Prozess angefordert hat und "Working Set" die privaten Bytes plus ein wenig zusätzlichen gemeinsam genutzten Speicher, den andere Prozesse verwenden können? Außerdem ist "Private Working Set" die Menge an privatem Speicher, die sich derzeit im physischen RAM befindet. Dies ist die genaueste Darstellung der tatsächlich verwendeten Speicherkapazität.
Skandalist
4
ja, so ziemlich. Wenn Sie sich Sorgen um Free RAM machen, ist der private Arbeitssatz der richtige Weg. Wenn Sie sich Sorgen über Auslagerungsdateien oder vollständige Festschreibung (RAM + virtueller Speicher) machen, sind private Bytes eine gute Metrik.
Frank Thomas
"Private Bytes" ist der festgeschriebene private virtuelle Adressraum des Prozesses. Einige davon befinden sich möglicherweise in der Auslagerungsdatei, einige im RAM, einige an beiden Stellen, einige - möglicherweise die meisten - haben möglicherweise (noch) keinen physischen Speicher zugewiesen. Dies ist der Beitrag des Prozesses zur gesamten "Festschreibungsgebühr" des Systems. Die "private Arbeitsgruppe" ist die Teilmenge der "privaten Bytes", die sich im RAM befindet. nb: Sie werden keine "privaten Bytes" oder ähnliches in RAMmap's Displays finden, da RAMmap nur den physischen Speicher (RAM) betrifft, nicht den virtuellen.
Jamie Hanrahan