加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 6.1 引入新功能,更容易辨认出故障的 CPU

发布时间:2023-01-30 15:32:44 所属栏目:Linux 来源:转载
导读: 出品|开源中国
对于多 CPU 同时运行的 Linux 生产环境(比如大型服务器)linux处理器,Linux 6.1 新增了一个非常实用的功能:在出故障的时候,错误消息将通知你到底是哪个 CPU 出了问题。

出品|开源中国

对于多 CPU 同时运行的 Linux 生产环境(比如大型服务器)linux处理器,Linux 6.1 新增了一个非常实用的功能:在出故障的时候,错误消息将通知你到底是哪个 CPU 出了问题。

该功能来自 Linux 6.1 合并窗口的 x86/cpu 分支补丁:在出现分段错误(segfault)时,故障消息会打印出 “有嫌疑” 的 CPU 编号。

linux处理器_linux 文档查看器_linux 内存内容查看器

补丁作者 Rik van Riel 解释了该功能的开发动机和运作原理:

在足够大的计算机群中,通常会有几个坏的 CPU。一般情况下可以通过查看运行的内核代码来识别。如果存在有问题的 CPU,那内核代码在其他地方运行良好,而在某个故障的 CPU 内核上不断崩溃。

然而这么多年来,出问题的 CPU 的故障模式是非常具体的,你可能在 bash、python 或各种系统守护程序中找到分段错误,然而故障消息不会告诉你是哪个 CPU 出了问题。现在我们将 printk () 添加到 show_signal_msg () ,就可以在分段错误时打印对应的 CPU、内核和套接字。

目前这个功能还不完美,可能出现误报的情况。因为从发生故障到输出对应的错误消息,任务可能会在另一个 CPU 上重新安排,导致报告的 CPU 编号出错。

但它已经足以帮助人们识别出大部分有故障的 CPU 内核。

下面是一个功能示例:

  segfault[1349]: segfault at 0 ip 000000000040113a sp 00007ffc6d32e360 error 4 in \
	  segfault[401000+1000] likely on CPU 0 (core 0, socket 0)

这个 printk 可以通过 /proc/sys/debug/exception-trace 来控制。据外媒 Phoronix 报道,该功能将在 10 月的 Linux 6.1 稳定版中正式启用。

关于 segfault

segfault :分段错误 / 段错误 / 段出错,是软件开发中经常会遇到的错误,也是 Linux 内核中最常见的 bug。

该错误是由非法内存访问造成的,如空指针引用、在只读内存区域进行写操作、访问受保护的内存区域等。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!