从 /proc/sys/kernel/tainted 清除机器检查事件

从 /proc/sys/kernel/tainted 清除机器检查事件

首先我想说的是决不,但是这里……

在监控 Linux 系统健康状况时,我们会定期检查各种项目。这包括读取其中的/proc/sys/kernel/tainted值,并在其中的值不为零时发出警报。

通常它看起来像这样:

  • 我们从 /proc/sys/kernel/tainted 中读取了值 16,这表明发生了机器检查。
  • 额外的挖掘还显示:

    • /var/log/messages包含:

      Disabling lock debugging due to kernel taint
      Machine check events logged

    • /var/log/mcelog 包含

      硬件事件。这不是软件错误。
      0 级
      CPU 6 组 10
      杂项 90840800080148c 地址 89a6a0c40
      时间 1383328318 星期五 11月 1 13:51:58 2013
      心电图状态:
      MCi 状态:
      更正错误
      MCi_MISC 寄存器有效
      MCi_ADDR 寄存器有效
      MCA:内存控制器 MS_CHANNEL2_ERR
      事务:内存清理错误
      状态 8c00004a000800c2 MCGSTATUS 0
      MCGCAP 1000c12 APICID 20 插座 ID 1
      CPUID 供应商 Intel 系列 6 型号 45

在我看来,这就像一个软错误,内存有时会出现错误并自我纠正,除了跟踪事件数量外,操作员不必做任何事情。

现在上面的日志显示“由于内核污染,禁用锁调试”。
我理解这意味着内核不想误导任何人有关软件组件的信息,因为硬件“已知有问题”。

如果我们重新启动,这个问题就会解决,但如果事件数量很少,没有真正的理由重新启动,我们希望避免某些项目(对于高事件,重新启动并不是正确的做法,修复硬件/环境问题才是有意义的,然后重新启动),但仍然希望将其用作警告潜在问题的机制。所以我的问题是...

有没有办法从 /proc/sys/kernel/tainted 中清除这个位?

ps 再次强调,我只打算在事件不频繁发生时重置它(见这里

答案1

我不愿意回答我自己的问题,我会接受任何能增加有价值信息的东西

正如我在上面的评论中提到的,通过查看内核代码这里这不可能。

考虑到“tainted”的历史,这似乎是合理的,它最初用于表示由于不合规(非 GPL)模块,内核不纯净。然而,正如我在其他评论中指出的那样,这很麻烦,某些内存问题可以自行纠正,可能不应该设置该污点位(或者至少允许清除该特定位)。

相关内容