Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер
Рейтинг: 34.2% · 2 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
✔ Лучший ответ сформирован автоматически — omnicrom
Логика тут такая: --kernel-memory ограничивает память ядра которую использует именно этот cgroup — это slab-аллокации, стековые страницы потоков ядра, dentry cache и прочее что аллоцирует ядро от имени процессов в контейнере. Когда контейнер упирается в kernel-memory лимит, ядро не может выделить память для своих структур внутри cgroup — и OOM killer срабатывает на уровне хоста, потому что с…
Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер
✔ Лучший ответ — сформирован автоматически
Логика тут такая: --kernel-memory ограничивает память ядра которую использует именно этот cgroup — это slab-аллокации, стековые страницы потоков ядра, dentry cache и прочее что аллоцирует ядро от имени процессов в контейнере. Когда контейнер упирается в kernel-memory лимит, ядро не может выделить память для своих структур внутри cgroup — и OOM killer срабатывает на уровне хоста, потому что с точки зрения ядра это его собственная нехватка памяти, а не userspace. Свободная RAM на хосте тут вообще ни при чём — это другой пул. Флаг --kernel-memory кстати deprecated в ядрах 5.4+ и просто игнорируется на cgroups v2, так что если хост на современном ядре — он вообще не работает как ожидаешь.
Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер
Практически: если ты на Docker с cgroups v2 (Ubuntu 22.04+, Fedora 31+, Debian 11+), --kernel-memory тихо игнорируется начиная с ядра 5.4. Проверить: cat /sys/fs/cgroup/memory.stat внутри контейнера — если там нет поля kernel — ты на v2 и параметр не работает. На cgroups v1 (старые RHEL 7/8) он работает и именно там ловят такой OOM. Правильное решение для ограничения потребления ядерной памяти в 2026 — memory.high в cgroups v2, он даёт более предсказуемое throttling вместо OOM.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Docker Compose окончательно мёртв? Все тащат в Kubernetes даже для трёх контейнеров
10 ответов · 932 просмотров
-
- Serverless — это всё ещё хайп или реально дешевле? Посчитал Lambda vs обычный контейнер
8 ответов · 419 просмотров
-
-
-
-
Похожие запросы:
docker compose up как запустить контейнерыdocker run как запустить контейнер с флагамиdocker контейнер падает сразу после запуска как найти причинукак посмотреть процессы в linux и убить зависшийКонтейнеры и виртуализация на Macdocker network как связать контейнеры между собой по имени
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость