Может ли сумма всего rss
значения активных процессов (состояние S
или O
) быть когда-нибудь намного больше, чем общая физическая память + своп?
Под физической памятью я подразумеваю результат prtdiag | grep Memory
И размер свопа, я имею в виду результат swap -l
.
Без труда.
Физическая память, совместно используемая между процессами - либо разделяемая память IPCS, либо некоторые из mmap()
d физическая память, используемая разделяемыми объектами - будет учитываться в RSS каждого процесса, который отображает эту память в свое адресное пространство. Нет простого способа учесть это, когда отправной точкой для подсчета использования памяти является перечисление процессов - вам нужно будет выполнить сопоставление виртуальных страниц с физическими для всех виртуальных страниц для каждого процесса, а затем устранить дубликаты, надеясь, что сопоставления памяти будут количество обследованных не изменилось при подсчете итогов.
Хорошим примером этого является сервер базы данных Oracle с большим SGA, который реализован в Solaris с использованием разделяемой памяти IPCS. Если 20 процессов сопоставляют SGA с общей памятью объемом 32 ГБ, это добавит 640 ГБ к сумме RSS процессов, даже если используется только 32 ГБ ОЗУ.