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.
-s col Column to sort by (cpu,vss,rss,thr).
-t Show threads instead of processes.
-h Display this help screen.
-m: 显示的最多进程数,做优化时一般只关心CPU占用率最高的几个进程,那么只需要top -m 3或top -m 5就好了,以免top命令的输出太多
-n:显示n次top的结果后命令就会退出
-d:更新的时间间隔,默认是每隔3s更新下状态,top -d 0时会持续地输出,不过很占CPU。
-s:选择根据某项(cpu,vss,rss,thr)来排序
-t: 显示线程而非进程
-h:显示帮助信息
优化中需要了解各个CPU利用率,以评估程序的多线程并行性。但Android系统的top缺少了统计各个CPU利用率的功能,我还在寻找是否有其他的方法
PID PR CPU% S #THR VSS RSS PCY UID Name
1314 0 0% R 1 1000K 392K fg root top68 0 0% D 1 0K 0K fg root COMIP Battery s
399 0 0% S 8 9696K 860K fg root /system/bin/rild
PID: 进程在系统中的ID
CPU% - 当前瞬时所以使用CPU占用率
#THR - 程序当前所用的线程数
UID - 运行当前进程的用户id
Name - 程序名称org.xmpp.app
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
- User 35%, System 13%, IOW 0%, IRQ 0% // CPU占用率
- User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306 // CPU使用情况
- PID CPU% S #THR VSS RSS PCY UID Name // 进程属性
- xx xx% x xx xx xx xx xx xx
- CPU占用率:
- User 用户进程
- System 系统进程
- IOW IO等待时间
- IRQ 硬中断时间
- CPU使用情况(指一个最小时间片内所占时间,单位jiffies。或者指所占进程数):
- User 处于用户态的运行时间,不包含优先值为负进程
- Nice 优先值为负的进程所占用的CPU时间
- Sys 处于核心态的运行时间
- Idle 除IO等待时间以外的其它等待时间
- IOW IO等待时间
- IRQ 硬中断时间
- SIRQ 软中断时间
- 进程属性:
- PID 进程在系统中的ID
- CPU% 当前瞬时所以使用CPU占用率
- S 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
- #THR 程序当前所用的线程数
- VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
- RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
- PCY OOXX,不知道什么东东
- UID 运行当前进程的用户id
- Name 程序名称android.process.media
- // ps:内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
- // PSS Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
- // USS Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)