]> git.ipfire.org Git - pakfire.git/commitdiff
cgroup: Add functions to configure memory limits
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Aug 2022 12:17:40 +0000 (12:17 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Aug 2022 12:17:40 +0000 (12:17 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/cgroup.c
src/libpakfire/include/pakfire/cgroup.h

index bad6476c209acf66c368bcbf98e96f7ba3e82b78..0c902d851dfd3d634189e4d888f2f0e97de10aef 100644 (file)
@@ -532,3 +532,45 @@ int pakfire_cgroup_destroy(struct pakfire_cgroup* cgroup) {
 int pakfire_cgroup_fd(struct pakfire_cgroup* cgroup) {
        return cgroup->fd;
 }
+
+// Memory
+
+int pakfire_cgroup_set_guaranteed_memory(struct pakfire_cgroup* cgroup, size_t mem) {
+       int r;
+
+       // Enable memory controller
+       r = pakfire_cgroup_enable_controllers(cgroup, PAKFIRE_CGROUP_CONTROLLER_MEMORY);
+       if (r)
+               return r;
+
+       DEBUG(cgroup->pakfire, "%s: Setting guaranteed memory to %zu byte(s)\n",
+               pakfire_cgroup_name(cgroup), mem);
+
+       // Set value
+       r = pakfire_cgroup_write(cgroup, "memory.min", "%zu\n", mem);
+       if (r)
+               ERROR(cgroup->pakfire, "%s: Could not set guaranteed memory: %m\n",
+                       pakfire_cgroup_name(cgroup));
+
+       return r;
+}
+
+int pakfire_cgroup_set_memory_limit(struct pakfire_cgroup* cgroup, size_t mem) {
+       int r;
+
+       // Enable memory controller
+       r = pakfire_cgroup_enable_controllers(cgroup, PAKFIRE_CGROUP_CONTROLLER_MEMORY);
+       if (r)
+               return r;
+
+       DEBUG(cgroup->pakfire, "%s: Setting memory limit to %zu byte(s)\n",
+               pakfire_cgroup_name(cgroup), mem);
+
+       // Set value
+       r = pakfire_cgroup_write(cgroup, "memory.max", "%zu\n", mem);
+       if (r)
+               ERROR(cgroup->pakfire, "%s: Could not set memory limit: %m\n",
+                       pakfire_cgroup_name(cgroup));
+
+       return r;
+}
index 07a726d5a916befc4c109f41f3bfe24d7e90cbc5..20dd0000beaa6c0c2ed2916802ece8c18b91cd0b 100644 (file)
@@ -43,6 +43,10 @@ int pakfire_cgroup_destroy(struct pakfire_cgroup* cgroup);
 
 int pakfire_cgroup_fd(struct pakfire_cgroup* cgroup);
 
+// Memory
+int pakfire_cgroup_set_guaranteed_memory(struct pakfire_cgroup* cgroup, size_t mem);
+int pakfire_cgroup_set_memory_limit(struct pakfire_cgroup* cgroup, size_t mem);
+
 #endif /* PAKFIRE_PRIVATE */
 
 #endif /* PAKFIRE_CGROUP_H */