Android Watchdog机制介绍与分析

1.Watchdog是什么?

Android Watchdog主要是检测system server重要线程状态(main,android io,android display ,Activitymanager,android fg,android bg等线程 )的一种机制。发生Watchdog时会触发Android重启来使系统恢复。Watchdog是SystemServer的一个线程(class Watchdog extends Thread)检测system server重要线程的锁状态和消息是否阻塞,假如有线程block了60s那么就会触发watchdog timeout flow。

2.Watchdog代码基本介绍

可以在http://androidxref.com/搜索源码,看Watchdog.java文件

3.原因分析

(1)手机性能影响主要一下:

cpu使用高 --查看cpu使用,看是否有问题

low memory --通过kernel log搜索lowmemorykiller看cache和free的内存是否够,是否有memory泄露

emmc问题(io文件)--block的trace应该在io操作时,可以kernellog搜索是否有emmc错误

dump log --在发生anr之前系统在dump log导致花费时间

object leakage --比如fd leak,window leakage,service leakage,receiver leakage,window leakage

(2)非性能影响,可能原因如下,看backtrace来分析

死锁

systemserver binder用完--unavalialbebinder(表示binder耗尽)

4.分析步骤

1.确认是否为watchdog问题--event log搜索"Blocked in"或者"Watchdog" device log搜索"Blocked in",并且找到出问题的blocked thread。

2.查看下device log里面基本trace和cpu使用信息

3.搜索"Cmd line: system_server"检查30s(watchdog half)和60s(watchdog)的trace,假如trace打印的不一样,代表是系统整体慢导致,

4.不是系统性能导致,查看trace发现主要原因

5.可以看的还有,搜索4后出问题的线程log,可以搜索“”pid tid“”,来看是否有线索,搜索sysrq来看thread状态和trace,比如可以看是否在持有mutex锁,在做binder_ioclt操作等等,或者是否处在D状态(不可中断的异常状态)

猜你喜欢

转载自blog.csdn.net/wd229047557/article/details/79451969
今日推荐