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


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

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

补丁作者 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。

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


相關推薦

2022-12-12

许多其他硬件驱动程序工作。 有关每项 Linux 6.1 新功能的细节,请查看咱们 OSC 对应的报道: 初始的 Rust 基础设施已被合并到 Linux 6.1 Linux 6.1 内核合并面向 LoongArch 架构的 CPU 特性 Linux 6.1 将迎来 MGLRU 和 Maple Tree 支

2023-12-01

大户,对于其使用平台电源管理可能粒度较粗,所以 APCI 引入了一些 CPU 独有的性能管理方式,在下一小节将详细说明。 平台电源配置提供了三种可选模式:performance(性能模式),balance(平衡模式),low-power(节能模式)。

2022-10-12

perf c2c 功能用于统计 CPU 的缓存到缓存信息。 使用带有新功能的 perf 工具,可以显示内存的 L1/L2/L3 缓存命中率、本地 RAM 命中率、远程 RAM 命中率、远程缓存命中、未缓存命中和其他类似指标。不过需要注意,最新的 perf c2c/mem

2022-10-15

nux 5.19 就已合并龙芯 LoongArch CPU 架构,但初步支持阶段的功能非常有限,甚至缺少一些关键的设备驱动程序 —— 所以当时 Linux 5.19 暂未支持在搭载 LoongArch CPU 的设备上启动。正式从这时开始,龙芯团队也一直在积极为 Li

2023-02-18

工作所分散,所以“我只是还没有时间去完全调试 6.1 中引入的这个特殊的回归......我的计划是在接下来的周末继续调试这个问题,至少要找到引入该回归的 commit。我一直有一台 Itanium 服务器准备用来测试内核,我可以通过它内

2022-09-08

后,Karmada 将为故障集群添加 “NoExecute” 污点,随后新引入的 taint-manager 控制器将开始驱逐该故障集群上的工作负载,接着调度器重新调度被驱逐的工作负载至新的可用集群,如果用户开启了 GracefulEviction 特性,被驱逐的工作

2022-10-12

nux 5.19 就已合并龙芯 LoongArch CPU 架构,但初步支持阶段的功能非常有限,甚至缺少一些关键的设备驱动程序——所以当时 Linux 5.19 暂未支持在搭载 LoongArch CPU 的设备上启动。 不过 Linux 5.19 的状态至少足以解除 glibc LoongArch 主

2024-06-04

含多项内容的“高级计算机程序设计”课程。该课程通过引入开源项目作为案例,向学生传授C和C++的独特优势,介绍多种CPU架构、GPU编程、计算瓶颈分析、各种开发工具和新型Rust语言等内容。这些内容让学生更加深入地理解程

2022-10-17

inux 6.1 在 VirtIO 方面值得注意的是块驱动程序“virtio_blk”引入了“SECURE ERASE”支持。 现在安全擦除功能已添加到 VirtIO 规范中,新引进的 VIRTIO_BLK_F_SECURE_ERASE 要求除了常规的 SSD“丢弃”功能之外,所有可能通过垃圾收集创建的

2023-11-30

2023年11月27日晚间,滴滴因系统故障导致App服务异常,不显示定位且无法打车。11月27日晚,滴滴出行进行了回复:非常抱歉,由于系统故障。 2023年11月28日早间,滴滴出行消息称,网约车等服务已恢复,骑车等在陆续修复中。11

2022-10-14

RISC-V 在即将到来的 Linux 6.1 默认内核配置中将会添加对 CD-ROM 文件系统的支持。 此举并不是为了要在 RISC-V 中使用 CD/DVD 驱动器,毕竟 2022 年 CD-ROM 基本已被淘汰。这是因为部分安装介质仍然可以作为这些文件系统的镜像来分

2022-10-12

如果 Linux 内核下一个版本的发布时间推迟,甩锅给 Linus 吧 : ) Linux 6.1 的合并窗口目前处于开启状态。在刚刚过去的周日,一名内核维护者向 Linus Torvalds 询问是否错过了一个合并请求。 对此,Linus 回应称该合并请求仍

2023-01-08

发送了两轮补丁,用于将 HugeTLB 高粒度映射 (HGM) 的概念引入 Linux 内核。目前他共发送了 46 个处于 RFC 后状态的补丁集以供审核。 Linux 内存管理采用“分页机制”, 当运行内存需求量较大时,太大的(4K/2M/1G)  大小的

2024-03-30

rage 设置现在显示所有已启用的自定义 Persistent Storage 功能。#19267 缓解 RFDS Intel CPU 漏洞。#20274 有关更多详细信息,可参阅变更日志。