Предположим, что несколько процессов используют одну и ту же общую библиотеку (например, Gtk). Предположительно, они используют mmap
файл библиотеки, а физически оперативная память является общей?
Однако размер библиотеки добавляется к размеру памяти каждого процесса, как показано в системном мониторе, что приводит к преувеличенным числам. Это точно?
решение1
Фактический учет памяти разделяет общую память и частную память, но некоторые инструменты объединяют их при отображении использования памяти процессом. Кроме того, cgroups будут взимать плату с процесса за это использование памяти, поэтому если у вас есть максимальный предел памяти в cgroups, это учитывается.
Это не преувеличивает использование памяти процессом — он действительно использует эту память. Но если вы посмотрите на общее использование памяти группой процессов и посмотрите только на объединенные итоги, результаты будут завышены по сравнению с реальным использованием. Нет простого способа узнать, сколько раз общая библиотека повторно используется, не разбирая библиотеки, используемые каждым процессом, хотя это должно быть правильно учтено в cgroups.
Поэтому, если вы хотите узнать истинное использование памяти группой процессов и считаете оправданным добавить их все в одну и ту же контрольную группу памяти, это должно дать вам правильный ответ.