什么是MCE(Machine Check Error)?

       MCE(Machine Check Exception)是由CPU侦测出来的错误,它错误包含两种主要类型:notice(提示)/warning(警告),和fatal exception(致命性的错误)。Warning(警告)将会在你的系统log下输出一条类似于"Machine Check Event logged"的信息,我们可以通过一些linux的应用程序对这部分log进行详细的信息查看;而fatal MCE(致命的错误)会导致机器停止响应,MCE的详细信息也将会输出到系统的console中。

什么会导致MCE错误出现?

       常见原因有以下几种:

            1. 内存错误或ECC问题

            2. 冷却不足、CPU过热

            3. 系统总线错误

            4. 缓存处理器或硬件错误

如何找出MCE错误对应的含义?

       Linux系统下,如果在Console或者系统log中看到MCE的错误,可以运行mcelog命令从系统内核中读取详细的信息。需要注意的是,一旦运行了mcelog,我们将无法再通过这条命令去查询已经出现的错误,所以最好运行mcelog的时候讲文本输出到文件中以做进一步的分析,参考命令如下:

       root @ localhost:/ root> / usr / sbin / mcelog> mcelog.ou

       有些系统会定期执行这个操作,并将文件输出到/var/log/mcelog中,因此,如果系统log中发现了MCE信息,但是使用mcelog查询不到任何数据时,可以试着查看/var/log/mcelog文件。

致命的MCE错误导致机器停止响应后我们需要怎么办?

       致命的MCE错误通常都是由硬件错误所引起的,我们通过重启设备重新进入系统后,首先需要查看系统log,一个典型的MCE相关的错误log如下:

       CPU 1: Machine Check Exception: 4 Bank 4: f600200137080813

       TSC b0ce27165dd3 ADDR 180ee1b40

这时我们可以通过mcelog去将这条error log的详细信息dump出来,命令如下:

       root@localhost:/root> /usr/sbin/mcelog --ascii < myerror

得到的详细错误信息如下:

       HARDWARE ERROR. This is *NOT* a software problem!

       Please contact your hardware vendor

       CPU 1 4 northbridge TSC b0ce27165dd3

       Northbridge Chipkill ECC error

       Chipkill ECC syndrome = 3700

       bit32 = err cpu0

       bit45 = uncorrected ecc error

       bit57 = processor context corrupt

       bit61 = error uncorrected

       bit62 = error overflow (multiple errors)

       bus error 'local node origin, request didn't time out

       generic read mem transaction

       memory access, level generic'

       STATUS f600200137080813 MCGSTATUS 4

       这表示发生了Uncorrected ECC error,意味着其中一根内存模块出现了问题。


Reference:

1. Machine-check exception, https://en.wikipedia.org/wiki/Machine-check_exception

2. What are Machine Check Exceptions (or MCE)?

http://www.advancedclustering.com/act_kb/what-are-machine-check-exceptions-or-mce/

你可能感兴趣的:(什么是MCE(Machine Check Error)?)