summaryrefslogtreecommitdiffstats
path: root/tools/kvm/kvm_stat
diff options
context:
space:
mode:
authorStefan Raspl <raspl@linux.vnet.ibm.com>2017-06-07 21:08:41 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2017-06-08 18:24:48 +0200
commit6667ae8f395099257afca0963838d2dc50a18da7 (patch)
treeb33895955d096cbd3000b6a0731ebc4e9a8cb762 /tools/kvm/kvm_stat
parent64eefad2cdbf2d7c76e24d0b67e19efdbe1c97a9 (diff)
downloadlinux-6667ae8f395099257afca0963838d2dc50a18da7.tar.bz2
tools/kvm_stat: add new interactive command 'o'
Add new interactive command 'o' to toggle sorting by 'CurAvg/s' (default) and 'Total' columns. Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'tools/kvm/kvm_stat')
-rwxr-xr-xtools/kvm/kvm_stat/kvm_stat17
-rw-r--r--tools/kvm/kvm_stat/kvm_stat.txt2
2 files changed, 18 insertions, 1 deletions
diff --git a/tools/kvm/kvm_stat/kvm_stat b/tools/kvm/kvm_stat/kvm_stat
index 1276b88937c0..cf7aa28ddf0c 100755
--- a/tools/kvm/kvm_stat/kvm_stat
+++ b/tools/kvm/kvm_stat/kvm_stat
@@ -848,6 +848,7 @@ DELAY_DEFAULT = 3.0
MAX_GUEST_NAME_LEN = 48
MAX_REGEX_LEN = 44
DEFAULT_REGEX = r'^[^\(]*$'
+SORT_DEFAULT = 0
class Tui(object):
@@ -857,6 +858,7 @@ class Tui(object):
self.screen = None
self._delay_initial = 0.25
self._delay_regular = DELAY_DEFAULT
+ self._sorting = SORT_DEFAULT
def __enter__(self):
"""Initialises curses for later use. Based on curses.wrapper
@@ -994,14 +996,23 @@ class Tui(object):
self.screen.clrtobot()
stats = self.stats.get()
- def sortkey(x):
+ def sortCurAvg(x):
+ # sort by current events if available
if stats[x][1]:
return (-stats[x][1], -stats[x][0])
else:
return (0, -stats[x][0])
+
+ def sortTotal(x):
+ # sort by totals
+ return (0, -stats[x][0])
total = 0.
for val in stats.values():
total += val[0]
+ if self._sorting == SORT_DEFAULT:
+ sortkey = sortCurAvg
+ else:
+ sortkey = sortTotal
for key in sorted(stats.keys(), key=sortkey):
if row >= self.screen.getmaxyx()[0]:
@@ -1025,6 +1036,7 @@ class Tui(object):
' f filter by regular expression',
' g filter by guest name',
' h display interactive commands reference',
+ ' o toggle sorting order (Total vs CurAvg/s)',
' p filter by PID',
' q quit',
' r reset stats',
@@ -1215,6 +1227,8 @@ class Tui(object):
sleeptime = self._delay_initial
if char == 'h':
self.show_help_interactive()
+ if char == 'o':
+ self._sorting = not self._sorting
if char == 'p':
curses.curs_set(1)
self.show_vm_selection_by_pid()
@@ -1302,6 +1316,7 @@ Interactive Commands:
f filter by regular expression
g filter by guest name
h display interactive commands reference
+ o toggle sorting order (Total vs CurAvg/s)
p filter by PID
q quit
r reset stats
diff --git a/tools/kvm/kvm_stat/kvm_stat.txt b/tools/kvm/kvm_stat/kvm_stat.txt
index cc019b09e0f5..e24ac464d341 100644
--- a/tools/kvm/kvm_stat/kvm_stat.txt
+++ b/tools/kvm/kvm_stat/kvm_stat.txt
@@ -37,6 +37,8 @@ INTERACTIVE COMMANDS
*h*:: display interactive commands reference
+*o*:: toggle sorting order (Total vs CurAvg/s)
+
*p*:: filter by PID
*q*:: quit