| Index: tools/telemetry/telemetry/core/chrome/mac_platform_backend.py
|
| diff --git a/tools/telemetry/telemetry/core/chrome/mac_platform_backend.py b/tools/telemetry/telemetry/core/chrome/mac_platform_backend.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..da0dbb6c8bca918a54d560cf7aef93044ce73b1d
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/core/chrome/mac_platform_backend.py
|
| @@ -0,0 +1,57 @@
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +try:
|
| + import resource # pylint: disable=F0401
|
| +except ImportError:
|
| + resource = None # Not available on all platforms
|
| +import subprocess
|
| +
|
| +from telemetry.core.chrome import platform_backend
|
| +
|
| +
|
| +class MacPlatformBackend(platform_backend.PlatformBackend):
|
| + # pylint: disable=W0613
|
| + def StartRawDisplayFrameRateMeasurement(self, trace_tag):
|
| + raise NotImplementedError()
|
| +
|
| + def StopRawDisplayFrameRateMeasurement(self):
|
| + raise NotImplementedError()
|
| +
|
| + def IsThermallyThrottled(self):
|
| + raise NotImplementedError()
|
| +
|
| + def HasBeenThermallyThrottled(self):
|
| + raise NotImplementedError()
|
| +
|
| + def GetSystemCommitCharge(self):
|
| + vm_stat = subprocess.Popen(['vm_stat'],
|
| + stdout=subprocess.PIPE).communicate()[0]
|
| + for stat in vm_stat.splitlines():
|
| + key_value = stat.split(':')
|
| + if key_value[0] == 'Pages active':
|
| + pages_active = int(key_value[1].strip()[:-1]) # Strip trailing '.'
|
| + return pages_active * resource.getpagesize() / 1024
|
| + return 0
|
| +
|
| + def GetMemoryStats(self, pid):
|
| + pid_rss_vsz_list = subprocess.Popen(['ps', '-e', '-o', 'pid=,rss=,vsz='],
|
| + stdout=subprocess.PIPE).communicate()[0]
|
| + for pid_rss_vsz in pid_rss_vsz_list.splitlines():
|
| + pid_rss_vsz = pid_rss_vsz.split()
|
| + if int(pid_rss_vsz[0]) == pid:
|
| + return {'VM': int(pid_rss_vsz[2].strip()),
|
| + 'WorkingSetSize': int(pid_rss_vsz[1].strip())}
|
| + return {}
|
| +
|
| + def GetChildPids(self, pid):
|
| + """Retunds a list of child pids of |pid|."""
|
| + child_pids = []
|
| + pid_ppid_list = subprocess.Popen(['ps', '-e', '-o', 'pid=', '-o', 'ppid='],
|
| + stdout=subprocess.PIPE).communicate()[0]
|
| + for pid_ppid in pid_ppid_list.splitlines():
|
| + pid_ppid = pid_ppid.split()
|
| + if int(pid_ppid[1].strip()) == pid:
|
| + child_pids.append(int(pid_ppid[0].strip()))
|
| + return child_pids
|
|
|