谷歌方面正在致力于改进由于太多的 NVMe 驱动器,而导致的 Linux 服务器重新启动时间太长问题。缘于在于该公司的一些多驱动器服务器可能需要超过一分钟的时间才能让 Linux 内核执行其 shutdown 任务,而谷歌的这项改进工作也可能使其他用户受益。
我们的一些机器配置了许多 NVMe 设备,并且已针对严格的 shutdown 时间要求进行了验证。每个 NVMe 设备插入系统,通常需要大约 4.5 秒来 shutdown。一个具有 16 个此类 NVMe 设备的系统将需要大约 80 秒来 shutdown 并重新启动。
目前在总线级定义的 shutdown API 被定义为同步的。因此,系统中的设备越多,shutdown 所需时间就越长。这个 shutdown 时间极大地拖慢了机器的重启时间。
谷歌工程师在提交的补丁集中提出了一个总线级别的异步 shutdown 接口,修改了核心驱动程序、设备 shutdown routine 以利用新接口;同时保持与现有同步实现的向后兼容性,并利用新接口让所有基于 PCI-E 的设备在必要时使用异步接口语义。PCI-E 级别的实现也以向后兼容的方式工作,以允许现有设备实现与当前的同步语义一起工作。
借助异步 shutdown 接口并调整 NVMe 驱动程序以使用它,其重启以及最终的服务器 down time 可以轻松减少一分钟。
这个拟议的异步 shutdown 接口在目前的形式下只有约 100 行新代码,且谷歌只展示了 NVMe 设备利用这个异步 shutdown 接口的一个示例实现。科技网站 Phoronix 指出,随着现代高性能 Linux 服务器继续添加更多的 NVMe 驱动器和其他 PCIe 设备,Linux 内核的同步 shutdown 接口可能意味着额外的 downtime,希望谷歌提交的这些补丁能在短时间内设法向前推进,并以主线的方式调整更多的驱动程序来使用它。
更多详情可查看邮件列表。
本文转自OSCHINA
本文标题:谷歌解决 NVMe 驱动器太多导致 Linux 服务器重启太慢问题
本文地址:https://www.oschina.net/news/189047/google-linux-nvme