Co oznacza pss w/proc/pid/smaps
Byłem zdezorientowany kolumną pss w/proc/pid/smaps, więc napisałem program, aby to przetestować:
void sa();
int main(int argc,char *argv[])
{
int fd;
sa();
sleep(1000);
}void sa()
{
char *pi=new char[1024*1024*10];
for(int i=0;i<4;++i) {
for(int j=0;j<1024*1024;++j){
*pi='o';
pi++;
}
}
int cnt;
for(int i=0;i<6;++i) {
for(int j=0;j<1024*1024;++j){
cnt+=*pi;
pi++;
}
}
printf("%d",cnt);
}
$cat/proc/`pidof testprogram`/smaps08838000-0885b000 rw-p 00000000 00:00 0 [heap]
Size: 140 kB
Rss: 12 kB
Pss: 12 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 12 kB
Referenced: 12 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
b6dcd000-b77d0000 rw-p 00000000 00:00 0
Size: 10252 kB
Rss: 10252 kB
Pss: 4108 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4108 kB
Referenced: 4108 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Okazało się, że pss jest równe Private_Dirty tutaj, ale zastanawiam się, dlaczego.
BTW: czy jest jakaś szczegółowa dokumentacja dotycząca
smaps?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
lwn.net
http://lwn.net/Articles/230975/Proporcjonalny rozmiar zestawu (PSS) procesu to liczba stron
ma w pamięci, gdzie każda strona jest podzielna przez liczbę
procesy, które go współużytkują. Więc jeśli proces ma 1000 stron tylko dla siebie
a 1000 razem z jednym innym procesem, jego PSS będzie wynosić 1500
Z
Dokumentacja jądra systemu Linux
http://www.mjmwired.net/kernel ... c.txt
,
to pokazane rozszerzenie oparte na mapie
zużycie pamięci dla każdego odwzorowania procesu. Dla każdego mapowania jest
jest to seria takich linii:
Pierwsza z tych linii zawiera te same informacje, co
jak do wyświetlania w
/proc/PID/maps
... Pozostałe linie pokazują rozmiar
wyświetlacz (
size
), ilość wyświetlanego obrazu
jest w pamięci RAM (
RSS
), proporcjonalnie do proporcji procesu w tym odwzorowaniu
(
PSS
), Liczba czystych i zabrudzonych osobistych stron na wyświetlaczu.
Zwróć uwagę, że nawet strona, która jest częścią
map_shared
mapowanie, ale tak
tylko jeden Pte zmapowany, tj. obecnie używany tylko przez jeden proces,
uważane za prywatne, a nie ogólne. "
Połączyć
”wskazuje
ilość pamięci aktualnie oznaczonej jako łącze lub do której uzyskiwany jest dostęp.
"
Anonimowy
”pokazuje ilość pamięci, która nie należy do żadnego z nich
jeden plik. Nawet mapowanie skojarzone z plikiem może zawierać anonimowe
strony: kiedy
MAP_PRIVATE
i strona się zmienia, strona pliku
zastąpiony prywatną anonimową kopią. "
Zamiana
”pokazuje, ile
pamięć niedoszłych anonimowych jest również używana, ale poza wymianą.
To pytanie
https://unix.stackexchange.com ... smaps
w Stackexchange obejmuje prawie cały temat. Sprawdź doskonałą odpowiedź Mata, która z pewnością rozwieje wszystkie Twoje wątpliwości.