Analizuję dane z /proc/[pid]/statm
, aby uzyskać wskazówkę dotyczącą użycia pamięci określonego procesu. man proc
stwierdza, że rozmiar zestawu rezydentnego o rozmiarze (mierzony na "stronach") jest taki sam jak VmRSS (KB?) W /proc/[pid]/status
. Ponieważ mają różne wartości, chciałbym zrozumieć związek między tymi wartościami. Czy istnieje coś takiego jak czynnik, który mogę odczytać gdzieś w /proc
(myślałem o VmPTE, ale o czymś innym ...)? Którego z nich należy przeanalizować, aby uzyskać rozmiar używanej pamięci dla określonego procesu?Jak dopasować rozmiar zestawu VmRSS i rezydenta?
#ex 1782 = firefox
~$ cat /proc/1782/statm
224621 46703 9317 11 0 98637 0
# \--- resident set size
~$ cat /proc/1782/status | grep Vm
VmPeak: 935584 kB
VmSize: 898484 kB
VmLck: 0 kB
VmHWM: 257608 kB
VmRSS: 186812 kB
VmData: 394328 kB
VmStk: 220 kB
VmExe: 44 kB
VmLib: 61544 kB
VmPTE: 1224 kB
VmSwap: 0 kB
nie wiem, gdzie można uzyskać wartość z proc, ale myślę, że moja pagesize jest 4KB. Byłem zdezorientowany przez VmPTE. Wydaje się, że jest to raczej "rozmiar [pid] części strony tabeli stron", a następnie "rozmiar pozycji bufora" :) – lupz
Tak, wiele z tych wartości zależy od systemu. W niektórych systemach, z którymi pracowałem, niektóre z tych wartości zawsze dają 0, ponieważ wsparcie nie zostało wkompilowane w jądro. Więc tak, nie wierz w to, co mówią strony mojego mana, ponieważ mogą one nie być odpowiednie dla twojego systemu. – Ray
Rzeczywiście, pamięć wirtualna = część w pamięci RAM + część na dysku + wirtualna przestrzeń adresowa niepopielona na pamięć fizyczną + pliki odwzorowane w pamięci + pamięć współdzielona. Aby zmierzyć zużycie pamięci, VmSize jest całkiem bezużyteczny. Zobacz pierwszą odpowiedź na http://stackoverflow.com/questions/13308684/increase-of-virtual-memory-without-increse-of-vmsize – vcarel