Для данного процесса /proc/<pid>/smaps
, для данной записи сопоставления:
- Shared_Clean
- Shared_Dirty
- Private_Clean
- Private_Dirty
Является ли Shared_Clean
+ Shared_Dirty
объем памяти, который используется другими процессами? Так это как общий RSS?
Точно так же Private_Clean
+ Private_Dirty
объем памяти, который доступен только для одного процесса ? Так это как приватный RSS?
Значение PSS = PrivateRSS + (SharedRSS / количество процессов, совместно использующих его)?
Еще несколько вопросов после прочтения этой ссылки: LWN
Теперь давайте поговорим о процессе в целом, чью запись в smaps мы рассматриваем.
Я заметил , что если я делаю Shared_Clean
+ Shared_Dirty
+ Private_Clean
+ Private_Dirty
для каждого smaps записи процесса я получаю RSS процесса, сообщаемые ps
, который является довольно прохладно. Например,
ps -p $$ -o pid,rss
Даст мне (приблизительно) одинаковое значение RSS как сумма каждый Shared_Clean
, Shared_Dirty
, Private_Clean
, Private_Dirty
запись в / Proc / $$ / smaps.
Но как насчет PSS для всего процесса? Итак, из приведенного выше примера, как я могу получить PSS за $$? Могу ли я просто добавить запись PSS для каждого сопоставления smaps и получить PSS за $$?
А как насчет USS для всего процесса? Снова взяв приведенный выше пример, я предполагаю, что могу прибыть в USS за $$, суммируя только записи Private_ * для каждой записи smaps за $$ .. верно?
Примечания:
PSS = пропорциональный размер набора.
USS = Уникальный размер набора.