1*9c5db199SXin Li""" 2*9c5db199SXin Liturbostat prints out CPU stats 3*9c5db199SXin Li""" 4*9c5db199SXin Li 5*9c5db199SXin Liimport os, subprocess, signal 6*9c5db199SXin Liimport logging 7*9c5db199SXin Lifrom autotest_lib.client.bin import profiler, os_dep 8*9c5db199SXin Li 9*9c5db199SXin Li 10*9c5db199SXin Liclass turbostat(profiler.profiler): 11*9c5db199SXin Li """ 12*9c5db199SXin Li turbostat reports processor topology, frequency, idle power-state 13*9c5db199SXin Li statistics, etc. 14*9c5db199SXin Li """ 15*9c5db199SXin Li version = 1 16*9c5db199SXin Li 17*9c5db199SXin Li def initialize(self): 18*9c5db199SXin Li self.bin = os_dep.command('turbostat') 19*9c5db199SXin Li 20*9c5db199SXin Li def start(self, test): 21*9c5db199SXin Li self._output = open(os.path.join(test.profdir, "turbostat"), "wt") 22*9c5db199SXin Li 23*9c5db199SXin Li cmd = [self.bin] 24*9c5db199SXin Li logging.debug("Starting turbostat: %s", cmd) 25*9c5db199SXin Li 26*9c5db199SXin Li # Log the start time so a complete datetime can be computed later 27*9c5db199SXin Li subprocess.call(['date', '-Iseconds'], stdout=self._output) 28*9c5db199SXin Li 29*9c5db199SXin Li self._process = subprocess.Popen( 30*9c5db199SXin Li cmd, 31*9c5db199SXin Li stdout=self._output, 32*9c5db199SXin Li stderr=subprocess.STDOUT, 33*9c5db199SXin Li close_fds=True) 34*9c5db199SXin Li 35*9c5db199SXin Li def stop(self, test): 36*9c5db199SXin Li logging.debug("Stopping turbostat") 37*9c5db199SXin Li 38*9c5db199SXin Li os.kill(self._process.pid, signal.SIGTERM) 39*9c5db199SXin Li 40*9c5db199SXin Li self._process.wait() 41*9c5db199SXin Li 42*9c5db199SXin Li logging.debug("Stopped turbostat") 43*9c5db199SXin Li 44*9c5db199SXin Li self._output.close() 45*9c5db199SXin Li 46*9c5db199SXin Li def report(self, test): 47*9c5db199SXin Li pass 48