Linux 内核开发人员争论基于优先级的 Shutdown 支持
Pengutronix 嵌入式 Linux 咨询公司的 Oleksij Rempel 上周五发布了一系列补丁,提出了针对驱动程序/硬件的基于优先级的 shutdown 支持。
主要目的是在主线 Linux 内核提供优先关闭特定设备的功能,“这在 power loss 等情况下尤为重要,如果处理不当,可能会造成硬件损坏”。
其内容重点在于,在意外/即时 shutdown 事件(例如电源/电压下降或完全断电)期间正确关闭关键设备。作为补丁系列的一部分,Oleksij Rempel 还提出在 shutdown 阶段将 (e)MMC 存储设备设置为更高优先级,以帮助确保数据完整性/损坏。
Oleksij Rempel 的这一想法引发了 Linux 内核开发人员间的激烈讨论,并形成了两极分化的看法。Greg Kroah-Hartman 首先对这种基于优先级的 shutdown 支持提出了质疑。他指出,这一做法会导致驱动程序和子系统之间出现优先级的争夺:
每个驱动程序和子系统都坚持认为自己是最重要的!
总之,从长远来看,这样做会带来很多问题,这些硬件有什么特别之处能使得其不可以按照现有顺序 shutdown,而必须比其他人"优先"?这样做究竟是为了防止什么,哪些设备需要这样做?
最重要的是,在过去的 20 多年中,有什么变化导致突然需要这种新功能,其他操作系统是如何处理的?
观点双方就主线 Linux 内核是否应该具有这样的功能,以有效解决有问题的硬件设计做出了很多讨论。最后事实证明,一些用于汽车行业的外层 Linux 内核版本已经提供了这种优先 shutdown 支持。Oleksij Rempel 将这一需求总结为:
它能防止硬件损坏。在典型的汽车欠压测试中,通常可以在 Y 个欠压周期内重现 X 个损坏的 eMMC 或 NAND(我现在没有确切的数字)。即使在人工测试中出现的数量不是很多(有时一个月的测试中就会出现一个损坏的设备),但现场的回报率也很高,足以让我们关心这个问题的软件解决方案。
同样的问题不仅出现在汽车设备上,也出现在工业或农业设备上。换句话说,这个问题非常重要,必须要有某种解决方案。
对此,Greg 则用反问的语气调侃称,“这么说的话,硬件试图依靠软件来防止同一硬件遭到破坏?硬件设计师肯定没那么疯狂吧?”
科技网站 Phoronix 评论称,从较高层次上来看,如果设备/驱动程序有充分的理由希望优先为设备 shutdown 做好准备,例如可以防止数据丢失或获得其他重大优势,那么这种基于优先级的 shutdown 支持似乎没有问题。但在实践中,如果有多个驱动程序声称在 shutdown 过程中拥有"优先权",并且在确保设计可靠且能妥善解决实际问题方面存在其他障碍,那么具体的实现就会存在一些困难。
目前为止,大家对这种方法的意见还很不统一。现阶段能否设计出一种既能为主线所接受,又能满足汽车和更广泛的嵌入式/工业领域需求的适当解决方案,还有待观察。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
feilong 4.0.4 发布了,让 Java 开发更简便的工具库
feilong 4.0.4 发布了,让Java开发更简便的工具库 让你从大量重复的底层代码中脱身,提高开发效率; 让你的代码更简炼,易写、易读、易于维护; 文档地址:http://feilong-core.mydoc.io/ maven 依赖配置: <dependency> <groupId>com.github.ifeilong</groupId> <artifactId>feilong</artifactId> <version>4.0.4</version> </dependency> Gradle 依赖配置: com.github.ifeilong:feilong:4.0.4 本次升级共有2处变更, 具体参见4.0.4 milestone 🍑feilong-core #637✨ loghelper 添加一个已经执行了多长时间 [enhancement] 效果 进度: [6/7] 85.71% ,perUseTimes: 2秒5毫秒 ,已经执行时间(elaps...
- 下一篇
云原生周刊:Kubernetes 1.29 中的删除、弃用和主要更改
开源项目推荐 Orphaned ConfigMaps 该版本库包含一个脚本,用于识别 Kubernetes 命名空间中的孤立的配置映射。孤立的配置映射是指那些未被命名空间中的任何活动 Pod 或容器引用的配置映射。 Kubernetes Multi Cooker 该项目包含一个小型 Kubernetes 控制器,用于监视每个节点的 CPU 压力;当超过某个阈值时,节点将被污染(这样就不会在已经超载的节点上调度额外的工作负载),最后控制器将开始从该节点驱逐 Pod。 Reflector Reflector 是一个 Kubernetes 插件,旨在监视资源(秘密和配置映射)的更改并反映相同或其他命名空间中镜像资源的更改。 文章推荐 Kubernetes 1.29 中的删除、弃用和主要更改 和其他每次发布一样,Kubernetes v1.29 将弃用和移除一些特性。一贯以来生成高质量发布版本的能力是开发周期稳健和社区健康的证明。本文列举即将发布的 Kubernetes 1.29 中的一些弃用和移除事项。 Kubernetes 的 5 大存储提供商工具 这篇文章介绍了 Kubernetes 的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6