In order to get kvm stats during the kvm tests execution, a new profiler was created, kvm_stat. It's a simple profiler that keeps an instance of the kvm_stat program running during the test's execution, writing results on the profiling directory. Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx> --- client/profilers/kvm_stat/kvm_stat.py | 61 +++++++++++++++++++++++++++++++++ 1 files changed, 61 insertions(+), 0 deletions(-) create mode 100644 client/profilers/kvm_stat/__init__.py create mode 100644 client/profilers/kvm_stat/kvm_stat.py diff --git a/client/profilers/kvm_stat/__init__.py b/client/profilers/kvm_stat/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/client/profilers/kvm_stat/kvm_stat.py b/client/profilers/kvm_stat/kvm_stat.py new file mode 100644 index 0000000..b2c0b32 --- /dev/null +++ b/client/profilers/kvm_stat/kvm_stat.py @@ -0,0 +1,61 @@ +""" +kvm_stat prints statistics generated by the kvm module. +It depends on debugfs. If no debugfs is mounted, the profiler +will try to mount it so it's possible to proceed. + +@copyright: Red Hat 2010 +@author: Lucas Meneghel Rodrigues (lmr@xxxxxxxxxx) +""" +import time, os, subprocess, commands +from autotest_lib.client.bin import utils, profiler, os_dep + + +class kvm_stat(profiler.profiler): + """ + kvm_stat based profiler. Consists on executing kvm_stat -l during a given + test execution, redirecting its output to a file on the profile dir. + """ + version = 1 + def initialize(self): + """ + Gets path of kvm_stat and verifies if debugfs needs to be mounted. + """ + self.stat_path = os_dep.command('kvm_stat') + (ret, output) = commands.getstatusoutput("%s --batch" % self.stat_path) + if ret != 0: + if 'debugfs' in output: + utils.system('mount -t debugfs debugfs /sys/kernel/debug') + else: + raise error.AutotestError('kvm_stat failed due to an ' + 'unknown reason: %s' % output) + + + def start(self, test): + """ + Starts kvm_stat subprocess. + + @param test: Autotest test on which this profiler will operate on. + """ + cmd = "%s -l" % self.stat_path + logfile = open(os.path.join(test.profdir, "kvm_stat"), 'w') + p = subprocess.Popen(cmd, shell=True, stdout=logfile, + stderr=subprocess.STDOUT) + self.pid = p.pid + + + def stop(self, test): + """ + Stops profiler execution by sending a SIGTERM to kvm_stat process. + + @param test: Autotest test on which this profiler will operate on. + """ + os.kill(self.pid, 15) + + + def report(self, test): + """ + Report function. Does nothing as there's no postprocesing needed. + + @param test: Autotest test on which this profiler will operate on. + """ + return None -- 1.6.5.2 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html