有关watchdog的个人学习
1. 对于watchdog的三个描述:pet,bark,bite
pet:喂狗,是一个定时循环的行为,一般<10s
bark:在设定的时间内没有喂狗,触发bark;bark是一个irq信号
bite:bark后仍然没有被喂,超出设定时间后触发bite;bite是一个FIQ信号
8450/8475之后,TME负责喂system watchdog(区别于之前的TZ喂狗); 与此同时,新增一个watchdog在app cpu subsystem上。触发这个watchdog时,它的bite信号会发给TME,TME保存数据并reset系统。
默认情况下bark和bite和pet时间使用default值,对nonsecure watchdog而言,默认bark时间为11s,bite时间为12s(指距离上一次喂狗时间)。
触发bark的原因大多数情况下都是禁用抢占权限、其他进程占用时间太多或log重复打印以及死锁现象。在高通文档中,有说明一些相关的config,如:
CONDIG_DEBUG_SPINLOCK,
CONFIG_DEBUG_MUTEXES,
CONFIG_DEBUG_ATOMIC_SLEEP
2. Watchdog for APPS CPU
这是大多数时候我们处理的watchdog问题。
2.1 non secure HW watchdog [NS watchdog]
原理是在HLOS上设置一个定时器,定期喂non-secure watchdog HW;11s内不喂狗触发bark。HLOS可以处理,则自行进panic;不能处理则交由TZ处理。
NS watchdog,每个CPU负责对自己的watchdog进行操作。
2.2 secure watchdog
secure watchdog每6s发送一次bark到TZ作为FIQ,FIQ处理器接受到信号后喂secure watchdog HW;TZ在22s后未能处理bark信号,则触发bite,并将中断信号传递给USC。
2.3 system watchdog
2.4 android software watchdog
运行在虚拟机上的watchdog java线程,路径为framworks/base/services/java/com/android/server/watchdog.java.通常情况下watchdog周期为60s,debug模式下设置为10s.
原理:watchdog定时向处理器发送监视信号;检测到挂起后,watchdog保存现场并杀死system进程从而引发重启。这不是一个严格的系统崩溃,而是内核可以恢复的错误。
通过查看保存了线程和进程情况的trace logs可以定位死锁情况。
3. log查看
3.1 触发了kernel panic
non secure watch dog bark:
watchdog bark!now = .....
watchdog last pet at ......
CPU alive mask from last pet 0-3
kernel panic - not syncing: Apps watchdog Bark received!
3.2 不是由panic引起的watchdog bite
由一些意外的堵塞引起了pet的堵塞。
4. 标志性log和可能的成因
4.1 log过多堵塞
出现大量log的重复输出,如每100行就出现的log等
4.2 明显的特殊驱动
例如在stack结束前出现了spinlock或mutex call,可能是产生了死锁;
4.3 调度问题
在dmesg_TZ中若出现了许多pending workqueue内容和几条workqueue busy内容,这些内容中的一个可能堵塞了workqueue,可以用grep追查可能长时间占用的部分。
检查irq和runqueue,以确认是否是由于irq过多或RTtask堵塞了CPU。若当前正在运行的进程是swapper,则另有说明。此外,要注意有没有RT Throttling的部分,出现这份log的原因可能是堵塞而导致的watchdog无响应。
4.4 定时器本身问题
4.4.1 计时器bug
检查timelist.txt,比对计时器列表和计时器
4.4.2 内存损坏导致计时器问题
timerlist中出现了一些异常随机的数据,说明可能是内存问题
4.4.3 硬件层损伤导致的计时器异常
有关watchdog的个人学习相关推荐
- [实践篇]13.22 la qcom平台Watchdog Bark/Bite学习总结
一,Watchdog简介 watchdog是我们系统系统工程师常常挂在嘴边的,最常见的异常之一,它有一个很别致的中文名 - 看门狗. 对于la系统,我们常见的几种重启情况包括内核态重启和用户态重启.内 ...
- php查询MySQL结果转化为数组_PHP_PHP将MySQL的查询结果转换为数组并用where拼接的示例,mysql查询结果转换为PHP数组的 - phpStudy...
PHP将MySQL的查询结果转换为数组并用where拼接的示例 mysql查询结果转换为PHP数组的几种方法的区别: $result = mysql_fetch_row():这个函数返回的是数组,数组 ...
- python3文件夹监控模块watchdog学习
网上搜索python的文件夹监控,windows下推荐的大多数都是watchdog,萌新的我就学习了下这个模块. 这模块看了很久的git,没看懂,后来把git的示范代码拉在电脑上跑了一次就懂了,所以对 ...
- WINCE6.0+S3C2443下WatchDog学习
********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...
- NRF52832学习笔记(31)——Watchdog看门狗使用
一.简介 看门狗定时器(WDT: Watchdog Timer)的作用是在发生软件故障时(如程序陷入死循环或者程序跑飞),强制复位单片机,让单片机重新运行程序. 看门狗定时器本质上是一个计数器,只不过 ...
- CC2640R2F学习笔记(8)——Watchdog看门狗使用
一.背景 如果在一定的时间内没有通过"喂狗"来清除看门狗的 counter,则看门狗会产生一个复位,使程序重启. 看门狗一旦开启,就不能停下来. 二.移植文件 链接:https:/ ...
- ESP32学习笔记(40)——Watchdog看门狗使用
一.简介 看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次.说的复杂一点,看门狗就是能让 ...
- Linux驱动学习之:WDT(watchdog)驱动
第一部分: WDT驱动原理 WDT在内核中通常都实现为misc驱动. WDT介绍 一个Watchdog Timer(WDT)是一个在软件出错的时候可以复位计算机系统的硬件电路. 通常一个用户空间守护进 ...
- [实践篇]13.21 la qcom watchdog学习笔记
[QNX Hypervisor 2.2用户手册]目录(完结) 一,watchdog简介 wdt定时器配置了一个狗叫-Bark和狗咬-Bite时间,如果没有在规定的时间周期内喂狗-Pet,即系统出现无响 ...
最新文章
- 在建工程直接费用化_计入在建工程的成本怎么算
- Zookeeper服务端线程分析(单机)
- 【Linux网络编程】TCP 和 UDP 数据报格式详解
- MVC PartialView
- Shell 企业29道面试题 [转]
- 网易北京:全员核酸检测为阴性 园区环境检测为阴性
- 看淘宝UED招聘题,思索FSE技能定位(附参考答案)
- 48.本地Hyper-V虚拟机的异地(Azure)容灾(下)
- 【天池竞赛系列】阿里移动推荐算法思路解析
- 模板与泛型编程(二)
- ImageLoader的简单分析
- 海康ps流转换h264流
- 活在当下本意是抑制欲望的无度
- [影视源码]全民影院源码 综合影视HTML源码 无需更新搭建即可用
- Spring中的depends-on
- 高效准确处理scipy.misc 中imresize、imread导入错误问题
- 计算机电路基础知识点总结,《计算机电路基础》课程教学方法的探索
- 怎样用阿里云搭建个人博客
- 歌曲转调之后和弦如何转换
- [修改 Mysql5.7密码策略]Your password does not satisfy the current policy requirements