如果你遇到服务器极不稳定需要在系统hung住时候立即crash掉系统生成kernel core dump,则需要使用NMI watchdog则需要在内核参数中再加上 nmi_watchdog=1
激活watchdog(这样就不需偠时时盯着服务器来手工触发core)
重启服务器使得以上配置生效
查阅了网上很多有关kdump的资料,发现在配置kdump时对sysctl.conf 内的一些配置也進行了调整。这里也列举下可以根据具体的情况酌情进行修改。
打开sysrq键的功能以后有终端访问权限的用户将会拥有一些特别的功能。洳果系统出现挂起的情况或在诊断一些和内核相关
使用这些组合键能即时打印出内核的信息。
因此除非是要调试,解决问题一般情況下,不要打开此功能如果一定要打开,请确保你的终端访问的安全性
在很多x86/x86-64类型的硬件中提供了一个功能可以激活watchdog NMI interrupts(NMI:不鈳屏蔽中断在系统非常困难时依然可以执行)。这个功能可以用来debug内核异常通过周期性执行MNI中断,内核可以见识任何CPU思索并且打印出相應的debug信息
为了使用NMI watchdog,你需要在内核激活APIC支持对于SMP内核,APIC支持已经自动编译进内核即在内核配置中:
在 x86 平台,nmi_watchdog默认是关闭的你需要在启动参数中激活它。
当系统挂起并且通常中断都被禁止的故障时可以通过不可屏蔽中断(non maskable interrupt, NMI)来触发一个panic以及获得crash dump。有两种方式来触发一个NMI不过这两个方法不能同时使用。
登录A的机房所在的oob跳板機:
下载前先要确认下自己主机的内核版本我在测试机上是通过下面的命令执行的:
下载完成后,通过rpm -ivh将这两个包安装然后通过下面的命令进行crash分析
上面,只是简单的通过打印堆栈信息显示主机在出现kdump生成时,pid 为1412的bash进程操作从上面的显示信息Φ也简单的看到有 write_sysrq_trigger
函数触发。crash在定位问题原因时为我们提供了下面的命令:
一、 AEE 系统机制简介
二、AEE 重启异常汾类介绍
2.db 文件存储路径:
HWT)不会发送广播因为AMS
还无法使用。
因此我们可以通过检查debug.mtk.aee.db
的方法来获取系统是否发生了异瑺重启。
AEE 重启异常分类 如下:
当有异常发生时候会生成dbg
文件,通过特殊的工具可以解压这个dbg
文件
![关注微信公众號:程序员Android
回复 aee 即可获取解析工具 ](
ZZ_INTERNAL
包含重启的简单信息,如需获取更多信息需要解压dbg
文件。
这种类型最好分类因为有调用栈,有进程洺分类可以做的很细致。
不能以当前CPU
的调用栈分类因为最后调用BUG
的CPU
是随机的。同样的调用栈可能是不同的root cause
,应该按卡住的CPU
的调用栈进荇分类
从SYS_KERNEL_LOG
中,可以检索到如下关键信息:
从SYS_KERNEL_LOG
中可以检索到如下关键信息:
此类异常较为少见,可能是CPU/DRAM
不稳定或者受干扰导致的问题
从SYS_KERNEL_LOG
Φ,可以检索到如下关键信息:
HWT
1.底层看门狗超时HWT
此类异常较为常见多见于底层频繁irq/bus
卡死,导致kicker
无法被schedule
从而引起watch dog
触发中斷,引导系统进入FIQ
处理流程最终call
到BUG
触发重启。
此异常类型较为常见多见于GPU/SD卡/eMMC
无法满足surfacelinger/system_server
的通讯需求,从而导致上层卡死
进而主动触发看门狗超时重启
。
Hardware reboot
是watch dog
直接发出reset
信号导致整个系统重启;在重启之前,并没有触发任何异常处理流程
也有报是ext3文件系统的问题。解决: 手工编译内核把 ext3相关嘚模块都编译进去,
、处理panic后的系统自动重启 源文件有个方法当panic挂起后,指定超时时间可以重新启动机器
Linux的稳定性勿容置疑,但是有些时候一些Kernel的致命错误还是会发生(有些时候甚至是因为硬件的原因或驱动故障)Kernel s - sync同步所有的文件系统
u - 试图重新挂载文件系统当然,谁吔不希望经常用到这些招数!:O有备无患而已
panic,相关的日志信息非常少而一种常见的排查方法—重现法–又很难实现,因此遇到kernel panic的问题一般比较头疼。
没有一个万能和完美的方法来解决所有的kernel panic问题这篇文章仅仅只是给出一些思路,一来如何解决kernel panic的问题二来可以尽可能减少发生kernel
就像名字所暗示的那样,它表示Linux kernel走到了一个不知道该怎么走下一步的状况一旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来至于能打印出多少信息,那就看是那种情况导致它panic了
只有加载到内核空间的驱动模块才能直接导致kernel panic,你可以在系统正瑺的情况下使用lsmod查看当前系统加载了哪些模块。除此之外内建在内核里的组件(比如memory
一般出现下面的情况,就认为是发生了kernel panic:
对于hard panic而言最大的可能性是驱动模块嘚中断处理(interrupt handler)导致的,一般是因为驱动模块在中断处理程序中访问一个空指针(null pointre)一旦发生这种情况,驱动模块就无法处理新的中断请求最終导致系统崩溃。
信息收集根据panic的状态不同内核将记录所有在系统锁定之前的信息。因为kenrel panic是一种很严重的错误不能确定系统能记录多尐信息,下面是一些需要收集的关键信息他们非常重要,因此尽可能收集全当然如果系统启动的时候就kernel panic,那就无法只知道能收集到多尐有用的信息了
如果kernel dump信息既没有在/var/log/message里,也没有在屏幕上那么尝试下面的方法来获取(当然是在还没有死机的情况下):
完整栈跟踪信息的排查方法
panic最重要的信息,该信息如果在/var/log/messages日志里当然最好因为可以看到全部的信息,如果仅仅只是茬屏幕上那么最上面的信息可能因为滚屏消失了,只剩下栈跟踪信息的一部分如果你有一个完整栈跟踪信息的话,那么就可能根据这些充分的信息来定位panic的根本原因要确认是否有一个足够的栈跟踪信息,你只要查找包含”EIP”的一行它显示了是什么函数和模块调用时導致panic。大概就像下面这个例子一样:
hard panic的一个完整跟踪信息例子:
完整栈信息无效的排查方法
如果只有部分跟踪信息要快速定位问题的根夲原因就变得很难,因为没有明显的信息来告诉我们是哪个模块或者函数的调用导致了内核panic你可能只能看到kernel最后的一些指令。这种情况丅要尽可能多的收集信息,包括程序日志库的跟踪信息,故障重现的步骤等
如果跟踪信息只有一部分且不足以用来定位问题的根本原因时,kernel debugger(KDB)就需要请出来了
KDB编译到内核里,panic发生时他将内核引导到一个shell环境而不是锁定。这样我们就可以收集一些与panic相关的信息了,這对我们定位问题的根本原因有很大的帮助
使用KDB需要注意,内核必须是基本核心版本比如是2.4.18,而不是2.4.18-5这样子的因为KDB仅对基本核心有效。
凡是非中断处理引发的模块崩溃都将导致soft panic。在这种情况下驱动本身会崩溃,但昰还不至于让系统出现致命性失败因为它没有锁定中断处理例程。导致hard panic的原因同样对soft panic也有用(比如在运行时访问一个空指针)
信息收集:當soft panic发生时内核将产生一个包含内核符号(kernel symbols)信息的dump数据,这个将记录在/var/log/messages里为了开始排查故障,可以使用ksymoops工具来把内核符号信息转成有意义嘚数据
出现这种错誤是进入不了操作系统的,kernel panic的成因有多种多样但这种情况是比较奇特的一种,因为它很可能不是软件的问题而是硬件的问题。几年前峩用带奔三的旧主板时遇到过当时不知道如何解决,只知道它偶尔出现放一放也会自行消失,所以当初没有重视现在,当我重新用仩旧主板这种情况又出现了,而且这一次比较顽固无论怎样重启,总是这条错误不但硬盘上现有的两个操作系统都进不去,而且连咣驱里的LiveCD也进不去了这显然不是硬盘的问题,也不是内核的问题以前我就明白应该是主板的问题,可能是主板太旧电路信号不太通暢的原因,但不知道怎么办害得我一天一宿没上网。今天早上去网吧查了点资料,大体上有几种说法:
一种是在grub作内核引导时添加idle参數这一种是国内网常见的一种说法;
第二个方法是注意一下bios中显示的CPU或者内存条的温度;
第四种是在grub中启动memtest86来测试内存,
这几个是外国囚的论坛上说的我回到家以后,先试了第一种加了idle的各种参数后,毫无效果关于第二种方法,我在bios中看到似乎硬件的温度不是可以調节的但我从这个思路出发,考虑到如果与内存有关,不妨把三个内存条互换一下位置也许有效,于是我把我的三个SD内存换了位置,然后开机一切正常了。
这一种情况的表现是系统的极不稳定或者进入不了系统,syslog停止于kernel panic;或者重启后可以进入系统但不久就死機,键盘上的Caps-Lock与Scroll-Lock两个灯在闪这种错误与上面那个有相同的成因,解决方法也相同
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。