Tôi đã bối rối về cột PSS trong/proc/pid/smaps, vì vậy tôi đã viết một chương trình để kiểm tra nó:gì PSS nghĩa trong/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
Ở đây tôi tìm thấy pss bằng Private_Dirty, nhưng tôi tự hỏi tại sao.
BTW: có tài liệu chi tiết nào cho smaps
không?
Tại sao tôi thấy nhiều PSS, khi tôi chạy các smaps trên nhị phân của mình. Đây là đầu ra của một trong các mã nhị phân -Locked: 0 kB 77afd000-77afe000 r - p 00007000 00: 0e 20581089/lib/ld-uClibc-0.9.33.2.so.Tôi có cần phải thêm tất cả các PSS để thực sự tính kích thước được thực hiện bởi các nhị phân. Kích thước này bằng với kích thước chiếm trong RAM? Kích thước: 4 kB Rss: 4 kB Pss: 4 kB Private_Dirty: 4 kB Tham chiếu: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB 77ab2000-77ad6000 r-xp 00000000 00: 0e 20711467/usr/lib/libdbus- glib-1.so.2.2.0 Kích thước: 144 kB Rss: 112 kB Pss: 12 kB –