Wie finde ich heraus, wie viel Speicher zwischen gegabelten Prozessen und Copy-on-Write unter Linux gemeinsam genutzt wird?

9

Wenn es einen Prozess gibt, der eine große Datei liest und sie im Speicher speichert (oder nur ein malloced char *), und dieser Hauptprozess wird gegabelt, wenn der untergeordnete Prozess nur aus diesem Speicher (oder dem char *) liest Nach Copy-on-Write wird der Speicher, in dem der Zeiger gespeichert ist, nicht kopiert, und Eltern und Kind teilen den gleichen Speicher, bis einer von ihnen versucht, auf diesen Speicher zu schreiben. In diesem Fall erstellt der Prozess eine Kopie des Speicher und ändert das.

Also meine Frage ist, ob es eine Kopie-auf-schreiben implementiert ist, gibt es eine Möglichkeit, die Menge an Speicher, die das Kind verwendet, die nicht mit dem Hauptprozess freigegeben ist, zu wissen? Mit anderen Worten, wie viel Speicher verwendet ein Kindprozess tatsächlich, wenn er Elternspeicher von einigen Leseaufrufen verwendet?

top oder ps-Befehle geben nur die Gesamtmenge an Speicher an, die das Kind haben soll. (d. h. Annahme, dass Daten im Speicher oder Zeiger vom Kind kopiert werden.)

Gibt es eine Möglichkeit, die Menge an Daten zu erhalten, die tatsächlich von der CoW-Semantik verwendet wird?

Ich ging durch /proc/[pid]/smaps , wie von aix und Mat vorgeschlagen, aber alles, was ich fand, waren viele leere Smaps-Dateien. Ich habe diesen Befehl versucht, um herauszufinden, in welchen Dateien Daten enthalten sind: tail -n 5 */smaps | less Und das o / p, das ich bekam, war

%Vor%

Was soll ich jetzt tun? Ich habe Prozesse mit leeren Smaps, die ausgeführt werden. Wie bekomme ich die Smaps dieser Pid's?

    
Prasanth Madhavan 16.05.2012, 07:04
quelle

1 Antwort

5

Ich kenne kein Tool, das Ihnen diese Informationen liefert, aber Sie können das wahrscheinlich anhand von /proc/[pid]/smaps berechnen:

%Vor%

Weitere Informationen finden Sie unter Getting Informationen zur Speichernutzung eines Prozesses von /proc/pid/smaps .

    
NPE 16.05.2012, 07:13
quelle

Tags und Links