"%sStartupIOWeight=%" PRIu64 "\n"
"%sBlockIOWeight=%" PRIu64 "\n"
"%sStartupBlockIOWeight=%" PRIu64 "\n"
+ "%sDefaultMemoryMin=%" PRIu64 "\n"
"%sDefaultMemoryLow=%" PRIu64 "\n"
"%sMemoryMin=%" PRIu64 "\n"
"%sMemoryLow=%" PRIu64 "\n"
prefix, c->startup_io_weight,
prefix, c->blockio_weight,
prefix, c->startup_blockio_weight,
+ prefix, c->default_memory_min,
prefix, c->default_memory_low,
prefix, c->memory_min,
prefix, c->memory_low,
}
UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_low);
+UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_min);
static void cgroup_xattr_apply(Unit *u) {
char ids[SD_ID128_STRING_MAX];
LIST_HEAD(CGroupIODeviceLimit, io_device_limits);
LIST_HEAD(CGroupIODeviceLatency, io_device_latencies);
+ uint64_t default_memory_min;
uint64_t default_memory_low;
uint64_t memory_min;
uint64_t memory_low;
uint64_t memory_max;
uint64_t memory_swap_max;
+ bool default_memory_min_set;
bool default_memory_low_set;
+ bool memory_min_set;
bool memory_low_set;
LIST_HEAD(IPAddressAccessItem, ip_address_allow);
Unit *manager_get_unit_by_pid_cgroup(Manager *m, pid_t pid);
Unit* manager_get_unit_by_pid(Manager *m, pid_t pid);
+uint64_t unit_get_ancestor_memory_min(Unit *u);
uint64_t unit_get_ancestor_memory_low(Unit *u);
int unit_search_main_pid(Unit *u, pid_t *ret);
if (streq(name, "MemoryLow"))
return bus_cgroup_set_memory(u, name, &c->memory_low, message, flags, error);
+ if (streq(name, "DefaultMemoryMin"))
+ return bus_cgroup_set_memory(u, name, &c->default_memory_min, message, flags, error);
+
if (streq(name, "DefaultMemoryLow"))
return bus_cgroup_set_memory(u, name, &c->default_memory_low, message, flags, error);
if (streq(name, "MemoryLowScale"))
return bus_cgroup_set_memory_scale(u, name, &c->memory_low, message, flags, error);
+ if (streq(name, "DefaultMemoryMinScale"))
+ return bus_cgroup_set_memory_scale(u, name, &c->default_memory_min, message, flags, error);
+
if (streq(name, "DefaultMemoryLowScale"))
return bus_cgroup_set_memory_scale(u, name, &c->default_memory_low, message, flags, error);
c->default_memory_low = CGROUP_LIMIT_MIN;
else
c->default_memory_low = bytes;
- } else if (streq(lvalue, "MemoryMin"))
+ } else if (streq(lvalue, "DefaultMemoryMin")) {
+ c->default_memory_min_set = true;
+ if (isempty(rvalue))
+ c->default_memory_min = CGROUP_LIMIT_MIN;
+ else
+ c->default_memory_min = bytes;
+ } else if (streq(lvalue, "MemoryMin")) {
c->memory_min = bytes;
- else if (streq(lvalue, "MemoryLow")) {
+ c->memory_min_set = true;
+ } else if (streq(lvalue, "MemoryLow")) {
c->memory_low = bytes;
c->memory_low_set = true;
} else if (streq(lvalue, "MemoryHigh"))
uint64_t ip_ingress_bytes;
uint64_t ip_egress_bytes;
+ uint64_t default_memory_min;
uint64_t default_memory_low;
LIST_HEAD(ExecStatusInfo, exec);
{ "Where", "s", NULL, offsetof(UnitStatusInfo, where) },
{ "What", "s", NULL, offsetof(UnitStatusInfo, what) },
{ "MemoryCurrent", "t", NULL, offsetof(UnitStatusInfo, memory_current) },
+ { "DefaultMemoryMin", "t", NULL, offsetof(UnitStatusInfo, default_memory_min) },
{ "DefaultMemoryLow", "t", NULL, offsetof(UnitStatusInfo, default_memory_low) },
{ "MemoryMin", "t", NULL, offsetof(UnitStatusInfo, memory_min) },
{ "MemoryLow", "t", NULL, offsetof(UnitStatusInfo, memory_low) },