Linux hung task detect
来源:互联网 发布:网游推荐知乎 编辑:程序博客网 时间:2024/05/16 04:19
hung相关代码所在路径:kernel/linux/kernel/hung_task.c
相关内核配置宏在out/target/product/xxx/obj/KERNEL/.config文件中,如下所示:
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
函数调用关系
subsys_initcall(hung_task_init)->hung_task_init->kthread_run->watchdog->check_hung_uninterruptible_tasks->check_hung_task
hung_task_init函数:创建名为“khungtaskd”的线程,其中watchdog函数为线程运行的函数;
watchdog函数:每隔CONFIG_DEFAULT_HUNG_TASK_TIMEOUT(120S)时间,检测是否有进程hung;
check_hung_uninterruptible_tasks函数:遍历所有线程(进程),如果有线程处于TASK_UNINTERRUPTIBLE状态,则执行check_hung_task函数;
check_hung_task函数:两次间隔CONFIG_DEFAULT_HUNG_TASK_TIMEOUT时间内,如果线程没有主动放弃CPU或者被抢占,则打印hung相关信息,
如果CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE为1,则产生panic。
相关内核配置宏在out/target/product/xxx/obj/KERNEL/.config文件中,如下所示:
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1
如果要修改以上宏,以arm64为例,需修改kernel/linux/arch/arm64/configs目录下的相关文件。
函数调用关系
subsys_initcall(hung_task_init)->hung_task_init->kthread_run->watchdog->check_hung_uninterruptible_tasks->check_hung_task
hung_task_init函数:创建名为“khungtaskd”的线程,其中watchdog函数为线程运行的函数;
watchdog函数:每隔CONFIG_DEFAULT_HUNG_TASK_TIMEOUT(120S)时间,检测是否有进程hung;
check_hung_uninterruptible_tasks函数:遍历所有线程(进程),如果有线程处于TASK_UNINTERRUPTIBLE状态,则执行check_hung_task函数;
check_hung_task函数:两次间隔CONFIG_DEFAULT_HUNG_TASK_TIMEOUT时间内,如果线程没有主动放弃CPU或者被抢占,则打印hung相关信息,
如果CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE为1,则产生panic。
阅读全文
1 0
- Linux hung task detect
- Linux kernel hung task
- hung task机制学习
- 一次内核hung task分析
- kernel 3.10内核源码分析--hung task机制
- kernel 3.10内核源码分析--hung task机制
- Linux cmd 执行hung 住原因解析
- linux 任务被stuck 或者hung住
- How does Linux detect your webcam?
- detect application was clicked by user click task bar icon or click application window
- Linux系统task堆栈
- Install Linux Malware Detect (LMD) in RHEL, CentOS and Fedora
- Scan / Detect New Luns In Redhat Linux & Outputs To Remember
- Linux 0.12: Task Switching 条件
- TASK
- Task
- Task
- TASK
- http错误代码
- 欢迎使用CSDN-markdown编辑器
- 布局相关的知识点
- ajax post请求发送json数据报错unexpected token in json at position的问题解决
- redis 事务
- Linux hung task detect
- 【转载】jxl导出excel(合并单元格)
- VS2013 错误1error C4996: 'wcstok': This function or variable may be unsafe. Consider using wcstok_s i
- 开发框架-Spring-Profile的配置、激活和读取
- linux下wifi编程(基于netlink和nl80211.h)
- 总结
- ReactNative尝鲜
- 3.2.2用join方法使线程排队运行
- TCP三次握手问题思考