* [pve-devel] [PATCH qemu-server 0/3] use generic CGroup module
@ 2020-10-30 9:42 Alexandre Derumier
2020-10-30 9:42 ` [pve-devel] [PATCH qemu-server 1/3] add PVE::QemuServer::Cgroup Alexandre Derumier
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Alexandre Derumier @ 2020-10-30 9:42 UTC (permalink / raw)
To: pve-devel
following pve-common patch series
Alexandre Derumier (3):
add PVE::QemuServer::Cgroup
replace cgroups_write by cgroup change_cpu_shares && change_cpu_quota
systemd scope: add CPUWeight for cgroupv2
PVE/QemuServer.pm | 28 ++++++++++++++--------------
PVE/QemuServer/CGroup.pm | 25 +++++++++++++++++++++++++
PVE/QemuServer/Makefile | 1 +
3 files changed, 40 insertions(+), 14 deletions(-)
create mode 100644 PVE/QemuServer/CGroup.pm
--
2.20.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH qemu-server 1/3] add PVE::QemuServer::Cgroup
2020-10-30 9:42 [pve-devel] [PATCH qemu-server 0/3] use generic CGroup module Alexandre Derumier
@ 2020-10-30 9:42 ` Alexandre Derumier
2020-11-24 11:09 ` Wolfgang Bumiller
2020-10-30 9:42 ` [pve-devel] [PATCH qemu-server 2/3] replace cgroups_write by cgroup change_cpu_shares && change_cpu_quota Alexandre Derumier
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: Alexandre Derumier @ 2020-10-30 9:42 UTC (permalink / raw)
To: pve-devel
---
PVE/QemuServer/CGroup.pm | 25 +++++++++++++++++++++++++
PVE/QemuServer/Makefile | 1 +
2 files changed, 26 insertions(+)
create mode 100644 PVE/QemuServer/CGroup.pm
diff --git a/PVE/QemuServer/CGroup.pm b/PVE/QemuServer/CGroup.pm
new file mode 100644
index 0000000..7ca0826
--- /dev/null
+++ b/PVE/QemuServer/CGroup.pm
@@ -0,0 +1,25 @@
+package PVE::QemuServer::CGroup;
+
+use strict;
+use warnings;
+use PVE::CGroup;
+use base('PVE::CGroup');
+
+sub get_subdir {
+ my ($self, $controller, $limiting) = @_;
+
+ my $entry_name = $controller || 'unified';
+ my $entry = ($self->{controllers}->{$entry_name} //= {});
+
+ my $kind = $limiting ? 'limit' : 'ns';
+ my $path = $entry->{$kind};
+
+ return $path if defined $path;
+
+ my $vmid = $self->{vmid};
+ $path = "qemu.slice/$vmid.scope/";
+
+ return $path;
+}
+
+1;
diff --git a/PVE/QemuServer/Makefile b/PVE/QemuServer/Makefile
index fd8cfbb..e4ed184 100644
--- a/PVE/QemuServer/Makefile
+++ b/PVE/QemuServer/Makefile
@@ -9,6 +9,7 @@ SOURCES=PCI.pm \
Monitor.pm \
Machine.pm \
CPUConfig.pm \
+ CGroup.pm \
Drive.pm \
.PHONY: install
--
2.20.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH qemu-server 2/3] replace cgroups_write by cgroup change_cpu_shares && change_cpu_quota
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-10-30 9:42 ` Alexandre Derumier
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
3 siblings, 0 replies; 6+ messages in thread
From: Alexandre Derumier @ 2020-10-30 9:42 UTC (permalink / raw)
To: pve-devel
---
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH qemu-server 3/3] systemd scope: add CPUWeight for cgroupv2
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-10-30 9:42 ` [pve-devel] [PATCH qemu-server 2/3] replace cgroups_write by cgroup change_cpu_shares && change_cpu_quota Alexandre Derumier
@ 2020-10-30 9:42 ` Alexandre Derumier
2020-11-24 11:09 ` [pve-devel] applied 2&3: [PATCH qemu-server 0/3] use generic CGroup module Wolfgang Bumiller
3 siblings, 0 replies; 6+ messages in thread
From: Alexandre Derumier @ 2020-10-30 9:42 UTC (permalink / raw)
To: pve-devel
---
PVE/QemuServer.pm | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 1fd6338..af74d64 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -5064,10 +5064,15 @@ sub vm_start_nolock {
my %properties = (
Slice => 'qemu.slice',
- KillMode => 'none',
- CPUShares => $cpuunits
+ KillMode => 'none'
);
+ if (PVE::CGroup::cgroup_mode() == 2) {
+ $properties{CPUWeight} = $cpuunits;
+ } else {
+ $properties{CPUShares} = $cpuunits;
+ }
+
if (my $cpulimit = $conf->{cpulimit}) {
$properties{CPUQuota} = int($cpulimit * 100);
}
--
2.20.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [pve-devel] [PATCH qemu-server 1/3] add PVE::QemuServer::Cgroup
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
0 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Bumiller @ 2020-11-24 11:09 UTC (permalink / raw)
To: Alexandre Derumier; +Cc: pve-devel
qemu doesn't actually have a limiting namespace subdirectory, so I'll
just replace this with:
sub get_subdir {
my ($self, $controller, $limiting) = @_;
my $vmid = $self->{vmid};
return "qemu.slice/$vmid.scope/";
}
On Fri, Oct 30, 2020 at 10:42:34AM +0100, Alexandre Derumier wrote:
> ---
> PVE/QemuServer/CGroup.pm | 25 +++++++++++++++++++++++++
> PVE/QemuServer/Makefile | 1 +
> 2 files changed, 26 insertions(+)
> create mode 100644 PVE/QemuServer/CGroup.pm
>
> diff --git a/PVE/QemuServer/CGroup.pm b/PVE/QemuServer/CGroup.pm
> new file mode 100644
> index 0000000..7ca0826
> --- /dev/null
> +++ b/PVE/QemuServer/CGroup.pm
> @@ -0,0 +1,25 @@
> +package PVE::QemuServer::CGroup;
> +
> +use strict;
> +use warnings;
> +use PVE::CGroup;
> +use base('PVE::CGroup');
> +
> +sub get_subdir {
> + my ($self, $controller, $limiting) = @_;
> +
> + my $entry_name = $controller || 'unified';
> + my $entry = ($self->{controllers}->{$entry_name} //= {});
> +
> + my $kind = $limiting ? 'limit' : 'ns';
> + my $path = $entry->{$kind};
> +
> + return $path if defined $path;
> +
> + my $vmid = $self->{vmid};
> + $path = "qemu.slice/$vmid.scope/";
> +
> + return $path;
> +}
> +
> +1;
> diff --git a/PVE/QemuServer/Makefile b/PVE/QemuServer/Makefile
> index fd8cfbb..e4ed184 100644
> --- a/PVE/QemuServer/Makefile
> +++ b/PVE/QemuServer/Makefile
> @@ -9,6 +9,7 @@ SOURCES=PCI.pm \
> Monitor.pm \
> Machine.pm \
> CPUConfig.pm \
> + CGroup.pm \
> Drive.pm \
>
> .PHONY: install
> --
> 2.20.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] applied 2&3: [PATCH qemu-server 0/3] use generic CGroup module
2020-10-30 9:42 [pve-devel] [PATCH qemu-server 0/3] use generic CGroup module Alexandre Derumier
` (2 preceding siblings ...)
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 ` Wolfgang Bumiller
3 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Bumiller @ 2020-11-24 11:09 UTC (permalink / raw)
To: Alexandre Derumier; +Cc: pve-devel
applied patch 2 & 3, replaced 1
On Fri, Oct 30, 2020 at 10:42:33AM +0100, Alexandre Derumier wrote:
> following pve-common patch series
>
> Alexandre Derumier (3):
> add PVE::QemuServer::Cgroup
> replace cgroups_write by cgroup change_cpu_shares && change_cpu_quota
> systemd scope: add CPUWeight for cgroupv2
>
> PVE/QemuServer.pm | 28 ++++++++++++++--------------
> PVE/QemuServer/CGroup.pm | 25 +++++++++++++++++++++++++
> PVE/QemuServer/Makefile | 1 +
> 3 files changed, 40 insertions(+), 14 deletions(-)
> create mode 100644 PVE/QemuServer/CGroup.pm
>
> --
> 2.20.1
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-11-24 11:10 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [pve-devel] [PATCH qemu-server 2/3] replace cgroups_write by cgroup change_cpu_shares && change_cpu_quota Alexandre Derumier
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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox