Commit 0511db57 authored by tmandel@chromium.org's avatar tmandel@chromium.org

[Telemetry] CPU stats are added to results and always reported on CrOS.

BUG=

Review URL: https://codereview.chromium.org/499563004

Cr-Commit-Position: refs/heads/master@{#291458}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291458 0039d316-1c4b-4281-b951-d872f2087c98
parent d5e728a4
...@@ -138,6 +138,24 @@ class PowerMetric(Metric): ...@@ -138,6 +138,24 @@ class PowerMetric(Metric):
results.current_page, 'board_temperature', 'celsius', results.current_page, 'board_temperature', 'celsius',
board_temperature_c, important=False)) board_temperature_c, important=False))
# Add CPU frequency measurements.
frequency_hz = whole_package_utilization.get('frequency_percent')
if frequency_hz is not None:
frequency_sum = 0.0
for freq, percent in frequency_hz.iteritems():
frequency_sum += freq * (percent / 100.0)
results.AddValue(scalar.ScalarValue(
results.current_page, 'cpu_average_frequency_hz', 'Hz',
frequency_sum, important=False))
# Add CPU c-state residency measurements.
cstate_percent = whole_package_utilization.get('cstate_residency_percent')
if cstate_percent is not None:
for state, percent in cstate_percent.iteritems():
results.AddValue(scalar.ScalarValue(
results.current_page, 'cpu_cstate_%s_residency_percent' % state,
'%', percent, important=False))
self._results = None self._results = None
def _SubtractCpuStats(cpu_stats, start_cpu_stats): def _SubtractCpuStats(cpu_stats, start_cpu_stats):
......
...@@ -35,22 +35,25 @@ class CrosPowerMonitor(sysfs_power_monitor.SysfsPowerMonitor): ...@@ -35,22 +35,25 @@ class CrosPowerMonitor(sysfs_power_monitor.SysfsPowerMonitor):
@decorators.Cache @decorators.Cache
def CanMonitorPower(self): def CanMonitorPower(self):
return self._IsOnBatteryPower() return super(CrosPowerMonitor, self).CanMonitorPower()
def StartMonitoringPower(self, browser): def StartMonitoringPower(self, browser):
super(CrosPowerMonitor, self).StartMonitoringPower(browser) super(CrosPowerMonitor, self).StartMonitoringPower(browser)
self._initial_power = self._cri.RunCmdOnDevice(['power_supply_info'])[0] if self._IsOnBatteryPower():
self._start_time = int(self._cri.RunCmdOnDevice(['date', '+%s'])[0]) self._initial_power = self._cri.RunCmdOnDevice(['power_supply_info'])[0]
self._start_time = int(self._cri.RunCmdOnDevice(['date', '+%s'])[0])
def StopMonitoringPower(self): def StopMonitoringPower(self):
cpu_stats = super(CrosPowerMonitor, self).StopMonitoringPower() cpu_stats = super(CrosPowerMonitor, self).StopMonitoringPower()
final_power = self._cri.RunCmdOnDevice(['power_supply_info'])[0] power_stats = {}
self._end_time = int(self._cri.RunCmdOnDevice(['date', '+%s'])[0]) if self._IsOnBatteryPower():
# The length of the test is used to measure energy consumption. final_power = self._cri.RunCmdOnDevice(['power_supply_info'])[0]
length_h = (self._end_time - self._start_time) / 3600.0 self._end_time = int(self._cri.RunCmdOnDevice(['date', '+%s'])[0])
power_stats = CrosPowerMonitor.ParsePower( # The length of the test is used to measure energy consumption.
self._initial_power, final_power, length_h) length_h = (self._end_time - self._start_time) / 3600.0
return super(CrosPowerMonitor, self).CombineResults(cpu_stats, power_stats) power_stats = CrosPowerMonitor.ParsePower(self._initial_power,
final_power, length_h)
return CrosPowerMonitor.CombineResults(cpu_stats, power_stats)
@staticmethod @staticmethod
def IsOnBatteryPower(status, board): def IsOnBatteryPower(status, board):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment