Index: tools/telemetry/telemetry/core/platform/proc_util.py |
diff --git a/tools/telemetry/telemetry/core/platform/proc_util.py b/tools/telemetry/telemetry/core/platform/proc_util.py |
index 656eb846996b227b9d864798f4793191f2134b15..1449f6aaf2eee97530f3cdde3352e1617c8badb7 100644 |
--- a/tools/telemetry/telemetry/core/platform/proc_util.py |
+++ b/tools/telemetry/telemetry/core/platform/proc_util.py |
@@ -22,6 +22,18 @@ def _GetProcFileDict(contents): |
return retval |
+def _GetProcJiffies(timer_list): |
+ """Parse '/proc/timer_list' output and returns the first jiffies attribute. |
+ |
+ Multi-CPU machines will have multiple 'jiffies:' lines, all of which will be |
+ essentially the same. Return the first one.""" |
+ for line in timer_list.splitlines(): |
+ if line.startswith('jiffies:'): |
+ _, value = line.split(':') |
+ return value |
+ raise Exception('Unable to find jiffies from /proc/timer_list') |
+ |
+ |
def GetSystemCommitCharge(meminfo_contents): |
meminfo = _GetProcFileDict(meminfo_contents) |
return (_ConvertKbToByte(meminfo['MemTotal']) |
@@ -30,6 +42,25 @@ def GetSystemCommitCharge(meminfo_contents): |
- _ConvertKbToByte(meminfo['Cached'])) |
+def GetCpuStats(stats, add_children=False): |
+ utime = float(stats[13]) |
+ stime = float(stats[14]) |
+ cutime = float(stats[15]) |
+ cstime = float(stats[16]) |
+ |
+ cpu_process_jiffies = utime + stime |
+ if add_children: |
+ cpu_process_jiffies += cutime + cstime |
+ |
+ return {'CpuProcessTime': cpu_process_jiffies} |
+ |
+ |
+def GetTimestampJiffies(timer_list): |
+ """Return timestamp of system in jiffies.""" |
+ total_jiffies = float(_GetProcJiffies(timer_list)) |
+ return {'TotalTime': total_jiffies} |
+ |
+ |
def GetMemoryStats(status_contents, stats): |
status = _GetProcFileDict(status_contents) |
if not status or not stats or 'Z' in status['State']: |