Для данного процесса /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 = Уникальный размер набора.