Android N 及之前
adb shell
$ top -h
Usage: top [-m max_procs] [-n iterations] [-d delay] [-s sort_column] [-t] [-h]
-m num Maximum number of processes to display. // 最多显示多少个进程
-n num Updates to show before exiting. // 刷新次数
-d num Seconds to wait between updates. // 刷新间隔时间(默认5秒)
-s col Column to sort by <cpu,vss,rss,thr> // 按哪列排序
-t Show threads instead of processes. // 显示线程信息而不是进程
-h Display this help screen. // 显示帮助文
结果表述如下:
// CPU占用率:User 用户进程;System 系统进程;IOW IO等待时间;IRQ 硬中断时间
User 35%, System 13%, IOW 0%, IRQ 0%
// CPU使用情况:
//User 处于用户态的运行时间,不包含优先值为负进程
//Nice 优先值为负的进程所占用的CPU时间
//Sys 处于核心态的运行时间
//Idle 除IO等待时间以外的其它等待时间
//IOW IO等待时间
//IRQ 硬中断时间
//SIRQ 软中断时间
User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306
// 进程属性:
//PID 进程在系统中的ID
//CPU% 当前瞬时所以使用CPU占用率
//S 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
//#THR 程序当前所用的线程数
//VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
//RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
//PCY Policy 系统对这个进程/线程的调度策略,bg 后台;fg 前台
//UID 运行当前进程的用户id
//
PID CPU% S #THR VSS RSS PCY UID Name
xx xx% x xx xx xx xx xx xx
ps:
内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
参考:https://blog.youkuaiyun.com/hugohong/article/details/24324249
实例
NX608J:/ $ top -m 5 //显示最cpu最高的5个进程
User 0%, System 8%, IOW 0%, IRQ 0%
User 4 + Nice 0 + Sys 39 + Idle 413 + IOW 0 + IRQ 0 + SIRQ 0 = 456
PID USER PR NI CPU% S #THR VSS RSS PCY Name
11389 shell 20 0 7% R 1 9288K 2040K fg top
570 system -2 -8 1% S 13 165428K 24376K fg /system/bin/surfaceflinger
68 root 20 0 0% S 1 0K 0K fg rcuop/6
4176 u0_a12 20 0 0% S 57 1866432K 182304K fg com.android.systemui
710 root 20 0 0% S 1 0K 0K fg kworker/u16:11
130|NX608J:/ $ top -m 5 -t //显示最cpu最高的5个进程及其当前线程
User 1%, System 9%, IOW 0%, IRQ 0%
User 8 + Nice 0 + Sys 77 + Idle 694 + IOW 0 + IRQ 0 + SIRQ 0 = 779
PID TID USER PR NI CPU% S VSS RSS PCY Thread Proc
11405 11405 shell 20 0 8% R 9288K 2832K fg top top
570 570 system -2 -8 0% S 154420K 24496K fg surfaceflinger /system/bin/surfaceflinger
4176 4176 u0_a12 20 0 0% S 1856572K 181540K fg ndroid.systemui com.android.systemui
77 77 root 20 0 0% S 0K 0K fg rcuop/7
570 2124 system 20 0 0% S 154420K 24496K fg Binder:570_5 /system/bin/surfaceflinger
130|NX608J:/ $ top -m 5 -t > /data/topinfo.txt //将cpu信息保存到文件
//需求root 并给topinfo.txt 权限:chmod 777 data/topinfo.txt
adb pull /data/topinfo.txt
Android O 及之后
1|NX611J:/ $ top --help
usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-d SECONDS] [-p PID,] [-u USER,]
Show process activity in real time.
-H Show threads
-k Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID)
-o Show FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE)
-O Add FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default)
-s Sort by field number (1-X, default 9)
-b Batch mode (no tty)
-d Delay SECONDS between each cycle (default 3)
-n Exit after NUMBER iterations
-p Show these PIDs
-u Show these USERs
-q Quiet (no header lines)
Cursor LEFT/RIGHT to change sort, UP/DOWN move list, space to force
update, R to reverse sort, Q to exit.
实例
130|NX611J:/ $ top -H
Tasks: 2285 total, 2 running,2277 sleeping, 0 stopped, 0 zombie //进程数(Tasks)
Mem: 3833208k total, 3301908k used, 531300k free, 9716k buffers //内存使用信息
Swap: 0k total, 0k used, 0k free, 1738436k cached //交换区使用信息
800%cpu 20%user 0%nice 52%sys 726%idle 0%iow 2%irq 0%sirq 0%host //cpu使用信息
PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ THREAD PROCESS
8367 shell 20 0 13M 4.0M 1.5M R 44.0 0.1 0:00.27 top top
808 system -2 -8 72M 25M 17M S 12.0 0.6 27:55.68 surfaceflinger surfaceflinger
2006 u0_a10 20 0 4.3G 176M 85M S 6.0 4.7 20:15.73 ndroid.systemui com.android.systemui
779 system -3 -8 33M 8.0M 4.7M S 4.0 0.2 1:41.94 composer@2.1-se android.hardware.graphics.composer@2.1-service
8243 root 20 0 0 0 0 S 2.0 0.0 0:03.94 kworker/u16:11 [kworker/u16:11]
8174 root 20 0 0 0 0 S 2.0 0.0 0:09.81 kworker/u16:7 [kworker/u16:7]
8167 root RT 0 0 0 0 D 2.0 0.0 0:10.62 mdss_fb0 [mdss_fb0]
8051 root 20 0 0 0 0 S 2.0 0.0 0:23.15 kworker/u16:20 [kworker/u16:20]
1296 system 20 0 4.3G 179M 127M S 2.0 4.7 0:03.32 Binder:1296_13 system_server
779 system -3 -8 33M 8.0M 4.7M S 2.0 0.2 0:37.77 HwBinder:779_2 android.hardware.graphics.composer@2.1-service
RES:表示进程所用物理内存大小(单位:KB)
%MEM:表示内存使用百分比(单位:KB)