1. mce-inject功能

    mce-inject用于测试mcelog能否正确的获取硬件错误信息,并进行正确解码,mce-inject可以向内核注入指定的错误信息,因此,可以很方便的了解到mcelog的功能是否正常。

    这里需要注意的是,当用户利用mce-inject工具向内核注入不可恢复错误(如:fatal)时,会发生死机重新启动等现象,当然,可以通过更改sys文件系统下的tolerate文件来避免此现象的发生。

  1. tolerate文件配置

位置:/sys/devices/system/machinecheck/machinecheck*/

说明:其中machinecheck*中的*号由CPU的个数所决定的,如果是双核的,则存在machinecheck0和machinecheck1两个目录,对应目录里都有一个tolerate文件,tolerate中存放容忍程度值。

   功能:向用户提供一个可选择的出现相应硬件错误时的容忍程度(tolerate),比如:当tolerate的值为1时,出现fatal错误时就会死机,重新启动,并且该错误信息并不被记录;当tolerate的值为3时(注意该值只用于测试),在出现fatal错误时,机器会容忍该错误不予响应,不会出现死机重新启动现象,并且会记录相关错误信息。

  • 查看tolerate

以root身份进入相应的目录进行查看即可。如:

#cd  /sys/devices/system/machinecheck/machinecheck0

#cat tolerate

查看CPU0的tolerate值。

  • 设置tolerate

以root身份进入相应的目录进行修改即可,设置tolerate的方法很多,如:

#cd  /sys/devices/system/machinecheck/machinecheck0

#echo 3 >tolerate

  • 数值含义

tolerate的取值可以为0、1、2、3。

0: always panic on uncorrected errors, log corrected errors

1: panic or SIGBUS on uncorrected errors, log corrected errors

2: SIGBUS or log uncorrected errors (if possible), log corrected errors

3: never panic or SIGBUS, log all errors (for testing only)

  1. mce-inject使用

    mce-inject的使用方法也很简单,不过在使用前要现将tolerate的值修改为3,以防止死机重启事件发生,然后,在终端以root身份执行:

    mce-inject filename ...

    filename 存放要注入的具体错误类型

例如,一个mce-filename文件correct的内容为:

CPU 1 BANK 2

STATUS corrected

RIP 0x12341234

执行时,只需在终端输入:

#mce-inject ./correct

即可成功注入,详细的输出结果可以查看/var/log/mcelog文件。

当然,你可以自己编写相关的注入脚本。