summaryrefslogtreecommitdiff
path: root/procrank
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2013-06-21 17:02:05 -0700
committerColin Cross <ccross@android.com>2013-06-22 13:10:58 -0700
commit8a807c3192fac171190c462010789399f67b3de8 (patch)
tree43ad4e3ac967d45cf5e5ed7379b98e067e727a4e /procrank
parentf1b1ad241f6371c4254e17e2fe962023a630b55d (diff)
downloadextras-8a807c3192fac171190c462010789399f67b3de8.tar.gz
procrank: add support for only showing cached, noncached, or KSM pages
Add the -c, -C, and -k arguments to only show pages that are cached (backed by storage), non-cached (backed by ram or swap), or have been collapsed by KSM respectively. Change-Id: I707570ad406106b0aca230d18f9945901d193aca
Diffstat (limited to 'procrank')
-rw-r--r--procrank/procrank.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/procrank/procrank.c b/procrank/procrank.c
index cc06bcc1..213dacbd 100644
--- a/procrank/procrank.c
+++ b/procrank/procrank.c
@@ -128,6 +128,8 @@ int main(int argc, char *argv[]) {
char cmdline[256]; // this must be within the range of int
int error;
bool has_swap = false;
+ uint64_t required_flags = 0;
+ uint64_t flags_mask = 0;
#define WS_OFF 0
#define WS_ONLY 1
@@ -148,6 +150,9 @@ int main(int argc, char *argv[]) {
if (!strcmp(argv[arg], "-p")) { compfn = &sort_by_pss; continue; }
if (!strcmp(argv[arg], "-u")) { compfn = &sort_by_uss; continue; }
if (!strcmp(argv[arg], "-s")) { compfn = &sort_by_swap; continue; }
+ if (!strcmp(argv[arg], "-c")) { required_flags = 0; flags_mask = PM_PAGE_SWAPBACKED; continue; }
+ if (!strcmp(argv[arg], "-C")) { required_flags = flags_mask = PM_PAGE_SWAPBACKED; continue; }
+ if (!strcmp(argv[arg], "-k")) { required_flags = flags_mask = PM_PAGE_KSM; continue; }
if (!strcmp(argv[arg], "-w")) { ws = WS_ONLY; continue; }
if (!strcmp(argv[arg], "-W")) { ws = WS_RESET; continue; }
if (!strcmp(argv[arg], "-R")) { order *= -1; continue; }
@@ -192,7 +197,8 @@ int main(int argc, char *argv[]) {
switch (ws) {
case WS_OFF:
- error = pm_process_usage(proc, &procs[i]->usage);
+ error = pm_process_usage_flags(proc, &procs[i]->usage, flags_mask,
+ required_flags);
break;
case WS_ONLY:
error = pm_process_workingset(proc, &procs[i]->usage, 0);
@@ -336,6 +342,9 @@ static void usage(char *myname) {
" -s Sort by swap.\n"
" (Default sort order is PSS.)\n"
" -R Reverse sort order (default is descending).\n"
+ " -c Only show cached (storage backed) pages\n"
+ " -C Only show non-cached (ram/swap backed) pages\n"
+ " -k Only show pages collapsed by KSM\n"
" -w Display statistics for working set only.\n"
" -W Reset working set of all processes.\n"
" -h Display this help screen.\n",