RSS и ptop для pmap одинаковы? - PullRequest
       25

RSS и ptop для pmap одинаковы?

11 голосов
/ 17 марта 2011

Я запускаю следующую простую программу

#include <stdio.h>
#include <stdlib.h>    
int
main() {
  malloc(102432);
  getchar();
  return 0;
}

htop дает это

VIRT   RES   SHR
36684  312   240

pmap -x дает это

Address           Kbytes     RSS   Dirty Mode   Mapping
0000000000400000       0       4       0 r-x--  a.out
0000000000600000       0       4       4 r----  a.out
0000000000601000       0       4       4 rw---  a.out
00007f063d3b7000       0       4       4 rw---    [ anon ]
00007f063f3b8000       0     228       0 r-x--  libc-2.12.1.so
00007f063f532000       0       0       0 -----  libc-2.12.1.so
00007f063f731000       0      16      16 r----  libc-2.12.1.so
00007f063f735000       0       4       4 rw---  libc-2.12.1.so
00007f063f736000       0      12      12 rw---    [ anon ]
00007f063f73b000       0     108       0 r-x--  ld-2.12.1.so
00007f063f93d000       0      12      12 rw---    [ anon ]
00007f063f958000       0       8       8 rw---    [ anon ]
00007f063f95b000       0       4       4 r----  ld-2.12.1.so
00007f063f95c000       0       4       4 rw---  ld-2.12.1.so
00007f063f95d000       0       4       4 rw---    [ anon ]
00007fff4b298000       0      12      12 rw---    [ stack ]
00007fff4b2d7000       0       4       0 r-x--    [ anon ]
ffffffffff600000       0       0       0 r-x--    [ anon ]
----------------  ------  ------  ------
total kB           36684     432      88

htop и pmap показывают одинаковый виртуальный размер (36684), но они показывают разные вещи для физической памяти (htop RES = 321 и pmap RSS = 432) .

Может быть, я что-то путаю, но есть ли разница между htop RES и pmap * RSS? *1024*

1 Ответ

1 голос
/ 07 сентября 2018

Итак, из справочной страницы top мы видим, что:

q: RES - Резидентный размер (КБ)
Физическая память без перестановки, используемая задачей.

и для pmap:

RSS: размер резидентного набора в килобайтах

Таким образом, они кажутся одинаковыми.Но на самом деле, если вы также проверите с помощью ps, вы увидите, что htop будет показывать тот же RES, что и RSS для ps.Дело в том, что ps отмечает в человеке, что показ измерения немного отличается:

Поля SIZE и RSS не учитывают некоторые части процесса, включая таблицы страниц, стек ядра,struct thread_info и struct task_struct.Обычно это не менее 20 КБ памяти, которая всегда находится в памяти.SIZE - это виртуальный размер процесса (код + данные + стек).

Таким образом, это будет разницей между ps и pmap и фактически одинаковой для htop и pmap.

...