mirror of
https://github.com/systemd/systemd.git
synced 2025-03-21 02:50:18 +03:00
cgroup: Restrict effective limits with global resource provision
Global resource (whole system or root cg's (e.g. in a container)) is also a well-defined limit for memory and tasks, take it into account when calculating effective limits.
This commit is contained in:
parent
ce35bb95c7
commit
93f8e88d23
@ -438,7 +438,7 @@ CPUWeight=20 DisableControllers=cpu / \
|
||||
<literal>memory.max</literal> control group attribute. For details about this control group attribute, see
|
||||
<ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.
|
||||
The effective configuration is reported as <varname>EffectiveMemoryMax=</varname> (the value is
|
||||
the most stringent limit of the unit and parent slices).</para>
|
||||
the most stringent limit of the unit and parent slices and it is capped by physical memory).</para>
|
||||
|
||||
<para>While <varname>StartupMemoryMax=</varname> applies to the startup and shutdown phases of the system,
|
||||
<varname>MemoryMax=</varname> applies to normal runtime of the system, and if the former is not set also to
|
||||
|
@ -4253,6 +4253,17 @@ static uint64_t unit_get_effective_limit_one(Unit *u, CGroupLimitType type) {
|
||||
assert(u);
|
||||
assert(UNIT_HAS_CGROUP_CONTEXT(u));
|
||||
|
||||
if (unit_has_name(u, SPECIAL_ROOT_SLICE))
|
||||
switch (type) {
|
||||
case CGROUP_LIMIT_MEMORY_MAX:
|
||||
case CGROUP_LIMIT_MEMORY_HIGH:
|
||||
return physical_memory();
|
||||
case CGROUP_LIMIT_TASKS_MAX:
|
||||
return system_tasks_max();
|
||||
default:
|
||||
assert_not_reached();
|
||||
}
|
||||
|
||||
cc = unit_get_cgroup_context(u);
|
||||
switch (type) {
|
||||
/* Note: on legacy/hybrid hierarchies memory_max stays CGROUP_LIMIT_MAX unless configured
|
||||
|
Loading…
x
Reference in New Issue
Block a user