Hi Avi,

2008/3/17, Avi Kivity <[EMAIL PROTECTED]>:
> Ryota OZAKI wrote:
>  > Hi all,
>  >
>  > This patch allows a VM to have own directory on debugfs,
>  > that contains statics only for the VM. Each directory
>  > is identified by the pid of the VM (ie qemu).
>  >
>  > I tried this patch under several host kernel versions,
>  > .22, .23, and .24, and confirmed things work out well.
>  >
>
>
> Nice patch; it's certainly useful to improve per-vm trace capabilities.
>
>  It would be nice to keep the summary, since that allows running kvm_stat
>  with no arguments.

My patch keeps the summary. But it actually breaks a kvm_stat's assumption
so kvm_stat doesn't work under kvm with my patch. I wrote a patch to fix this
problem. See the following patch. (i'm not familiar with python, sorry.)


>  On the other hand, the kvmtrace patchset recently posted adds much more
>  detailed data; we should probably concentrate on that as a means of
>  improving performance tracing.

The patchset is useful for me, too. I will concentrate that as well.

Thanks,
ozaki-r

>  --
>  error compiling committee.c: too many arguments to function


Signed-off-by: Ryota Ozaki <[EMAIL PROTECTED]>
--
 kvm_stat |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/kvm_stat b/kvm_stat
index 07773b0..e507e62 100755
--- a/kvm_stat
+++ b/kvm_stat
@@ -4,11 +4,15 @@ import curses
 import sys, os, time, optparse

 class Stats:
-    def __init__(self):
-        self.base = '/sys/kernel/debug/kvm'
+    def __init__(self, pid = None):
+        if pid:
+            self.base = '/sys/kernel/debug/kvm/' + pid
+        else:
+            self.base = '/sys/kernel/debug/kvm'
         self.values = {}
         for key in os.listdir(self.base):
-            self.values[key] = None
+            if not os.path.isdir(self.base + '/' + key):
+                self.values[key] = None
     def get(self):
         for key, oldval in self.values.iteritems():
             newval = int(file(self.base + '/' + key).read())
@@ -26,7 +30,6 @@ if not os.access('/sys/kernel/debug/kvm', os.F_OK):
     print "and ensure the kvm modules are loaded"
     sys.exit(1)

-stats = Stats()

 label_width = 20
 number_width = 10
@@ -73,14 +76,22 @@ def batch(stats):
         values = s[key]
         print '%-22s%10d%10d' % (key, values[0], values[1])

-options = optparse.OptionParser()
-options.add_option('-1', '--once', '--batch',
+usage = "usage: %prog [options] [<pid>]"
+parser = optparse.OptionParser(usage)
+parser.add_option('-1', '--once', '--batch',
                    action = 'store_true',
                    default = False,
                    dest = 'once',
                    help = 'run in batch mode for one second',
                    )
-(options, args) = options.parse_args(sys.argv)
+(options, args) = parser.parse_args(sys.argv)
+
+if len(args) == 1:
+    stats = Stats()
+elif len(args) == 2:
+    stats = Stats(args[1])
+else:
+    parser.error("too many arguments.")

 if not options.once:
     import curses.wrapper
--

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to