all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Alexandre Derumier <aderumier@odiso.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH qemu-server 2/3] replace cgroups_write by cgroup change_cpu_shares && change_cpu_quota
Date: Fri, 30 Oct 2020 10:42:35 +0100	[thread overview]
Message-ID: <20201030094236.53483-3-aderumier@odiso.com> (raw)
In-Reply-To: <20201030094236.53483-1-aderumier@odiso.com>

---
 PVE/QemuServer.pm | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 20e284c..1fd6338 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -27,6 +27,7 @@ use URI::Escape;
 use UUID;
 
 use PVE::Cluster qw(cfs_register_file cfs_read_file cfs_write_file);
+use PVE::CGroup;
 use PVE::DataCenterConfig;
 use PVE::Exception qw(raise raise_param_exc);
 use PVE::GuestHelpers qw(safe_string_ne safe_num_ne safe_boolean_ne);
@@ -43,6 +44,7 @@ use PVE::QMPClient;
 use PVE::QemuConfig;
 use PVE::QemuServer::Helpers qw(min_version config_aware_timeout);
 use PVE::QemuServer::Cloudinit;
+use PVE::QemuServer::CGroup;
 use PVE::QemuServer::CPUConfig qw(print_cpu_device get_cpu_options);
 use PVE::QemuServer::Drive qw(is_valid_drivename drive_is_cloudinit drive_is_cdrom parse_drive print_drive);
 use PVE::QemuServer::Machine;
@@ -121,14 +123,6 @@ PVE::JSONSchema::register_standard_option('pve-targetstorage', {
 
 #no warnings 'redefine';
 
-sub cgroups_write {
-   my ($controller, $vmid, $option, $value) = @_;
-
-   my $path = "/sys/fs/cgroup/$controller/qemu.slice/$vmid.scope/$option";
-   PVE::ProcFSTools::write_proc_entry($path, $value);
-
-}
-
 my $nodename_cache;
 sub nodename {
     $nodename_cache //= PVE::INotify::nodename();
@@ -4370,6 +4364,7 @@ sub vmconfig_hotplug_pending {
 
     my $hotplug_features = parse_hotplug_features(defined($conf->{hotplug}) ? $conf->{hotplug} : '1');
 
+    my $cgroup = PVE::QemuServer::CGroup->new($vmid);
     my $pending_delete_hash = PVE::QemuConfig->parse_pending_delete($conf->{pending}->{delete});
     foreach my $opt (sort keys %$pending_delete_hash) {
 	next if $selection && !$selection->{$opt};
@@ -4414,9 +4409,9 @@ sub vmconfig_hotplug_pending {
 		die "skip\n" if !$hotplug_features->{memory};
 		PVE::QemuServer::Memory::qemu_memory_hotplug($vmid, $conf, $defaults, $opt);
 	    } elsif ($opt eq 'cpuunits') {
-		cgroups_write("cpu", $vmid, "cpu.shares", $defaults->{cpuunits});
+		$cgroup->change_cpu_shares(undef, $defaults->{cpuunits});
 	    } elsif ($opt eq 'cpulimit') {
-		cgroups_write("cpu", $vmid, "cpu.cfs_quota_us", -1);
+		$cgroup->change_cpu_quota(-1, 100000);
 	    } else {
 		die "skip\n";
 	    }
@@ -4501,10 +4496,10 @@ sub vmconfig_hotplug_pending {
 		die "skip\n" if !$hotplug_features->{memory};
 		$value = PVE::QemuServer::Memory::qemu_memory_hotplug($vmid, $conf, $defaults, $opt, $value);
 	    } elsif ($opt eq 'cpuunits') {
-		cgroups_write("cpu", $vmid, "cpu.shares", $conf->{pending}->{$opt});
+		$cgroup->change_cpu_shares($conf->{pending}->{$opt}, $defaults->{cpuunits});
 	    } elsif ($opt eq 'cpulimit') {
 		my $cpulimit = $conf->{pending}->{$opt} == 0 ? -1 : int($conf->{pending}->{$opt} * 100000);
-		cgroups_write("cpu", $vmid, "cpu.cfs_quota_us", $cpulimit);
+		$cgroup->change_cpu_quota($cpulimit, 100000);
 	    } else {
 		die "skip\n";  # skip non-hot-pluggable options
 	    }
-- 
2.20.1




  parent reply	other threads:[~2020-10-30  9:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-30  9:42 [pve-devel] [PATCH qemu-server 0/3] use generic CGroup module Alexandre Derumier
2020-10-30  9:42 ` [pve-devel] [PATCH qemu-server 1/3] add PVE::QemuServer::Cgroup Alexandre Derumier
2020-11-24 11:09   ` Wolfgang Bumiller
2020-10-30  9:42 ` Alexandre Derumier [this message]
2020-10-30  9:42 ` [pve-devel] [PATCH qemu-server 3/3] systemd scope: add CPUWeight for cgroupv2 Alexandre Derumier
2020-11-24 11:09 ` [pve-devel] applied 2&3: [PATCH qemu-server 0/3] use generic CGroup module Wolfgang Bumiller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201030094236.53483-3-aderumier@odiso.com \
    --to=aderumier@odiso.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal