Hi,
here a little contribution, disk io statistics in vm list display patch.
you need kernel > 2.6.20
/usr/share/perl5/PVE/Qemu.pm
here a little contribution, disk io statistics in vm list display patch.
you need kernel > 2.6.20
/usr/share/perl5/PVE/Qemu.pm
Code:
--- /usr/share/perl5/PVE/Qemu.pm 2011-05-31 15:49:53.000000000 +0200
+++ Qemu.pm 2011-06-08 04:02:17.000000000 +0200
@@ -63,6 +63,18 @@
}
next if !$statstr;
+
+ my $iostat = {};
+
+ if (my $fh = IO::File->new ("/proc/$pid/io", "r")) {
+ while (defined (my $line = <$fh>)) {
+ if ($line =~ m/^\s*(.*):\s*(\d+)/) {
+ $iostat->{$1} = $2;
+ }
+ }
+ close($fh);
+ }
+
my ($utime, $stime, $vsize, $rss, $starttime);
if ($statstr =~ m/^$pid \(.*\) \S (-?\d+) -?\d+ -?\d+ -?\d+ -?\d+ \d+ \d+ \d+ \d+ \d+ (\d+) (\d+) (-?\d+) (-?\d+) -?\d+ -?\d+ -?\d+ 0 (\d+) (\d+) (-?\d+) \d+ \d+ \d+ \d+ \d+ \d+ \d+ \d+ \d+ \d+ \d+ \d+ \d+ -?\d+ -?\d+ \d+ \d+ \d+/) {
($utime, $stime, $vsize, $rss, $starttime) = ($2, $3, $7, $8 * 4096, $6);
@@ -80,6 +92,8 @@
$d->{mem} = int (($rss/$vsize)*$d->{maxmem});
}
+
+
my $old = $last_proc_pid_stat->{$pid};
if (!$old) {
$last_proc_pid_stat->{$pid} = {
@@ -87,26 +101,41 @@
used => $used,
pctcpu => 0,
relcpu => 0,
+ ioread => 0,
+ iowrite => 0,
+ read_bytes => 0,
+ write_bytes => 0,
};
next;
}
my $dtime = ($ctime - $old->{time}) * $cpucount * $clock_ticks;
+
if ($dtime > 1000) {
my $dutime = $used - $old->{used};
$d->{pctcpu} = int((($dutime)*100)/$dtime);
$d->{relcpu} = int (($d->{pctcpu} * $cpucount) / $vcpus);
+ $d->{ioread} = int(($iostat->{read_bytes} - $old->{read_bytes})/($ctime - $old->{time})/1024);
+ $d->{iowrite} = int(($iostat->{write_bytes} - $old->{write_bytes})/($ctime - $old->{time})/1024);
+
$last_proc_pid_stat->{$pid} = {
time => $ctime,
used => $used,
pctcpu => $d->{pctcpu},
relcpu => $d->{relcpu},
+ ioread => $d->{ioread},
+ iowrite => $d->{iowrite},
+ read_bytes => $iostat->{read_bytes},
+ write_bytes => $iostat->{write_bytes},
};
} else {
$d->{pctcpu} = $old->{pctcpu};
$d->{relcpu} = $old->{relcpu};
+ $d->{ioread} = $old->{ioread};
+ $d->{iowrite} = $old->{iowrite};
+
}
}
Code:
--- /usr/share/perl5/PVE/HTMLUtils.pm 2011-05-09 12:16:00.000000000 +0200
+++ HTMLUtils.pm 2011-06-04 09:03:05.000000000 +0200
@@ -364,6 +364,8 @@
'1', '235px', __('Name'),
'1', '50px', __('Uptime'),
'1', '100px', __('Disk'),
+ '1', '100px', __('Read KB/s'),
+ '1', '100px', __('Write KB/s'),
'1', '100px', __('Memory'),
'1', '100px', __('CPU'),
);
@@ -441,12 +443,12 @@
$cpubar = '';
}
$table->add_row ('', $menu, $veid, $d->{status}, $d->{name},
- uptime_to_str ($d->{uptime}), $diskbar, $membar, $cpubar);
+ uptime_to_str ($d->{uptime}), $diskbar, $d->{ioread},$d->{iowrite},$membar, $cpubar);
} elsif ($d->{status} eq 'create') {
$table->set_row_link ("/logs/index.htm?cid=$cid&veid=$veid");
- $table->add_row ('', '', $veid, $d->{status}, '', '', '', '', '');
+ $table->add_row ('', '', $veid, $d->{status}, '', '', '', '','','', '');
} else {
- $table->add_row ('', '', $veid, $d->{status}, '', '', '', '', '');
+ $table->add_row ('', '', $veid, $d->{status}, '', '', '', '','','', '');
}
}