Linux 适合大多数工作,但要让它正常工作需要内核调整,而这绝非易事。字节跳动提出了一项让这一切变得更容易的提案。
使用人工智能和机器学习根据特定的工作负载和硬件配置自动调整 Linux 内核以获得最佳性能。
在 Linux 管道工大会(Linux Plumbers Conference)上,这个仅限顶级 Linux 内核开发人员参加的受邀会议上,字节跳动 Linux 内核工程师 Cong Wang 提议我们使用人工智能 (AI) 和 机器学习 (ML) 来调整 Linux 内核,以实现最佳性能。特定工作负载的最大结果。
一般来说,Linux 内核可以很好地完成大多数任务。但是,为了在特定工作中充分利用它,您必须通过设置其参数来对其进行微调,以获得最佳结果。这种方法只有一个小问题。有数千个参数。即使对于 Linux 专家来说,调整它们以获得最佳性能也是一项漫长而艰巨的工作。当然,不同的工作负载需要对不同的 Linux 内核参数集进行不同的调整。因此,正如 Wang 所说,“在像字节跳动这样的大型数据中心,为数百种不同的工作负载手动调整 Linux 内核参数几乎是不可能的。”
系统管理接口工具 (SMIT)、Sysctl和TuneD等工具可以提供帮助。但它们只是使您能够更轻松地进行手动内核调整更改。还有一些“智能”程序,例如红帽的BayOp,专门使用ML来优化网络应用效率,但它不是通用的AI/ML程序;它适用于特定类型的 Linux 调优。
字节跳动正在进行的工作是首次尝试以最少的工程工作实现整个 Linux 内核参数调优过程的自动化。具体来说,字节跳动正在致力于调整 Linux 内存管理。字节跳动发现,借助贝叶斯优化等机器学习算法,自动调优甚至可以击败大多数 Linux 内核工程师。
通过使用DAMON(一个用于内存访问监控和优化的 Linux 内核子系统)和该框架,他们能够为MySQL应用程序找到最佳方案。它通过运行不同的 DAMON 方案并比较它们的性能来做到这一点。他们发现可以将应用程序的内存使用量减少 30%。对于大规模应用程序来说,这是真正的节省。
在另一个案例中,字节跳动能够通过优化 16 个内核 sysctl 参数的调整来优化NGINX服务器上的 HTTP 网络延迟。在最佳情况下,ML 调优使 NGNIX 网络性能比专家手动调优提高了 12%。这又是一个显着的改进。
网友评论:
与 Ottertune 进行了比较:Ottertune是卡内基梅隆大学的一款工具,可以自动调整 MySQL 和 PostgreSQL 的配置。从 JVM 的角度思考这个问题,您可以调整很多设置,这些设置可能会对性能产生巨大影响,具体取决于您的工作负载,因此自动调整似乎具有一定的价值。主要的困难(从我可能天真的角度来看)是找出正确的反馈循环。