Namespaces изолируют видимость ресурсов, а cgroups учитывают и ограничивают их потребление. CPU-квоту можно отложить до следующего периода, а при нехватке памяти требуется reclaim, отказ выделения или OOM.
Как Linux cgroups и namespaces изолируют Docker-контейнер и почему превышение лимита по CPU вызывает троттлинг, а по RAM — OOM?
Namespaces изолируют видимость ресурсов, а cgroups учитывают и ограничивают их потребление. CPU-квоту можно отложить до следующего периода, а при нехватке памяти требуется reclaim, отказ выделения или OOM.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Namespaces изолируют видимость ресурсов, а cgroups учитывают и ограничивают их потребление. CPU-квоту можно отложить до следующего периода, а при нехватке памяти требуется reclaim, отказ выделения или OOM.
Исчерпавший cpu.max процесс обычно ждёт обновления квоты, поэтому растёт задержка, а не обязательно происходит авария. Предел memory.max сначала приводит к попыткам освободить память; если это невозможно, может сработать cgroup OOM. memory.high — другой механизм давления, не то же самое, что жёсткий предел. Изоляция ресурсов не равна отдельному ядру и зависит от настройки контейнера.
Источник: www.kernel.org.