要查看设备的整体 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
: 进程的启动命令和参数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 minor
1.6% 408/irq/76-dwc3: 0% user + 1.6% kernel
0.9% 386/media.codec: 0.4% user + 0.4% kernel / faults: 32 minor
0.8% 632/com.android.systemui: 0.6% user + 0.1% kernel / faults: 1699 minor 1 major
0.7% 179/surfaceflinger: 0.4% user + 0.3% kernel / faults: 488 minor
...
我们经常看到在运行top
命令的时候,多个进程的CPU使用率累加明显超过100%,如下图所示:
这种情况下,系统会把各个核心上的 CPU 使用率相加以计算出总的 CPU 使用率。因此,总体上看,CPU 使用率超过100%并不奇怪,因为它反映了多核处理器上各个核心同时工作的情况。
有时可能需要查看特定应用的 CPU 使用率。可以结合 findstr
命令来过滤特定的包名或进程 ID。
adb shell pidof com.xxx.xxx
将 com.xxx.xxx
替换为你要查看的应用包名。
adb shell top -n 1 | findstr <PID>
将 <PID>
替换为上一步中获取的进程 ID。
adb shell dumpsys cpuinfo | findstr com.xxx.xxx
将 com.xxx.xxx
替换为你要查看的应用包名。
-n <value>
: 刷新次数。例如:-n 1 表示只刷新一次。-d <value>
: 刷新间隔时间(秒)。例如:-d 2 表示每 2 秒刷新一次。-s <field>
: 按指定字段排序。例如:-s cpu 按 CPU 使用率排序。-m <value>
: 显示前 N 个进程。例如:-m 10 显示前 10 个进程。dumpsys cpuinfo
通常不需要额外参数,因为它默认输出的是汇总信息。
希望这篇文章对你在 Android 开发过程中监控 CPU 使用率有所帮助。