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

Side by Side Diff: build/android/pylib/android_commands.py

Issue 52833002: Purge unpinned ashmem before parsing /proc/$pid/smaps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update documentation Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | build/android/pylib/utils/host_path_finder.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Provides an interface to communicate with the device via the adb command. 5 """Provides an interface to communicate with the device via the adb command.
6 6
7 Assumes adb binary is currently on system path. 7 Assumes adb binary is currently on system path.
8 """ 8 """
9 9
10 import collections 10 import collections
11 import datetime 11 import datetime
12 import logging 12 import logging
13 import os 13 import os
14 import re 14 import re
15 import shlex 15 import shlex
16 import signal 16 import signal
17 import subprocess 17 import subprocess
18 import sys 18 import sys
19 import tempfile 19 import tempfile
20 import time 20 import time
21 21
22 import cmd_helper 22 import cmd_helper
23 import constants 23 import constants
24 import screenshot 24 import screenshot
25
26 from utils import host_path_finder
27
25 try: 28 try:
26 from pylib import pexpect 29 from pylib import pexpect
27 except: 30 except:
28 pexpect = None 31 pexpect = None
29 32
30 sys.path.append(os.path.join( 33 sys.path.append(os.path.join(
31 constants.DIR_SOURCE_ROOT, 'third_party', 'android_testrunner')) 34 constants.DIR_SOURCE_ROOT, 'third_party', 'android_testrunner'))
32 import adb_interface 35 import adb_interface
33 import am_instrument_parser 36 import am_instrument_parser
34 import errors 37 import errors
(...skipping 1376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1411 if stats.device == 'mmcblk0': 1414 if stats.device == 'mmcblk0':
1412 return { 1415 return {
1413 'num_reads': stats.num_reads_issued, 1416 'num_reads': stats.num_reads_issued,
1414 'num_writes': stats.num_writes_completed, 1417 'num_writes': stats.num_writes_completed,
1415 'read_ms': stats.ms_spent_reading, 1418 'read_ms': stats.ms_spent_reading,
1416 'write_ms': stats.ms_spent_writing, 1419 'write_ms': stats.ms_spent_writing,
1417 } 1420 }
1418 logging.warning('Could not find disk IO stats.') 1421 logging.warning('Could not find disk IO stats.')
1419 return None 1422 return None
1420 1423
1424 def PurgeUnpinnedAshmem(self):
1425 """Purges the unpinned ashmem memory for the whole system.
1426
1427 This can be used to make memory measurements more stable in particular.
1428 """
1429 host_path = host_path_finder.GetMostRecentHostPath('purge_ashmem')
1430 if not host_path:
1431 raise Exception('Could not find the purge_ashmem binary.')
1432 device_path = os.path.join(constants.TEST_EXECUTABLE_DIR, 'purge_ashmem')
1433 self.PushIfNeeded(host_path, device_path)
1434 if self.RunShellCommand(device_path, log_result=True):
1435 return
1436 raise Exception('Error while purging ashmem.')
1437
1421 def GetMemoryUsageForPid(self, pid): 1438 def GetMemoryUsageForPid(self, pid):
1422 """Returns the memory usage for given pid. 1439 """Returns the memory usage for given pid.
1423 1440
1424 Args: 1441 Args:
1425 pid: The pid number of the specific process running on device. 1442 pid: The pid number of the specific process running on device.
1426 1443
1427 Returns: 1444 Returns:
1428 A tuple containg: 1445 A tuple containg:
1429 [0]: Dict of {metric:usage_kb}, for the process which has specified pid. 1446 [0]: Dict of {metric:usage_kb}, for the process which has specified pid.
1430 The metric keys which may be included are: Size, Rss, Pss, Shared_Clean, 1447 The metric keys which may be included are: Size, Rss, Pss, Shared_Clean,
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 """ 1689 """
1673 def __init__(self, output): 1690 def __init__(self, output):
1674 self._output = output 1691 self._output = output
1675 1692
1676 def write(self, data): 1693 def write(self, data):
1677 data = data.replace('\r\r\n', '\n') 1694 data = data.replace('\r\r\n', '\n')
1678 self._output.write(data) 1695 self._output.write(data)
1679 1696
1680 def flush(self): 1697 def flush(self):
1681 self._output.flush() 1698 self._output.flush()
OLDNEW
« no previous file with comments | « no previous file | build/android/pylib/utils/host_path_finder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698