Index: tools/telemetry/telemetry/core/platform/android_platform_backend.py |
diff --git a/tools/telemetry/telemetry/core/platform/android_platform_backend.py b/tools/telemetry/telemetry/core/platform/android_platform_backend.py |
index 2332d015f3b8701913749358eb797da9824c3df3..112115c8774ebf201d088c9ba9b38ebf555eabad 100644 |
--- a/tools/telemetry/telemetry/core/platform/android_platform_backend.py |
+++ b/tools/telemetry/telemetry/core/platform/android_platform_backend.py |
@@ -8,6 +8,7 @@ from telemetry.core import exceptions |
from telemetry.core import platform |
from telemetry.core import util |
from telemetry.core.platform import proc_supporting_platform_backend |
+from telemetry.core.platform.profiler import android_prebuilt_profiler_helper |
# Get build/android scripts into our path. |
util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') |
@@ -102,8 +103,19 @@ class AndroidPlatformBackend( |
return {} |
return super(AndroidPlatformBackend, self).GetCpuTimestamp() |
+ def PurgeUnpinnedMemory(self): |
+ """Purges the unpinned ashmem memory for the whole system. |
+ |
+ This can be used to make memory measurements more stable in particular. |
+ """ |
+ android_prebuilt_profiler_helper.InstallOnDevice(self._adb, 'purge_ashmem') |
+ if self._adb.RunShellCommand( |
+ android_prebuilt_profiler_helper.GetDevicePath('purge_ashmem'), |
+ log_result=True): |
+ return |
+ raise Exception('Error while purging ashmem.') |
+ |
def GetMemoryStats(self, pid): |
- self._adb.PurgeUnpinnedAshmem() |
memory_usage = self._adb.GetMemoryUsageForPid(pid)[0] |
return {'ProportionalSetSize': memory_usage['Pss'] * 1024, |
'SharedDirty': memory_usage['Shared_Dirty'] * 1024, |