内核稳定性

前言

创建该专栏目的:系统地整理遇到的内核稳定性问题及知识点,便于回顾和查缺补漏。

内核稳定性问题指的是系统发生了死机或异常重启(oops/panic等软硬件问题),影响用户体验,甚至造成生命财产的损失。

稳定性开发的目的是通过提前干预的方法,让更多的bug在开发阶段就暴露出来,提高产品固件的稳定性,减轻后续维护的压力。

稳定性开发的内容主要包含:

  • 代码静态分析
  • 动态故障检测
  • 故障现场记录
  • 故障分析工具

比如hungtask问题,当内核检测到有hungtask异常(故障检测),会触发panic通过kdump保存vmcore(故障现场),最后通过crash工具解析vmcore分析异常(故障分析)。当然有些稳定性问题,可能在检测到故障的同时已经记录足够的信息问题用于分析。

首先概括下常见的内核异常、故障检测方法、现场记录和分析工具,不够全面,后续补充。

1 常见的内核异常:

1.1 调度相关

  • rcu stall
  • watchdog
  • hungtask
  • softlockup
  • hardlockup
  • workqueue lockup
  • schedule while atomic
  • rcu 主动schedule
  • rt throttle

1.2 内存相关

  • 踩内存
  • 内存泄漏
  • 访问内存失败(空指针、异常地址)
  • oom、lowmem killer
  • bad page
  • spinlock error

1.3 总线相关

  • noc error
  • bus error(serror、同步)
  • tzasc error

1.4 其他异常

  • 中断风暴
  • BUG_ON
  • WARN_ON
  • 用户进程crash
  • DDR bit翻转

2 动态故障检测

2.1 内存故障检测

  • kasan
  • asan
  • kfence
  • slub_debug
  • kmemleak
  • malloc debug

2.2 系统资源监测

  • 轻量化采集工具(进程loading、内存占用、io等)
  • emmc trace
  • irq mornitor
  • lockdep
  • kprobe
  • ftrace
  • ebpf

2.3 其他检测工具

  • tzasc
  • coresight

3 故障现场记录

  • pstore
  • kdump
  • minidump
  • coredump
  • printk、logbuf
  • die step
  • boot reason

4 故障分析工具

  • gdb
  • crash
  • DS5
  • trace32
  • coresight

后面会按照这个框架介绍常见内核异常的检测原理和案例分析,有问题的话欢迎大家一起探讨。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值