Android 分析system_server CPU高的方法

Android 分析system_server CPU高的方法

  1. 查看长时间运行的线程
busybox ps wlT| grep system_server
R  1000  4201   801 4848m  276m 0:0   14:59 02:41:35 {Thread-147} system_server
R  1000  4202   801 4848m  276m 0:0   14:59 02:41:41 {Thread-148} system_server
  1. 查看线程循环打印的内容
strace -p 4201
结果
read(283, 0x727e57ad60, 32)             = -1 EIO (I/O error)
pselect6(284, [283], NULL, NULL, NULL, NULL) = 1 (in [283])
read(283, 0x727e57ad60, 32)             = -1 EIO (I/O error)
pselect6(284, [283], NULL, NULL, NULL, NULL) = 1 (in [283])
read(283, 0x727e57ad60, 32)             = -1 EIO (I/O error)
  1. 查看具体线程调用的方法
debuggerd -b 1028 
1028是system_server的pid
结果
"Thread-147" sysTid=4201
  #00 pc 000000000006fe78  /system/lib64/libc.so (__pselect6+8)
  #01 pc 000000000002b948  /system/lib64/libc.so (select+144)
  #02 pc 0000000000001894  /system/lib64/libjni_hid_raw.so (native_readReport(_JNIEnv*, _jobject*, int, _jstring*, _jbyteArray*, int)+108)
  #03 pc 00000000006691f4  /data/dalvik-cache/arm64/system@framework@boot.oat (offset 0x625000)

"Thread-148" sysTid=4202
  #00 pc 0000000000070864  /system/lib64/libc.so (read+4)
  #01 pc 00000000000018ec  /system/lib64/libjni_hid_raw.so (native_readReport(_JNIEnv*, _jobject*, int, _jstring*, _jbyteArray*, int)+196)
  #02 pc 00000000006691f4  /data/dalvik-cache/arm64/system@framework@boot.oat (offset 0x625000)

可以看出来是libjni_hid_raw.so里面的native_readReport出问题了
查找JniUSbHidRaw.cpp–HidRawDeviceManager.java–HidRawDevice.java–start()方法里面有while(true)死循环

  1. 命令查找句柄是否被删除
cd /proc/4201/fd
lrwx------ 1 system system 64 2021-07-21 18:00 282 -> /dev/hidraw0 (deleted)
lr-x------ 1 system system 64 2021-07-21 18:00 283 -> /dev/hidraw0 (deleted)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小纸箱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值