字节跳动:利用 AI 自动调优 Linux 内核参数

在近日举办的Linux Plumbers Conference 上提出,字节跳动Linux 内核工程师 Cong Wang发表了一个“Linux Kernel Autotuning”的主题演讲,提议可以使用人工智能(AI)和机器学习(ML)来调整 Linux 内核,从而为特定工作负载带来效果最优化。

他指出,现在的 Linux 内核为用户提供了数以千计的参数,因此想要通过调整参数以获得最佳性能已经变得越来越困难。大多数情况下,不同的工作负载需要对不同的 Linux 内核参数集进行不同的调整。

而在像字节跳动这样的大型数据中心,要针对数百种不同的工作负载手动调整 Linux 内核参数几乎是不可能的。因此字节跳动提出了一个解决方案,尝试以最小的工程投入实现整个 Linux 内核参数调整过程的自动化。

我们还注意到,内存管理是 Linux 内核子系统中对自动调优的需求较多的一个。借助贝叶斯优化等机器学习算法,我们相信自动调优甚至可以击败大多数 Linux 内核工程师。在本次演讲中,我们将介绍 Linux 内核自动调整解决方案的工作原理以及其设计和架构的概述。我们还将研究 Linux 内核内存管理的一些特定案例,以展示我们的结果作为概念验证。

对于未来的工作,我们希望利用这个机会提出并讨论一个内核内机器学习框架,该框架可以进一步推动这个项目,在内核空间中完全优化 Linux 内核快速路径。

Wang 打趣称,此举并不是为了“让 Linux 内核工程师失业”,而是旨在将人类工程师从调整每个单独工作负载的性能的工作中解放出来,同时利用历史数据做出更好的决策,找到比目前使用试错和启发式方法得出的解决方案更好的解决方案。

自动调整系统旨在根据特定的工作负载和硬件配置,自动调整 Linux 内核的内部设置。这种动态调整可确保最佳性能,解决 Linux 社区长期以来面临的一个针对特定场景手动调整内核的难题。

虽然目前还处于早期阶段,但字节方面表示已经取得了一些进展。例如,通过将 DAMON(一个用于内存访问监控和优化的 Linux 内核子系统)与该框架结合使用,能够为 MySQL 应用程序找到最佳方案。为此,他们运行了不同的 DAMON 方案并对其性能进行了比较,发现可以将应用程序的内存使用量减少 30%。

在另一项案例中,该公司通过优化调整 16 个内核 sysctl 参数,优化了 NGINX 服务器上的 HTTP 网络延迟。在最佳情况下,与专家手动调整相比,ML 调整使 NGNIX 网络性能提升了 12%。

字节并未宣称其 AI/ML 方法适用于所有 Linux 调整工作,但工程师也表示:“虽然存在局限性,但我们相信内核机器学习不仅是可能的,而且是必要的。”

科技媒体 ZDNet 的编辑对字节此举表达了认可,并认为其可能改变 Linux 应用程序的游戏规则。“通过简化内核优化,将使 Linux 对更广泛的用户和应用程序来说更易用、更高效。特别是,我看到自动调整系统几乎可以提升所有服务器、云计算和数据中心应用的性能。”