all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH V2 pve-common] add get_pressure_stat
@ 2021-02-07 13:36 Alexandre Derumier
  2021-02-08 14:10 ` Thomas Lamprecht
  2021-02-08 15:07 ` [pve-devel] applied: " Thomas Lamprecht
  0 siblings, 2 replies; 4+ messages in thread
From: Alexandre Derumier @ 2021-02-07 13:36 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 src/PVE/CGroup.pm | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/src/PVE/CGroup.pm b/src/PVE/CGroup.pm
index 71d0846..cbd77cb 100644
--- a/src/PVE/CGroup.pm
+++ b/src/PVE/CGroup.pm
@@ -365,6 +365,48 @@ sub get_memory_stat {
     return $res;
 }
 
+sub get_pressure_stat {
+    my ($self) = @_;
+
+    my $res = {
+	cpu => {
+	    some => { avg10 => 0, avg60 => 0, avg300 => 0 }
+	},
+	memory => {
+	    some => { avg10 => 0, avg60 => 0, avg300 => 0 },
+	    full => { avg10 => 0, avg60 => 0, avg300 => 0 }
+	},
+	io => {
+	    some => { avg10 => 0, avg60 => 0, avg300 => 0 },
+	    full => { avg10 => 0, 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] 4+ messages in thread

end of thread, other threads:[~2021-02-09 16:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-07 13:36 [pve-devel] [PATCH V2 pve-common] add get_pressure_stat Alexandre Derumier
2021-02-08 14:10 ` Thomas Lamprecht
2021-02-08 15:07 ` [pve-devel] applied: " Thomas Lamprecht
2021-02-09 16:43   ` aderumier

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