您的当前位置:首页正文

使用 ADB 查看 Android 设备的 CPU 使用率(详解)

2024-10-23 来源:个人技术集锦

一、查看整体 CPU 使用率


1. 使用 top 命令

要查看设备的整体 CPU 使用率,可以使用 top 命令。该命令将显示当前所有进程的 CPU 使用情况,包括每个进程的 CPU 使用率、内存使用量和运行时间等。

adb shell top

top 命令输出的常见字段及其含义如下:

PID   USER      PR  NI VIRT  RES  SHR S [%CPU] %MEM     TIME+ ARGS
  • PID: 进程 ID
  • USER: 进程所属用户
  • 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 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
  ...
  • 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%,如下图所示:

这种情况下,系统会把各个核心上的 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 使用率有所帮助。

显示全文