adb命令会对android手机造成多大的影响
之前从某大神那获取了一个一个结论,但是因为没有量化,所以有疑问。趁着晚上时间,验证一下adb命令对android手机的影响,实验了一把。 首先说结论:
adb单个命令影响可以忽略。多个adb命令需要看到底起了多少个。
采样了一晚上同时开启多个adb命令,使用红米得到的参数:
logcat影响 0.3%-2.1%, user和kernel 各占一半
top 命令 1.3%-3.5%,user使用<kernel
adbd守护进程 1%-3.9%,user使用<kernel
另外,又找了一个非常卡的华为U8818单核手机,开了1个top,1个logcat实验了一下:
C:\Users\xxx>adb shell dumpsys cpuinfo
Load: 14.57 / 18.91 / 19.67
CPU usage from 8921ms to 1958ms ago:
68% 6870/com.tmall.wireless: 59% user + 9.4% kernel / faults: 16697 minor 21 major
8.9% 78/mmcqd/0: 0% user + 8.9% kernel
6.4% 99/surfaceflinger: 1.1% user + 5.3% kernel / faults: 2 minor
3.5% 128/adbd: 0.4% user + 3.1% kernel / faults: 34 minor
3.5% 341/system_server: 2.5% user + 1% kernel / faults: 114 minor 1 major
1.8% 9197/top: 0.5% user + 1.2% kernel / faults: 1114 minor
1.4% 10451/logcat: 0.5% user + 0.8% kernel
0.7% 10449/kworker/0:2: 0% user + 0.7% kernel
0.5% 103/mediaserver: 0.2% user + 0.2% kernel / faults: 4 minor
0.5% 231/dhd_dpc: 0% user + 0.5% kernel
0.1% 4858/kworker/u:0: 0% user + 0.1% kernel
0.1% 84/jbd2/mmcblk0p13: 0% user + 0.1% kernel
0% 482/com.baidu.input: 0% user + 0% kernel / faults: 129 minor 7 major
0.1% 10199/com.baidu.trafficmonitor: 0.1% user + 0% kernel / faults: 2 minor
99% TOTAL: 66% user + 32% kernel + 1% iowait
可以看到: adbd的守护进程3.5%, top 1.8,logcat 1.4%。
adb说明
adb 全称为Android Debug Bridge (adb),其中包含了3个部分:client,server,daemon。
client 在开发pc机上通过adb命令启动。当启动ADT插件或者DDMS时,也会建立adb client.
server 在开发pc机上运行的后台线程,用于client和模拟器上的守护进程daemon交互.
daemon 在模拟器或者真机上运行的后台进程。使用top命令查看到的adbd:adb daemon.
当启动adb client时,它首先检查adb server进程是否运行。如果不存在,则启动server。server默认绑定到TCP端口5037,监听adb client传来的命令。所有的adb client都会使用这个端口。
server收到命令后,与设备建立连接。adb server扫描从5555到5585的奇数端口,用于控制台连接。偶数端口则用于adb连接。server可以管理不同的client和设备。
任务管理器中查看:
adb pid 命令行
5476 adb fork-server server //该命令为
7728 adb logcat
10708 adb logcat
17288 adb logcat
17352 adb shell top