diff options
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | man/systemd.cgroup.xml | 15 | ||||
-rw-r--r-- | src/core/cgroup.c | 16 | ||||
-rw-r--r-- | src/core/cgroup.h | 1 | ||||
-rw-r--r-- | src/core/dbus-cgroup.c | 10 | ||||
-rw-r--r-- | src/core/dbus-cgroup.h | 1 | ||||
-rw-r--r-- | src/core/load-fragment-gperf.gperf.m4 | 1 | ||||
-rw-r--r-- | src/core/load-fragment.c | 7 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 2 |
9 files changed, 12 insertions, 43 deletions
@@ -60,8 +60,6 @@ Features: * always set memory.user_hierarchy for all cgroups we create -* Get rid of MemorySoftLimit= - * After coming back from hibernation reset hibernation swap partition * mounts: do not test each mount unit against each other mount unit to diff --git a/man/systemd.cgroup.xml b/man/systemd.cgroup.xml index cc0eb15abb..ac5896233c 100644 --- a/man/systemd.cgroup.xml +++ b/man/systemd.cgroup.xml @@ -136,22 +136,17 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. <varlistentry> <term><varname>MemoryLimit=<replaceable>bytes</replaceable></varname></term> - <term><varname>MemorySoftLimit=<replaceable>bytes</replaceable></varname></term> <listitem> - <para>Specify the hard and soft limits on maximum memory - usage of the executed processes. The "hard" limit specifies - how much process and kernel memory can be used by tasks in - this unit, when there is no memory contention. If the kernel - detects memory contention, memory reclaim will be performed - until the memory usage is within the "soft" limit. Takes a + <para>Specify the limit on maximum memory usage of the + executed processes. The limit specifies how much process and + kernel memory can be used by tasks in this unit. Takes a memory size in bytes. If the value is suffixed with K, M, G or T, the specified memory size is parsed as Kilobytes, Megabytes, Gigabytes, or Terabytes (with the base 1024), respectively. This controls the - <literal>memory.limit_in_bytes</literal> and - <literal>memory.soft_limit_in_bytes</literal> control group - attributes. For details about these control group attributes, + <literal>memory.limit_in_bytes</literal> control group + attribute. For details about this control group attribute, see <ulink url="https://www.kernel.org/doc/Documentation/cgroups/memory.txt">memory.txt</ulink>.</para> diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 9277dd69f6..d10f205a2f 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -33,7 +33,7 @@ void cgroup_context_init(CGroupContext *c) { * structure is preinitialized to 0 */ c->cpu_shares = 1024; - c->memory_limit = c->memory_soft_limit = (uint64_t) -1; + c->memory_limit = (uint64_t) -1; c->blockio_weight = 1000; } @@ -94,7 +94,6 @@ void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix) { "%sCPUShares=%lu\n" "%sBlockIOWeight=%lu\n" "%sMemoryLimit=%" PRIu64 "\n" - "%sMemorySoftLimit=%" PRIu64 "\n" "%sDevicePolicy=%s\n", prefix, yes_no(c->cpu_accounting), prefix, yes_no(c->blockio_accounting), @@ -102,7 +101,6 @@ void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix) { prefix, c->cpu_shares, prefix, c->blockio_weight, prefix, c->memory_limit, - prefix, c->memory_soft_limit, prefix, cgroup_device_policy_to_string(c->device_policy)); LIST_FOREACH(device_allow, a, c->device_allow) @@ -265,15 +263,6 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha if (r < 0) log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); - - if (c->memory_soft_limit != (uint64_t) -1) { - sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); - r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); - } else - r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", "-1"); - - if (r < 0) - log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r)); } if (mask & CGROUP_DEVICE) { @@ -336,8 +325,7 @@ CGroupControllerMask cgroup_context_get_mask(CGroupContext *c) { mask |= CGROUP_BLKIO; if (c->memory_accounting || - c->memory_limit != (uint64_t) -1 || - c->memory_soft_limit != (uint64_t) -1) + c->memory_limit != (uint64_t) -1) mask |= CGROUP_MEMORY; if (c->device_allow || c->device_policy != CGROUP_AUTO) diff --git a/src/core/cgroup.h b/src/core/cgroup.h index 786bd71c8b..0a079e909d 100644 --- a/src/core/cgroup.h +++ b/src/core/cgroup.h @@ -77,7 +77,6 @@ struct CGroupContext { LIST_HEAD(CGroupBlockIODeviceBandwidth, blockio_device_bandwidths); uint64_t memory_limit; - uint64_t memory_soft_limit; CGroupDevicePolicy device_policy; LIST_HEAD(CGroupDeviceAllow, device_allow); diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c index 1f2a396a6d..9ebcad9da6 100644 --- a/src/core/dbus-cgroup.c +++ b/src/core/dbus-cgroup.c @@ -133,7 +133,6 @@ const BusProperty bus_cgroup_context_properties[] = { { "BlockIOWriteBandwidth", bus_cgroup_append_device_bandwidths, "a(st)", 0 }, { "MemoryAccounting", bus_property_append_bool, "b", offsetof(CGroupContext, memory_accounting) }, { "MemoryLimit", bus_property_append_uint64, "t", offsetof(CGroupContext, memory_limit) }, - { "MemorySoftLimit", bus_property_append_uint64, "t", offsetof(CGroupContext, memory_soft_limit) }, { "DevicePolicy", bus_cgroup_append_device_policy, "s", offsetof(CGroupContext, device_policy) }, { "DeviceAllow", bus_cgroup_append_device_allow, "a(ss)", 0 }, {} @@ -418,21 +417,16 @@ int bus_cgroup_set_property( return 1; - } else if (streq(name, "MemoryLimit") || streq(name, "MemorySoftLimit")) { + } else if (streq(name, "MemoryLimit")) { if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_UINT64) return -EINVAL; if (mode != UNIT_CHECK) { uint64_t limit; - dbus_message_iter_get_basic(i, &limit); - if (streq(name, "MemoryLimit")) - c->memory_limit = limit; - else - c->memory_soft_limit = limit; - + c->memory_limit = limit; unit_write_drop_in_private_format(u, mode, name, "%s=%" PRIu64, name, limit); } diff --git a/src/core/dbus-cgroup.h b/src/core/dbus-cgroup.h index 4ce1e7e7fa..e5ac4c3af7 100644 --- a/src/core/dbus-cgroup.h +++ b/src/core/dbus-cgroup.h @@ -37,7 +37,6 @@ " <property name=\"BlockIOWriteBandwidth=\" type=\"a(st)\" access=\"read\"/>\n" \ " <property name=\"MemoryAccounting\" type=\"b\" access=\"read\"/>\n" \ " <property name=\"MemoryLimit\" type=\"t\" access=\"read\"/>\n" \ - " <property name=\"MemorySoftLimit\" type=\"t\" access=\"read\"/>\n" \ " <property name=\"DevicePolicy\" type=\"s\" access=\"read\"/>\n" \ " <property name=\"DeviceAllow\" type=\"a(ss)\" access=\"read\"/>\n" diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 33c6880b5d..25bd3aae47 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -89,7 +89,6 @@ $1.CPUAccounting, config_parse_bool, 0, $1.CPUShares, config_parse_cpu_shares, 0, offsetof($1, cgroup_context) $1.MemoryAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.memory_accounting) $1.MemoryLimit, config_parse_memory_limit, 0, offsetof($1, cgroup_context) -$1.MemorySoftLimit, config_parse_memory_limit, 0, offsetof($1, cgroup_context) $1.DeviceAllow, config_parse_device_allow, 0, offsetof($1, cgroup_context) $1.DevicePolicy, config_parse_device_policy, 0, offsetof($1, cgroup_context.device_policy) $1.BlockIOAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.blockio_accounting) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index cfc6f078a6..74454abe49 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -2036,14 +2036,11 @@ int config_parse_memory_limit( void *userdata) { CGroupContext *c = data; - uint64_t *limit; off_t bytes; int r; - limit = streq(lvalue, "MemoryLimit") ? &c->memory_limit : &c->memory_soft_limit; - if (isempty(rvalue)) { - *limit = (uint64_t) -1; + c->memory_limit = (uint64_t) -1; return 0; } @@ -2056,7 +2053,7 @@ int config_parse_memory_limit( return 0; } - *limit = (uint64_t) bytes; + c->memory_limit = (uint64_t) bytes; return 0; } diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 57e5bb941b..62b5616d80 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3657,7 +3657,7 @@ static int append_assignment(DBusMessageIter *iter, const char *assignment) { !dbus_message_iter_append_basic(&sub, DBUS_TYPE_BOOLEAN, &b)) return log_oom(); - } else if (streq(field, "MemoryLimit") || streq(field, "MemorySoftLimit")) { + } else if (streq(field, "MemoryLimit")) { off_t bytes; uint64_t u; |