You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.4 KiB
45 lines
1.4 KiB
7 months ago
|
"""
|
||
|
Run iostat with a default interval of 1 second.
|
||
|
"""
|
||
|
import time, os, subprocess
|
||
|
from autotest_lib.client.bin import profiler
|
||
|
from autotest_lib.client.common_lib import utils, error
|
||
|
|
||
|
|
||
|
class iostat(profiler.profiler):
|
||
|
version = 2
|
||
|
|
||
|
def initialize(self, interval = 1, options = ''):
|
||
|
# Usage: iostat [ options... ] [ <interval> [ <count> ] ]
|
||
|
# e.g, iostat -tmx 2
|
||
|
self.interval = interval
|
||
|
self.options = options
|
||
|
|
||
|
|
||
|
def start(self, test):
|
||
|
cmd = "/usr/bin/iostat %s %d" % (self.options, self.interval)
|
||
|
filename = "iostat." + time.strftime("%Y-%m-%d-%H-%M-%S")
|
||
|
logfile = open(os.path.join(test.profdir, filename), 'w')
|
||
|
p = subprocess.Popen(cmd, shell=True, stdout=logfile,
|
||
|
stderr=subprocess.STDOUT)
|
||
|
self.pid = p.pid
|
||
|
|
||
|
|
||
|
def stop(self, test):
|
||
|
try:
|
||
|
term_profiler = "kill -15 %d" % self.pid
|
||
|
# send SIGTERM to iostat and give it a 5-sec timeout
|
||
|
utils.system(term_profiler, timeout=5)
|
||
|
except error.CmdError: # probably times out
|
||
|
pass
|
||
|
# do a ps again to see if iostat is still there
|
||
|
ps_cmd = "ps -p %d | grep iostat" % self.pid
|
||
|
out = utils.system_output(ps_cmd, ignore_status=True)
|
||
|
if out != '':
|
||
|
kill_profiler = 'kill -9 %d' % self.pid
|
||
|
utils.system(kill_profiler, ignore_status=True)
|
||
|
|
||
|
|
||
|
def report(self, test):
|
||
|
return None
|