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