Meta(原 Facebook)工程师在本周举办的 Linux Plumbers 大会上分享了他们如何使用 Linux 内核的 kernel live-patching (KLP) 基础设施。
据介绍,Meta 除了使用内核自带的 KLP,还选择了 Red Hat 的 Kpatch 方案。他们通过 Kpatch 为“数百万台 Linux 服务器”的内核进行热补丁更新。热补丁还可以在服务器运行期间对内核功能进行修复。
之所以选择 KLP,Meta 称主要是为了减少内核更新时的服务器停机时间——以应对永无止境的安全更新。毕竟完全重启服务器和冗长的 POST 时间会带来相当大的问题,而通过热补丁,当一切按计划进行时,服务器可以近乎无缝地迁移到新内核。
Meta 工程师在使用 Linux 内核的热补丁功能过程中,发现了一些需要克服的追踪问题,也遇到了性能问题。具体的性能问题是,在进行热补丁期间会有 1~2 秒出现问题,比如更高的 I/O 和 fsync 延迟,以及更高的 TCP 重传率。
Meta 工程师还提到,他们正在积极解决一些边界问题,以更好地处理通过 Clang 编译并使用 PGO 进行优化的内核构建等情况,以及其他提高稳健性的项目。
详细内容查看 PPT 或演讲视频。