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 过程中拥有"优先权",并且在确保设计可靠且能妥善解决实际问题方面存在其他障碍,那么具体的实现就会存在一些困难。

目前为止,大家对这种方法的意见还很不统一。现阶段能否设计出一种既能为主线所接受,又能满足汽车和更广泛的嵌入式/工业领域需求的适当解决方案,还有待观察。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/268371/linux-priority-based-shutdown

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。