adb shell top 使用

Posted Golover

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了adb shell top 使用相关的知识,希望对你有一定的参考价值。


adb shell top
top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序.
1)top 用法
>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.  显示帮助文档

2)adb shell top
> adb shell top

User 13%, System 5%, IOW 0%, IRQ 0%
User 85 + Nice 0 + Sys 37 + Idle 509 + IOW 0 + IRQ 0 + SIRQ 0 = 631

  PID PR CPU% S  #THR     VSS     RSS PCY UID      Name
 0  13% S    56 423416K  88160K  fg u0_a92   com.tmall.wireless
 1   2% R     1   1232K    536K     root     top
 0   1% S    46 341712K  40872K  fg u0_a90   com.wandoujia.phoenix2.usbproxy
 1   1% S    31 319976K  33284K  fg u0_a74   com.android.Chinpower
 0   1% S    32  67320K  20552K  fg system   /system/bin/surfaceflinger
 0   1% S   112 445876K  80304K  fg system   system_server
    ...
 0   0% S     1      0K      0K     root     watchdog/0
 1   0% S     1      0K      0K     root     khelper
 1   0% S     1      0K      0K     root     suspend_sys_syn
 1   0% S     1      0K      0K     root     suspend

第一组数据的含义:

User  处于用户态的运行时间,不包含优先值为负进程
Nice  优先值为负的进程所占用的CPU时间
Sys   处于核心态的运行时间
Idle  除IO等待时间以外的其它等待时间
IOW   IO等待时间
IRQ   硬中断时间
SIRQ  软中断时间

第二组数据的含义:

PID   进程id
PR    优先级
CPU%  当前瞬时CPU占用率
S     进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程
#THR  程序当前所用的线程数
VSS   Virtual Set Size  虚拟耗用内存(包含共享库占用的内存)
RSS   Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY   调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
UID   进程所有者的用户id
Name  进程的名称

具体信息可以查看源代码中: xx\\system\\core\\toolbox\\top.c

>adb shell top  | findstr tmall > d:\\cpu.txt   
打印 top命令,并查找 包含 tmall的命令行,输出至 d:\\cpu.txt

result:

22137  1   0% S    10 304728K  28900K  bg u0_a92   com.tmall.wireless:push

22205  0   0% S    15 322944K  38236K  bg u0_a92   com.tmall.wireless

22205  1  27% R    34 345304K  49396K  fg u0_a92   com.tmall.wireless

在 ubuntu 系统输入top -h,可以看到 top 的使用方法。
omj@pc-ubuntu:~$top -h
procps-ng version 3.3.9
Usage:
top -hv | -bcHioss -d secs -n max -u|U user -p pid(s) -o field -w [cols]
 
这里我们主要是谈 top 指令在 android 系统下的使用,所以首先要用 usb 线连接PC和设备,然后进入android设备的 shell,查看 top 指令的相关用法。
 
查看android设备是否被PC机识别:
omj@pc-ubuntu:~$adb devices
List of devices attached
d111a8ac device
 
进入android设备的shell:
omj@pc-ubuntu:~$adb shell
root@msm8610:/ #
查看 top 指令的帮助菜单:
root@msm8610:/ #top -h
 
从帮助菜单可以看出,PC级别的系统的 top 指令和 android 设备的 top 指令的使用方法还是有点区别的。

top指令查看进程资源:
root@msm8610:/ #top
每隔 3s 更新一次显示:
root@msm8610:/ #top -d 3
按cpu大小列出5个进程列表:
root@msm8610:/ #top -m 5
根据进程的名字使用 grep 指令过滤输出 "com.hcb.parking" 进程的信息(图中实际上是每隔 1s 输出一次信息):
root@msm8610:/ #top -d 1 | grep "com.hcb.parking"
查看"com.hcb.parking" 应用(或者说"com.hcb.parking" 进程)中所有线程的CPU等信息:
root@msm8610:/ #top -d 1 -t | grep "com.hcb.parking"
 
每间隔 3s 将 "com.hcb.parking" 进程的CPU 信息保存到文件:
root@msm8610:/ #top -d 3 | grep "com.hcb.parking" > /data/topinfo.txt &

从android设备中将上一步保存的 topinfo.txt 日志信息复制出来(该命令是在退出adb shell 之后执行的):
omj@pc-ubuntu:~/work$ adb pull /data/topinfo.txt .

原文:https://www.cnblogs.com/111testing/p/8911993.html

以上是关于adb shell top 使用的主要内容,如果未能解决你的问题,请参考以下文章

adb shell top 使用

Android 进阶——性能优化之借助adb shell ps /top 指令详细分析进程

Android 进阶——性能优化之借助adb shell ps /top 指令详细分析进程

Android 进阶——性能优化之借助adb shell ps /top 指令详细分析进程

adb与adb shell命令使用

手机无法进入adb shell