me estaba confundiendo sobre la columna de la PSS en/proc/PID/smaps, así que escribí un programa para probarlo:lo que quiere decir pss en/proc/PID/smaps
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`/smaps
08838000-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
Aquí encontré pss igual a Private_Dirty, pero me pregunto por qué.
BTW: ¿hay alguna documentación detallada para smaps
?
¿Por qué veo muchos PSS cuando ejecuto los smaps en mi binario? Aquí está la salida de uno de los binarios -Locked: 0 kB 77afd000-77afe000 r - p 00007000 00: 0e 20581089 /lib/ld-uClibc-0.9.33.2.so.¿Debo agregar todo el PSS para calcular el tamaño tomado por el binario? ¿Es este tamaño igual al tamaño ocupado en la RAM? Tamaño: 4 kB RSS: 4 kB Pss: 4 kB Private_Dirty: 4 kB Referencia: 4 kB Anónimo: 4 kB AnonHugePages: 0 kB 77ab2000-77ad6000 r-xp 00000000 00: 20711467 0e/usr/lib/libdbus- glib-1.so.2.2.0 Tamaño: 144 kB Rss: 112 kB Pss: 12 kB –