* [pve-devel] [PATCH pve-common 0/1] Cgroups: add get_pressure_stat @ 2020-11-04 1:41 Alexandre Derumier 2020-11-04 1:41 ` [pve-devel] [PATCH pve-common 1/1] " Alexandre Derumier 0 siblings, 1 reply; 3+ messages in thread From: Alexandre Derumier @ 2020-11-04 1:41 UTC (permalink / raw) To: pve-devel This following my cgroup patch series from last week. This get pressure stat for CT or VM through cgroup. (pressure stats are only available in cgroupv2, even in hybrid hierarchy) Alexandre Derumier (1): add get_pressure_stat src/PVE/CGroup.pm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) -- 2.20.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [pve-devel] [PATCH pve-common 1/1] add get_pressure_stat 2020-11-04 1:41 [pve-devel] [PATCH pve-common 0/1] Cgroups: add get_pressure_stat Alexandre Derumier @ 2020-11-04 1:41 ` Alexandre Derumier 2021-02-06 14:13 ` Thomas Lamprecht 0 siblings, 1 reply; 3+ messages in thread From: Alexandre Derumier @ 2020-11-04 1:41 UTC (permalink / raw) To: pve-devel --- src/PVE/CGroup.pm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/PVE/CGroup.pm b/src/PVE/CGroup.pm index 4823be2..457502e 100644 --- a/src/PVE/CGroup.pm +++ b/src/PVE/CGroup.pm @@ -358,6 +358,49 @@ sub get_memory_stat { return $res; } +# Parse some memory data from `memory.stat` +sub get_pressure_stat { + my ($self) = @_; + + my $res = { + cpu => { + some => { avg10 => 10, avg60 => 0, avg300 => 0 } + }, + memory => { + some => { avg10 => 10, avg60 => 0, avg300 => 0 }, + full => { avg10 => 10, avg60 => 0, avg300 => 0 } + }, + io => { + some => { avg10 => 10, avg60 => 0, avg300 => 0 }, + full => { avg10 => 10, avg60 => 0, avg300 => 0 } + }, + }; + + my ($path, $ver) = $self->get_path(undef, 1); + if (!defined($path)) { + # container or VM most likely isn't running + return undef; + } elsif ($ver == 2) { + + foreach my $type (qw(cpu memory io)) { + if (my $fh = IO::File->new ("$path/$type.pressure", "r")) { + while (defined (my $line = <$fh>)) { + if ($line =~ /^(some|full)\s+avg10\=(\d+\.\d+)\s+avg60\=(\d+\.\d+)\s+avg300\=(\d+\.\d+)\s+total\=(\d+)/) { + $res->{$type}->{$1}->{avg10} = $2; + $res->{$type}->{$1}->{avg60} = $3; + $res->{$type}->{$1}->{avg300} = $4; + } + } + $fh->close; + } + } + } else { + die "bad cgroup version: $ver\n"; + } + + return $res; +} + # Change the memory limit for this container. # # Dies on error (including a not-running or currently-shutting-down guest). -- 2.20.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [pve-devel] [PATCH pve-common 1/1] add get_pressure_stat 2020-11-04 1:41 ` [pve-devel] [PATCH pve-common 1/1] " Alexandre Derumier @ 2021-02-06 14:13 ` Thomas Lamprecht 0 siblings, 0 replies; 3+ messages in thread From: Thomas Lamprecht @ 2021-02-06 14:13 UTC (permalink / raw) To: Proxmox VE development discussion, Alexandre Derumier On 04.11.20 02:41, Alexandre Derumier wrote: > --- > src/PVE/CGroup.pm | 43 +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 43 insertions(+) > > diff --git a/src/PVE/CGroup.pm b/src/PVE/CGroup.pm > index 4823be2..457502e 100644 > --- a/src/PVE/CGroup.pm > +++ b/src/PVE/CGroup.pm > @@ -358,6 +358,49 @@ sub get_memory_stat { > return $res; > } > > +# Parse some memory data from `memory.stat` > +sub get_pressure_stat { > + my ($self) = @_; > + > + my $res = { > + cpu => { > + some => { avg10 => 10, avg60 => 0, avg300 => 0 } here too, why 10 as default for the avg over the last 10 seconds? > + }, > + memory => { > + some => { avg10 => 10, avg60 => 0, avg300 => 0 }, > + full => { avg10 => 10, avg60 => 0, avg300 => 0 } > + }, > + io => { > + some => { avg10 => 10, avg60 => 0, avg300 => 0 }, > + full => { avg10 => 10, avg60 => 0, avg300 => 0 } > + }, > + }; > + > + my ($path, $ver) = $self->get_path(undef, 1); > + if (!defined($path)) { > + # container or VM most likely isn't running > + return undef; > + } elsif ($ver == 2) { > + > + foreach my $type (qw(cpu memory io)) { > + if (my $fh = IO::File->new ("$path/$type.pressure", "r")) { > + while (defined (my $line = <$fh>)) { > + if ($line =~ /^(some|full)\s+avg10\=(\d+\.\d+)\s+avg60\=(\d+\.\d+)\s+avg300\=(\d+\.\d+)\s+total\=(\d+)/) { > + $res->{$type}->{$1}->{avg10} = $2; > + $res->{$type}->{$1}->{avg60} = $3; > + $res->{$type}->{$1}->{avg300} = $4; > + } > + } > + $fh->close; > + } > + } > + } else { > + die "bad cgroup version: $ver\n"; > + } > + > + return $res; > +} > + > # Change the memory limit for this container. > # > # Dies on error (including a not-running or currently-shutting-down guest). > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-02-06 14:14 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-11-04 1:41 [pve-devel] [PATCH pve-common 0/1] Cgroups: add get_pressure_stat Alexandre Derumier 2020-11-04 1:41 ` [pve-devel] [PATCH pve-common 1/1] " Alexandre Derumier 2021-02-06 14:13 ` Thomas Lamprecht
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox