当前位置:首页>Linux>Linux 最新资讯 20260415——Linus 拒绝为 Linux 7.1 合并性能修复“补丁”及 Kconfig “问题代码” ,并开始移除 Intel 486 支持的代码

Linux 最新资讯 20260415——Linus 拒绝为 Linux 7.1 合并性能修复“补丁”及 Kconfig “问题代码” ,并开始移除 Intel 486 支持的代码

  • 2026-09-10 15:19:12
Linux 最新资讯 20260415——Linus 拒绝为 Linux 7.1 合并性能修复“补丁”及 Kconfig “问题代码” ,并开始移除 Intel 486 支持的代码
               01             
Linus Torvalds 在 Linux 7.1 中合并了开始移除 Intel 486 CPU 支持的代码。             

Linus今日毫无波澜地接受了首批移除代码,正式启动对M486/M486SX/ELAN内核支持的淘汰流程。

首批移除的是内核配置(Kconfig)中针对M486/M486SX/ELAN CPU的编译选项。随着相关Kconfig代码被移除,在Linux 7.1+版本中构建支持英特尔486架构的内核已不再可能,此举将直接影响AMD/Cyrix/IBM/Intel SL/SLC/SLC2/SLC3/SX/SX2及UMC U5S系列处理器。而M486配置选项原本对应的是486级别CPU,包括AMD/Cyrix/IBM/Intel 486DX/DX2/DX4和UMC U5D等型号。

若后续无人提出保留支持的合理诉求,预计在Linux 7.2或更高版本中,针对i486专属代码路径的实际清理工作将更深入展开。若仍有用户奇迹般地在现代Linux内核版本中使用i486 CPU,可继续使用Linux 6.18 LTS等长期支持版本,这些版本将在未来数年内持续提供内核支持。虽然i486之后的32位CPU仍会获得维护,但不应期待现代内核版本会为其带来突破性进展。值得注意的是,Linux 7.1中还存在可能对32位Linux用户产生负面影响的变更。

此次通过合并x86/platform相关代码,内核迈出了移除i486支持的第一步。无论是怀旧情绪还是其他因素,都未能阻止莱纳斯从主线内核启动移除进程。在同批提交中,针对新型AMDCPU还增加了一项实用功能:当检测到AMD AGESA固件时,其版本号将最终被打印至Linux内核日志,这为调试和诊断工作提供了便利。

               02             
Linus Torvalds 拒绝为 Linux 7.1 合并性能修复“补丁”及 Kconfig “问题代码”             

尽管Linux 7.1合并窗口已纳入许多引人注目的新特性与变更,但截至目前已有两项拉取请求因被Linus Torvalds拒绝而显得尤为突出,并附有他直击要害的评论。

被拒请求之一,主要是解决启用审计子系统时当代高核心数工作站/服务器处理器出现的性能衰退问题。审计框架在高核心数CPU上可能遭遇性能瓶颈,这正是Linux 7.1的一项拉取请求试图解决的问题。

Christian Brauner在描述他与Red Hat工程师Waiman Long提交的补丁时写道: 

"避免审计上下文设置与重置路径中过度的dput/dget操作。当审计子系统启用时,它会频繁调用get_fs_pwd()获取对fs->pwd的引用,随后通过path_put()释放这些引用。当大量进程在同一工作目录频繁执行打开/关闭系统调用时,由于引用计数的持续变更,可能导致单个pwd目录项锁上的自旋锁激烈争用。与关闭审计子系统的情况相比,这会造成明显的性能衰退,在如今日益普及的多核系统上尤为突出。

我们通过新增一组fs_struct辅助函数来减少不必要的path_get()和path_put()调用,并修改审计代码以使用这些新辅助函数,从而避免此类由审计引发的性能衰退。"

尽管该补丁对于当前日益增长的高CPU核心数及下一代更高核心数CPU具有重要意义,但Linus Torvalds对其设计并不满意。他回应道: 

"我非常不喜欢这个方案,至少会推迟合并它。

因为在我看来这完全走错了方向,像是个临时补丁。仅观察部分被修改的路径,比如copy_fs_struct函数中先通过

        path_get(&fs->root);

增加根目录引用计数,紧接着下一行却是

        get_fs_pwd_pool_locked(old, &fs->pwd);

以完全不同的方式复制pwd。

造成这种差异的唯一原因是审计代码对pwd和root进行了区别对待。

而这又源于审计代码本身的历史遗留问题与设计缺陷——它无法正确处理chroot环境。

pwd和root路径本质上是同一事物的两面,任何对它们进行如此差异化处理的代码都是*错误的*。

这个方案本质上是将审计模块的错误暴露给了非审计用户。

我对此极度反感。 …… [经过多轮方案推敲]

是的,以上论述非常粗略,我也没有亲自编写代码,可能听起来像疯子的胡言乱语。

我并未对此进行*深入*思考。只是看到这个补丁系列时感到一阵反胃,然后尝试思考'或许我们能换种方式解决',上述内容就是可能方案的粗略草案。"

Brauner随后回应称,他同样不欣赏这段代码的设计,认为其确实像临时补丁,并已将其从拉取请求中移除。

另一项引发Linus强烈反感的早期Linux 7.1拉取请求涉及RCU代码。该请求提议新增BOOTPARAM_RCU_STALL_PANIC配置选项,旨在默认触发RCU停滞时的内核恐慌。编译时若启用该选项,可将Kernel.panic_on_rcu_stall系统控件的默认值设为在RCU CPU停滞时触发恐慌/重启。其设计初衷是针对高可用性系统,要求在检测到CPU停滞时能自动恢复,无需用户在启动时配置该系统控件。Torvalds对此回应道: 

"否决。

见鬼,别再搞这些糟糕的设计了。

我已经强调过无数次:内核配置阶段可能是新手尝试自行编译内核时最大的痛点之一,我们*绝不应该用愚蠢的问题困扰用户*。

需要此功能的人完全可以通过系统控件或内核命令行参数实现,我们*绝不能因此恶化其他所有人的体验*。

我已移除这个令人反感的配置选项,并要明确告知各位:内核配置文件不是你们的私人游乐场——它们是我们鼓励*普通用户*参与内核开发的最直观接口,这些用户正是我们期望吸引来自行编译内核的群体。

所以各位:下次想要添加配置选项时,请深呼吸,审视那个配置文件,然后思考'或许我该先移除另一个无用选项'。

让我们致力于*改进*内核,而不是让它变得更糟。"

在后续讨论中还指出,通过"sysctl.Kernel.panic_on_rcu_stall=true"的启动参数形式,已能轻松实现相同的默认行为,完全可以在内核启动时以此形式设置系统控件默认值。

               03             
Nginx 1.30 发布,支持多路径 TCP、加密客户端问候等新特性             

Nginx 1.30 最新稳定版本发布。该版本整合了 Nginx 1.29.x 主线分支的所有更新,带来了多项新功能,例如多路径 TCP(MPTCP)支持。

上个月发布的 Nginx 1.29.7 已实现多路径 TCP 功能,使服务器能够通过单条数据连接同时利用多个网络路径,从而提升吞吐量并实现跨连接的无缝切换。

Nginx 1.30 稳定版还新增了对 HTTP 103 早期提示的支持,该功能可在收到服务器最终响应前就开始预加载 CSS 和 JavaScript 等资源。Chrome 等主流网页浏览器已支持早期提示功能。

此外,Nginx 1.30 还新增了后端 HTTP/2 支持、加密客户端问候(ECH)功能、上游服务的粘性会话支持,并将默认代理 HTTP 版本设置为启用 Keep-Alive 的 HTTP/1.1。

更多关于 Nginx 1.30 服务器更新的详细信息及下载资源可通过 GitHub 获取。

               04             
exFAT For Linux 7.1 助力减少文件碎片并修复多项问题

本次微软exFAT文件系统驱动实现的改进包括:引入FALLOC_FL_ALLOCATE_RANGE以帮助减少文件碎片,同时进行了多项优化与问题修复。

虽然本次exFAT的更新周期不算活跃,但包含以下关键内容:  

- 实现FALLOC_FL_ALLOCATE_RANGE功能,支持无需清零操作的簇预分配,有助于降低文件碎片化程度。  

- 为FAT链转换、位图分配和目录项查找新增统一的块预读辅助函数。  

- 通过缓存缓冲区头部优化exfat_chain_cont_cluster(),减少NO_FAT_CHAIN向FAT_CHAIN转换过程中的mark_buffer_dirty()调用及镜像开销。  

- 在evict_inode()中改用truncate_inode_pages_final(),防止回收过程中因影子条目触发BUG_ON。  

- 通过确保正确的位运算转换,修复目录项计算中的32位截断错误。  

- 修正sb->s_maxbytes的计算逻辑,使其准确反映给定簇大小下的最大可能卷容量,解决xfstests generic/213测试用例问题。  

- 引入exfat_cluster_walk()辅助函数,支持按指定步长遍历FAT链,兼容ALLOC_NO_FAT_CHAIN与ALLOC_FAT_CHAIN两种模式。  

- 新增exfat_chain_advance()辅助函数,用于推进exfat_chain结构并同步更新当前簇与剩余大小。  

- 清理无效赋值并修复Smatch静态检测警告。 完整补丁列表可通过已合入LinuxGit的拉取请求查看。

此外,Linux 7.1在文件系统方面的更新较为精简:XFS的合并未引入新功能,仅包含错误修复和代码重构。

// Source: Phoronix

最新文章

随机文章