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
?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Cytat z

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
,
/ proc/PID/smaps
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:
08048000-080bc000 r-xp 00000000 03:02 13130/bin/bash
Size: 1084 kB
Rss: 892 kB
Pss: 374 kB
Shared_Clean: 892 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 892 kB
Anonymous: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 374 kB
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
Unix i Linux
Stackexchange obejmuje prawie cały temat. Sprawdź doskonałą odpowiedź Mata, która z pewnością rozwieje wszystkie Twoje wątpliwości.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się