Назад | Перейти на главную страницу

Докер статистика памяти ниже, чем у вершины rss

Я создал контейнер, в котором создал ~ 10 процессов. Я хочу проанализировать, сколько памяти они потребляют. Для этого я побежал top внутри контейнера, и docker stats вне.

В top, Я вижу 10 процессов, каждый из которых занимает 50 МБ резидент объем памяти. Так что я ожидал docker stats чтобы отобразить как минимум 500 МБ памяти, используемой контейнером, но отображается только 140 МБ.

Откуда это несоответствие? Какое реальное потребление памяти?

вывод htop:

вывод статистики докеров:

В Linux процесс fork () ed изначально ссылается на те же страницы памяти, что и его родитель, в схеме копирования при записи. Запуск нескольких копий одного и того же объекта обеспечивает очень хороший коэффициент дедупликации.

Использование памяти контейнера - это точное потребление. Его реализация cgroups использует ядро ​​для отслеживания ресурсов. (То же самое относится и к другим пользователям cgroups, таким как фрагменты systemd.) Но достижение предела по умолчанию вызовет убийцу OOM.

Практический предел находится где-то между наблюдаемым использованием контейнера и суммой размера резидентного набора. Консервативно, вы можете начать с 500 МБ. Это намного лучше, чем неограниченный лимит всей вашей памяти в 62 000 МБ.