Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Unified Diff: tools/telemetry/telemetry/core/platform/proc_supporting_platform_backend.py

Issue 239083010: Telemetry: adds CPU frequency stats. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes mac Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/platform/proc_supporting_platform_backend.py
diff --git a/tools/telemetry/telemetry/core/platform/proc_supporting_platform_backend.py b/tools/telemetry/telemetry/core/platform/proc_supporting_platform_backend.py
index 8a7ddd0d81593fd16f8825b97c2a98c684106e4b..1de321941a02e7b1fa33c45668e044e0223df4e9 100644
--- a/tools/telemetry/telemetry/core/platform/proc_supporting_platform_backend.py
+++ b/tools/telemetry/telemetry/core/platform/proc_supporting_platform_backend.py
@@ -2,6 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import collections
+
try:
import resource # pylint: disable=F0401
except ImportError:
@@ -32,6 +34,24 @@ class ProcSupportingPlatformBackend(platform_backend.PlatformBackend):
meminfo = self._GetProcFileDict(meminfo_contents)
return self._ConvertKbToByte(meminfo['MemTotal'])
+ def GetGlobalCpuStats(self):
+ num_cpus = int(self._GetFileContents(
+ '/sys/devices/system/cpu/kernel_max'))
+ # Maps {frequency_in_hz: time_in_state}
+ # See https://www.kernel.org/doc/Documentation/cpu-freq/cpufreq-stats.txt
+ cpu_frequencies = collections.defaultdict(int)
+ for cpu in range(num_cpus):
+ try:
+ stats = self._GetFileContents(
+ '/sys/devices/system/cpu/cpu%d/cpufreq/stats/time_in_state' %
+ cpu)
+ for e in stats.splitlines():
+ k, v = e.split()
+ cpu_frequencies[int(k) * 1000] += int(v)
+ except IOError:
+ continue
+ return {'GlobalCpuFrequencyStats': cpu_frequencies}
+
def GetCpuStats(self, pid):
stats = self._GetProcFileForPid(pid, 'stat')
if not stats:

Powered by Google App Engine
This is Rietveld 408576698