my $last_proc_vmid_stat;
-my $parse_cpuacct_stat = sub {
- my ($vmid, $unprivileged) = @_;
-
- my $raw = read_cgroup_value('cpuacct', $vmid, $unprivileged, 'cpuacct.stat', 1);
-
- my $stat = {};
-
- if ($raw =~ m/^user (\d+)\nsystem (\d+)\n/) {
-
- $stat->{utime} = $1;
- $stat->{stime} = $2;
-
- }
-
- return $stat;
-};
-
our $vmstatus_return_properties = {
vmid => get_standard_option('pve-vmid'),
status => {
my $cgroups = PVE::LXC::CGroup->new($vmid);
- if (-d '/sys/fs/cgroup/memory') {
- my $memory_stat = read_cgroup_list('memory', $vmid, $unpriv, 'memory.stat');
- my $mem_usage_in_bytes = read_cgroup_value('memory', $vmid, $unpriv, 'memory.usage_in_bytes');
-
- $d->{mem} = $mem_usage_in_bytes - $memory_stat->{total_cache};
- $d->{swap} = read_cgroup_value('memory', $vmid, $unpriv, 'memory.memsw.usage_in_bytes') - $mem_usage_in_bytes;
+ if (defined(my $mem = $cgroups->get_memory_stat())) {
+ $d->{mem} = $mem->{mem};
+ $d->{swap} = $mem->{swap};
} else {
$d->{mem} = 0;
$d->{swap} = 0;
return $list;
}
-sub read_cgroup_list($$$$) {
- my ($group, $vmid, $unprivileged, $name) = @_;
-
- my $content = read_cgroup_value($group, $vmid, $unprivileged, $name, 1);
-
- return { split(/\s+/, $content) };
-}
-
-sub read_cgroup_value($$$$$) {
- my ($group, $vmid, $unprivileged, $name, $full) = @_;
-
- my $nsdir = $unprivileged ? '' : 'ns/';
- my $path = "/sys/fs/cgroup/$group/lxc/$vmid/${nsdir}$name";
-
- return PVE::Tools::file_get_contents($path) if $full;
-
- return PVE::Tools::file_read_firstline($path);
-}
-
-sub write_cgroup_value {
- my ($group, $vmid, $name, $value) = @_;
-
- my $path = "/sys/fs/cgroup/$group/lxc/$vmid/$name";
- PVE::ProcFSTools::write_proc_entry($path, $value) if -e $path;
-
-}
-
sub find_lxc_console_pids {
my $res = {};