У меня есть сервер базы данных, который обычно использует довольно много общей памяти и файлов, отображаемых в памяти.

Когда я запускаю его с нуля с чистой базой данных, он потребляет около 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. Что агрегируется в этих двух метриках? Какая мера является лучшей оценкой заявки приложения на физическую память?

0