linux 内核出现CPU 死机
来源:互联网 发布:分布式服务架构python 编辑:程序博客网 时间:2024/05/02 11:32
linux 异常分析工具(一)
linux 内核OOPS(二)
linux 内核出现死机
产生linux kernel死机原因有硬件引起,有驱动本身错误,有调试函数不合规定
(1)watchdog 检测lockup 异常
Linux 正常情况下, 一个CPU 参与到系统之中后, 会创建一个watchdog 内核进程用于检测CPU 的运行情况, 可以通过以下命令查看到进程:
# ps auxf | grep "watchdog"
11 root [watchdog/0]
12 root [watchdog/1]
17 root [watchdog/2]
22 root [watchdog/3]
821 root grep watchdog
可以看到, 每个CPU核都有一个watchdog 进程, 后缀代表CPU 号. 此进程用于维护每个CPU 的全局变量watchdog_touch_ts, 然后再建立一个定时器用于检测这个全局变量是
否更新了, 具体实现在kernel/watchdog.c 代码中.
static void watchdog_prepare_cpu(int cpu)
{
struct hrtimer *hrtimer = &per_cpu(watchdog_hrtimer, cpu);
WARN_ON(per_cpu(softlockup_watchdog, cpu));
hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
hrtimer->function = watchdog_timer_fn;
}
这类问题的现象如图1, 图1 所示一样. 在图3-4 中的现象是soft lockup. 从下
面的信息来看, 有当前CPU 正在运行的进程swapper/0:1, 出错的是CPU1, 同时还打印
超时的时间, 即已经超过多久没有更新watchdog 的值了, 而接着就是出错CPU 的调用栈.
图 1 softlookup 出错类型
图 2 hardlookup 出错类型
- linux 内核出现CPU 死机
- linux内核死机2-smp
- Linux内核死机调试方法总结
- LInux死机
- linux 死机
- 内核模块死机调试
- Linux 下CPU和内存负载测试 定位服务器死机原因
- 查看linux系统版本、内核、cpu、cpu运行模式
- linux内核:CPU私有变量(per-CPU变量)
- Linux 查看内核,CPU,内存信息命令
- linux中查询cpu型号、内核版本
- 浅谈Linux内核和CPU架构
- Linux内核对CPU热插拔的支持
- Linux内核对CPU热插拔的支持
- Linux内核分析之CPU动态调频
- Linux内核中的per-CPU变量
- linux内核线程cpu占用100%?!
- linux内核中的每cpu变量
- CentOS7安装livecd-creator
- git merge 工具 gvimdiff使用介绍
- linux 内核OOPS(二)
- POJ 1218 THE DRUNK JAILER 数论规律
- Hbase搭建
- linux 内核出现CPU 死机
- tjut 2857
- MSP430 开发注意事项要求
- android adb 显示error
- 【Linux】stat命令查看文件的三个时间
- linux系统编程——管道pipe
- 协同过滤推荐算法
- 如何使用 vimdiff 来 git diff 和merge diff
- 【暑期第二次训练赛】小火山的爱情密码(尺取法)