* [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 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.