it-swarm.com.de

Private Bytes VS Working Set im Prozess-Explorer

Ich weiß, dass die Arbeitsmenge die tatsächliche Menge an Speicher ist, die der Prozess verwendet, und 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?

34
Scandalist

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 derzeit 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 den Umfang des Auslagerungsdateibereichs, der dem Prozess zugeordnet ist (nicht unbedingt verwendet), falls der private Speicherbedarf des Prozesses vollständig ist ausgelagert, um zu tauschen. 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 Zuordnung 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 Process 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.

hoffentlich hilft das

48
Frank Thomas