在 Android 开发和调试过程中,监控设备的性能数据至关重要。CPU 使用率是一个关键的性能指标,它能够帮助开发者识别应用的性能瓶颈和优化机会。本文将详细介绍如何使用 Android Debug Bridge (ADB) 查看设备的 CPU 使用率,并解释终端上各个参数的含义。
一、查看整体 CPU 使用率
1. 使用 top 命令
要查看设备的整体 CPU 使用率,可以使用 top
命令。该命令将显示当前所有进程的 CPU 使用情况,包括每个进程的 CPU 使用率、内存使用量和运行时间等。
adb shell top
top
命令输出的常见字段及其含义如下:
PID USER PR NI VIRT RES SHR S [%CPU] %MEM TIME+ ARGS
PID
: 进程 IDUSER
: 进程所属用户PR
: 进程优先级NI
: 进程调度优先级(Nice 值)VIRT
: 虚拟内存使用量RES
: 常驻内存使用量(物理内存)SHR
: 共享内存使用量S
: 进程状态(R=运行中,S=睡眠中,D=不可中断的睡眠中,Z=僵尸进程等)%CPU
: CPU 使用率%MEM
: 内存使用率TIME+
: 进程运行总时间ARGS
: 进程的启动命令和参数
2. 使用 dumpsys cpuinfo 命令
dumpsys
是一个强大的工具,可以输出系统服务的详细信息。要查看 CPU 使用情况的话,可以使用以下命令:
adb shell dumpsys cpuinfo
该命令会输出每个进程的 CPU 使用情况汇总信息。输出示例如下:
Load: 1.76 / 1.88 / 1.98
CPU usage from 322041ms to 22000ms ago (2024-06-26 15:08:43.625 to 2024-06-26 15:13:43.666):34% 6348/com.xxx.xxx: 31% user + 3.3% kernel / faults: 4757 minor1.6% 408/irq/76-dwc3: 0% user + 1.6% kernel0.9% 386/media.codec: 0.4% user + 0.4% kernel / faults: 32 minor0.8% 632/com.android.systemui: 0.6% user + 0.1% kernel / faults: 1699 minor 1 major0.7% 179/surfaceflinger: 0.4% user + 0.3% kernel / faults: 488 minor...
- Load: 系统负载
- CPU usage from Xms to Yms ago: 最近一段时间的 CPU 使用情况
- 34% 6348/com.xxx.xxx: 进程 com.xxx.xxx 使用了 34% 的 CPU
- 31% user + 3.3% kernel: 31% 的 CPU 使用在用户空间,3.3% 在内核空间
我们经常看到在运行top
命令的时候,多个进程的CPU使用率累加明显超过100%,如下图所示:
这表示在多核处理器上,第一个进程大约占用了一个核心的 66.6% 的 CPU 时间,第二个进程占用了另一个核心的 44.3% 的 CPU 时间。如果系统是六核处理器,那么这两个进程的总 CPU 使用率可能就会超过100%。
这种情况下,系统会把各个核心上的 CPU 使用率相加以计算出总的 CPU 使用率。因此,总体上看,CPU 使用率超过100%并不奇怪,因为它反映了多核处理器上各个核心同时工作的情况。
二、查看特定应用的 CPU 使用率
有时可能需要查看特定应用的 CPU 使用率。可以结合 findstr
命令来过滤特定的包名或进程 ID。
1. 获取特定应用的进程 ID (PID)
adb shell pidof com.xxx.xxx
将 com.xxx.xxx
替换为你要查看的应用包名。
2. 使用 top 命令并过滤该 PID
adb shell top -n 1 | findstr <PID>
将 <PID>
替换为上一步中获取的进程 ID。
3. 使用 dumpsys cpuinfo 命令并过滤包名
adb shell dumpsys cpuinfo | findstr com.xxx.xxx
将 com.xxx.xxx
替换为你要查看的应用包名。
三、解释常见的 CPU 相关命令参数
1. adb shell top 参数
-n <value>
: 刷新次数。例如:-n 1 表示只刷新一次。-d <value>
: 刷新间隔时间(秒)。例如:-d 2 表示每 2 秒刷新一次。-s <field>
: 按指定字段排序。例如:-s cpu 按 CPU 使用率排序。-m <value>
: 显示前 N 个进程。例如:-m 10 显示前 10 个进程。
2. adb shell dumpsys cpuinfo 参数
dumpsys cpuinfo
通常不需要额外参数,因为它默认输出的是汇总信息。
四、最后
希望这篇文章对你在 Android 开发过程中监控 CPU 使用率有所帮助。