- mce-inject功能
mce-inject用于测试mcelog能否正确的获取硬件错误信息,并进行正确解码,mce-inject可以向内核注入指定的错误信息,因此,可以很方便的了解到mcelog的功能是否正常。
这里需要注意的是,当用户利用mce-inject工具向内核注入不可恢复错误(如:fatal)时,会发生死机重新启动等现象,当然,可以通过更改sys文件系统下的tolerate文件来避免此现象的发生。
- 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)
- 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文件。
当然,你可以自己编写相关的注入脚本。