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.
61 lines
1.9 KiB
61 lines
1.9 KiB
# Lint as: python2, python3
|
|
"""
|
|
Lockstat is the basic tool used to control the kernel's Lockmeter
|
|
functionality: e.g., turning the kernel's data gathering on or off, and
|
|
retrieving that data from the kernel so that Lockstat can massage it and
|
|
produce printed reports. See http://oss.sgi.com/projects/lockmeter for
|
|
details.
|
|
|
|
NOTE: if you get compile errors from config.h, referring you to a FAQ,
|
|
you might need to do 'cat < /dev/null > /usr/include/linux/config.h'.
|
|
But read the FAQ first.
|
|
"""
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
from autotest_lib.client.bin import utils, profiler
|
|
|
|
class lockmeter(profiler.profiler):
|
|
version = 1
|
|
|
|
# ftp://oss.sgi.com/projects/lockmeter/download/lockstat-1.4.11.tar.gz
|
|
# patched with lockstat.diff
|
|
# ftp://oss.sgi.com/projects/lockmeter/download/v2.6/patch.2.6.14-lockmeter-1.gz
|
|
# is the kernel patch
|
|
|
|
def setup(self, tarball = 'lockstat-1.4.11.tar.bz2'):
|
|
self.tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
|
|
utils.extract_tarball_to_dir(self.tarball, self.srcdir)
|
|
os.chdir(self.srcdir)
|
|
|
|
utils.make()
|
|
self.cmd = self.srcdir + '/lockstat'
|
|
|
|
|
|
def initialize(self):
|
|
self.job.require_gcc()
|
|
|
|
if not os.path.exists('/proc/lockmeter'):
|
|
msg = ('Lockmeter is not compiled into your kernel'
|
|
'Please fix and try again')
|
|
print(msg)
|
|
raise AssertionError(msg)
|
|
|
|
|
|
def start(self, test):
|
|
utils.system(self.cmd + ' off')
|
|
utils.system(self.cmd + ' reset')
|
|
utils.system(self.cmd + ' on')
|
|
|
|
|
|
def stop(self, test):
|
|
utils.system(self.cmd + ' off')
|
|
|
|
|
|
def report(self, test):
|
|
args = ' -m ' + utils.get_systemmap()
|
|
self.output = self.profdir + '/results/lockstat'
|
|
utils.system(self.cmd + args + ' print > ' + self.output)
|