普通文本  |  29行  |  747 B

"""
Uses perf_events to count cycles and instructions

Defaults options:
job.profilers.add('cpistat', interval=1)
"""
import time, os, subprocess
from autotest_lib.client.bin import profiler

class cpistat(profiler.profiler):
    version = 1

    def initialize(self, interval = 1):
        self.interval = interval


    def start(self, test):
        cmd = os.path.join(self.bindir, 'site_cpistat')
        if not os.path.exists(cmd):
            cmd = os.path.join(self.bindir, 'cpistat')
        logfile = open(os.path.join(test.profdir, "cpistat"), 'w')
        p = subprocess.Popen(cmd, stdout=logfile,
                             stderr=subprocess.STDOUT)
        self.pid = p.pid


    def stop(self, test):
        os.kill(self.pid, 15)