Linux内核 -- Hung Task 检测及日志保存

Hung Task 检测及日志保存

1. 启用 Hung Task 检测器

首先,需要确保内核配置中启用了 Hung Task 检测器:

  • 配置内核选项:
CONFIG_DETECT_HUNG_TASK=y
  • 设置超时时间:
echo 120 > /proc/sys/kernel/hung_task_timeout_secs

2. 日志输出到文件系统

Hung Task 检测器在检测到挂起任务时,通常会将相关的错误信息和任务堆栈信息打印到 dmesg 或者 内核日志 中。可以通过 日志守护程序(如 syslogrsyslog)将这些日志持久化到文件系统或者 EMMC。

实现步骤:

  1. 确保内核日志持久化

    • 通过配置 /etc/rsyslog.conf/etc/syslog.conf 来将内核日志保存到特定文件中。
    • 例如,可以将内核日志保存到 /var/log/kernel.log,并在配置文件中添加一行:
      kern.* /var/log/kernel.log
      
  2. 重定向内核日志到 EMMC

    • 将日志路径指向 EMMC 上的目录,例如将日志保存到 /mnt/emmc_logs/kernel.log
      kern.* /mnt/emmc_logs/kernel.log
      
  3. 验证日志输出

    • 可以通过以下命令检查日志守护程序是否正常工作,并确认内核日志是否被写入指定文件:
      tail -f /var/log/kernel.log
      
  4. 处理日志轮转(可选)

    • 使用 logrotate 工具设置日志轮转策略,确保日志不会占用过多空间。可以通过 /etc/logrotate.d/ 配置文件定义日志的轮转规则。

3. 使用 pstore 将日志保存到 EMMC

pstore 是一种将内核崩溃和调试信息保存在持久性存储介质中的机制。它可以配置成在系统崩溃或发生严重错误(如 Hung Task 触发)时,将内核信息保存到特定存储介质,包括 EMMC 或者其他持久性存储器。

配置步骤:

  1. 启用内核选项

    • 配置内核,启用 pstore 支持:
      CONFIG_PSTORE=y
      CONFIG_PSTORE_CONSOLE=y
      CONFIG_PSTORE_PMSG=y
      CONFIG_PSTORE_RAM=y
      
  2. 选择存储后端

    • pstore 支持多种存储后端,可以使用 EMMC 或者其他持久存储器作为 pstore 的后端。在内核命令行中指定 pstore 使用的后端(如 ramoops):
      ramoops.mem_address=0xXXXXXX ramoops.mem_size=0xXXXX ramoops.record_size=0xXXXX
      
  3. 查看 pstore 数据

    • 当系统检测到 Hung Task 或崩溃时,相关信息会保存到 /sys/fs/pstore 目录下。通过读取该目录下的文件,可以获取崩溃或错误信息:
      cat /sys/fs/pstore/dmesg-ramoops-0
      

4. 使用内核 Oops 捕捉器(kexec + kdump

  • 如果系统在死锁或任务挂起后崩溃,kdump 可以捕捉内核崩溃时的内存内容并将其保存到 EMMC 或其他文件系统中。可以结合使用 kexeckdump 实现内核崩溃后的内存快照持久化。

总结

  1. Hung Task 触发时,内核日志会记录相关信息。可以通过日志守护程序(如 rsyslog)将这些日志保存到文件系统或 EMMC 中。
  2. 通过配置 pstore,可以将内核异常信息直接保存到 EMMC 或其他持久存储中。
  3. 配置日志轮转和监控,确保日志不会占用过多存储空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值