自从文件系统 Bcachefs 进入 Linux 6.7 内核的上游以来,运行一直很顺利。然而,当Bcachefs 的功能更新提交到 Linux 6.9 合并时,Linus Torvalds 表示对其中一些提议的代码并不满意。
原文链接:https://www.phoronix.com/news/Linux-6.9-Bcachefs-Attempt
未经允许,禁止转载!
作者 | Michael Larabel 译者 | 弯月
责编 | 夏萌
Linux 6.9 的 Bcachefs 更新:
子卷子B树:提供一个用户空间接口以遍历子卷(该功能后续提供)。
目录结构检查的大量改进。
改进了日志流水线,大幅提升了高 iodepth 写工作负载下的性能。
改进了丢弃路径:丢弃路径更高效,不再不必要地刷新日志。
缓冲写路径现在可以避免获取 inode 锁。
提取出各种库代码以供 XFS 使用:时间统计、均值和方差、动态数组、eytzinger、thread_with_file。
新的内存管理助手:memalloc_flags_{save|restore}
mempool 现在可以使用 kvmalloc 内存池
然而,令 Linus Torvalds 感到不满的代码是将 Bcachefs 代码中的一些元素移到某种库的代码中,以便其他文件系统可以轻松地重复使用,而 XFS 就是可能会重用某些Bcachefs函数的文件系统之一。
Linus Torvalds 对 Bcachefs 的拉取请求做出了如下回应:
我看了一下“让随机的 bcachefs 代码成为库函数”,我觉得毫无意义,所以这意味着没有进一步的解释我不会拉取这些代码(老实说,我认为即便有解释也不行)。
在没有说明的情况下,“stdio_redirect_printf()”和 darray_char 就是一些可怕的接口。这些接口非常糟糕。
请将这些保留在您自己的代码中,不要试图让使其成为通用库。
如果你十分想将它作为库,则需要:
更详细的说明
更合理的命名,减少毫无意义的接口(“DARRAY()”)。
另外,找到另一个文件系统来共享这种代码并不足以让它成为一个合理的接口和合理的命名。
最大的问题在于数学部分。
我们早就讨论过“均值和方差”。当时就说过这是个错误,现在依然是。
你没有解释为什么不能使用简单一万倍的 MAD(中位数绝对偏差),为什么非要使用方差。
这个糟糕的决定直接导致你使用了过度复杂的 128 位数学,毫无意义。
我当时就说过这是过度设计,而且在我看来,除了一些类型名称的细节之外,绝对没有发生任何变化。
你可以将其作为仅适用于 bcachefs 的代码,我不介意。
但如今你正在试图将这些垃圾提交到其他人也会使用的通用库,那么我会非常介意过度设计的接口。
要是没有这些可怕的设计, time_stats 的名字和接口至少还是合理的。
在经过一番讨论后,Torvalds 补充道:
加权版本的代码实际上没有变化。
方差值不同,但中位数绝对偏差和标准差之间的差异实际上只是一个常数因子(对于不同的分布来说,这个常数因子会不同,但那又怎样?任何特定的情况都会有特定的分布)。
为什么一个常数因子会对指数加权产生影响呢?
不管怎么说,你大可以将代码保留在 bcachefs 中。
也许 XFS 甚至想要复制那段代码。但我不关心,我觉得很愚蠢,但这是文件系统的选择。
但如果你想将其作为一个通用内核库,那就需要合理的代码。不要为了一个随机的统计元素而进行 64 位平方根和 128 位除法运算。
就目前而言,由于Bcachefs提议的通用库代码,Linus Torvalds 不接受此次拉取请求。时下,修改后的拉取请求已被合并到 Linux 6.9 中,但不包括库代码。
推荐阅读:▶史上最大开源LLM,参数高达3140亿!马斯克如约开源Grok,10小时狂揽10000颗Star
▶拥有 17 年经验的硕士码农,到了 43 岁连面试机会都没有……
▶纵览机器学习前生今世,万字整理谷歌首席科学家 Jeff Dean 一小时演讲
4 月 25 ~ 26 日,由 CSDN 和高端 IT 咨询和教育平台 Boolan 联合主办的「全球机器学习技术大会」将在上海环球港凯悦酒店举行,特邀近 50 位技术领袖和行业应用专家,与 1000+ 来自电商、金融、汽车、智能制造、通信、工业互联网、医疗、教育等众多行业的精英参会听众,共同探讨人工智能领域的前沿发展和行业最佳实践。欢迎所有开发者朋友访问官网 http://ml-summit.org、点击「阅读原文」或扫码进一步了解详情。