У меня есть сервер базы данных, который обычно использует довольно много общей памяти и файлов, отображаемых в памяти.
Когда я запускаю его с нуля с чистой базой данных, он потребляет около 48496 КиБ ~ ~ 50 МБ в зависимости от top
.
Теперь я создаю cgroup test-cgroup
в стандартной иерархии memory
, делая что-то вроде
sudo mkdir /sys/fs/cgroup/memory/monetdb
sudo chown -R aris /sys/fs/cgroup/memory/monetdb
echo $$ > /sys/fs/cgroup/memory/monetdb/tasks
server run
Теперь я проверяю использование памяти в соответствии с интерфейсом cgroup:
cat /sys/fs/cgroup/memory/monetdb/memory.usage_in_bytes
35471360 Bytes ~~ 35MB.
Следующая часть - установить жесткий предел физической памяти, выполнив
echo 20M > /sys/fs/cgroup/memory/monetdb/memory.limit_in_bytes
cat /sys/fs/cgroup/memory/monetdb/memory.limit_in_bytes
20971520
Вывод cat memory.usage_in_bytes
20840448
Так что это, кажется, в рамках cgroup
.
Но команда top
показывает для RSS
что-то вроде 28616 КиБ ~ 28 МБ, что немного ниже, чем исходный вывод top
но не совсем ниже определенного порога в 20 МБ.
Таким образом , существует разница между top
s и RSS
cgroup
memory.usage_in_bytes
s. Что агрегируется в этих двух метриках? Какая мера является лучшей оценкой заявки приложения на физическую память?