]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/CGroup.pm
bump version to 8.2.1
[pve-common.git] / src / PVE / CGroup.pm
index d18d0728d00e42ca097bd891fa88938ee0b47491..e2839cf9850dca99f347321f5125b9d0e06d821a 100644 (file)
@@ -408,7 +408,7 @@ sub get_pressure_stat {
 #
 # Dies on error (including a not-running or currently-shutting-down guest).
 sub change_memory_limit {
-    my ($self, $mem_bytes, $swap_bytes) = @_;
+    my ($self, $mem_bytes, $swap_bytes, $mem_high_bytes) = @_;
 
     my ($path, $ver) = $self->get_path('memory', 1);
     if (!defined($path)) {
@@ -416,8 +416,11 @@ sub change_memory_limit {
     } elsif ($ver == 2) {
        PVE::ProcFSTools::write_proc_entry("$path/memory.swap.max", $swap_bytes)
            if defined($swap_bytes);
-       PVE::ProcFSTools::write_proc_entry("$path/memory.max", $mem_bytes)
-           if defined($mem_bytes);
+       if (defined($mem_bytes)) {
+           # 'max' is the hard-limit (triggers OOM), while 'high' throttles & adds reclaim pressure
+           PVE::ProcFSTools::write_proc_entry("$path/memory.high", $mem_high_bytes // 'max');
+           PVE::ProcFSTools::write_proc_entry("$path/memory.max", $mem_bytes);
+       }
     } elsif ($ver == 1) {
        # With cgroupv1 we cannot control memory and swap limits separately.
        # This also means that since the two values aren't independent, we need to handle
@@ -517,8 +520,12 @@ sub clamp_cpu_shares {
 # It is left to the user to figure this out for now.
 #
 # Dies on error (including a not-running or currently-shutting-down guest).
+#
+# NOTE: if you add a new param during 7.x you need to break older pve-container/qemu-server versions
+#  that previously passed a `$cgroupv1_default`, which got removed due to being ignored anyway.
+#  otherwise you risk that a old module bogusly passes some cgroup default as your new param.
 sub change_cpu_shares {
-    my ($self, $shares, $cgroupv1_default) = @_;
+    my ($self, $shares) = @_;
 
     my ($path, $ver) = $self->get_path('cpu', 1);
     if (!defined($path)) {
@@ -530,7 +537,7 @@ sub change_cpu_shares {
        PVE::ProcFSTools::write_proc_entry("$path/cpu.weight", $shares);
     } elsif ($ver == 1) {
        $shares //= 1024;
-       PVE::ProcFSTools::write_proc_entry("$path/cpu.shares", $shares // $cgroupv1_default);
+       PVE::ProcFSTools::write_proc_entry("$path/cpu.shares", $shares);
     } else {
        die "bad cgroup version: $ver\n";
     }