xref: /aosp_15_r20/external/autotest/client/profilers/vmstat/vmstat.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li"""
2*9c5db199SXin LiRuns vmstat X where X is the interval in seconds
3*9c5db199SXin Li
4*9c5db199SXin LiDefaults options:
5*9c5db199SXin Lijob.profilers.add('vmstat', interval=1)
6*9c5db199SXin Li"""
7*9c5db199SXin Liimport time, os, subprocess
8*9c5db199SXin Lifrom autotest_lib.client.bin import profiler
9*9c5db199SXin Li
10*9c5db199SXin Li
11*9c5db199SXin Liclass vmstat(profiler.profiler):
12*9c5db199SXin Li    version = 1
13*9c5db199SXin Li
14*9c5db199SXin Li    def initialize(self, interval = 1):
15*9c5db199SXin Li        self.interval = interval
16*9c5db199SXin Li
17*9c5db199SXin Li
18*9c5db199SXin Li    def start(self, test):
19*9c5db199SXin Li        cmd = "/usr/bin/vmstat %d" % self.interval
20*9c5db199SXin Li        logfile = open(os.path.join(test.profdir, "vmstat"), 'w')
21*9c5db199SXin Li        p = subprocess.Popen(cmd, shell=True, stdout=logfile, \
22*9c5db199SXin Li                                        stderr=subprocess.STDOUT)
23*9c5db199SXin Li        self.pid = p.pid
24*9c5db199SXin Li
25*9c5db199SXin Li
26*9c5db199SXin Li    def stop(self, test):
27*9c5db199SXin Li        os.kill(self.pid, 15)
28*9c5db199SXin Li
29*9c5db199SXin Li
30*9c5db199SXin Li    def report(self, test):
31*9c5db199SXin Li        return None
32