双十一咋省钱?KeenTune助你业务资源省省省
The following article is from OpenAnolis龙蜥 Author 胡玉溪
第 13 个双十一如约而至,各位小伙伴们是不是已经斗志满满准备大买一场?剁手之前各位亲们先等一等,看一看哈。
刚在云栖大会龙蜥社区分会场官宣开源的智能全栈调优产品 KeenTune 就是这么一款能真实省钱的工具,具体能干啥?我们来一起回顾下龙蜥社区上的演讲内容。
KeenTune(轻豚)已在龙蜥社区建立 SIG 组,且在不久前官宣开源。相信本款智能全栈调优产品 KeenTune 会为你带来不一样的调优体验。本文分享人为 KeenTune(轻豚)SIG 负责人——胡玉溪。
KeenTune(轻豚)产品介绍
敏捷代表着它应该是足够聪明的。通过专家知识库和 AI 算法这两个引擎共同驱动,KeenTune 真正能代替人做一些事情,比如:管理参数之间的复杂关系、在高维空间找到最优参数组合、分析各参数对业务的影响程度等等。
敏捷也代表它是足够有效的。现在的单点或者局部的调优,调优效果都不怎么好,我们要做到全栈调优,要能覆盖到硬件、固件、软件的南北向各层,也要能覆盖到 CPU、内存、IO、网络等多个领域,这样的全栈调优对实际的业务场景才是真正有效的。 敏捷还代表它是轻盈的。KeenTune 有两个特点:轻量化和跨平台。轻量化上看,KeenTune 需要部署在业务环境上的只有一个 python agent,不到 1M 大小,依赖也只有一个简单的 tornado。跨平台上看,KeenTune 不止在阿里的 Anolis OS 上可以使用,在主流开源 Linux 上也都可以使用,目前已经适配过的包括:CentOS、Ubuntu、Debian等。
接到这个任务的时候,我大脑里会有这样纷杂的知识域,甚至比这个更加繁杂。说到全栈调优,从覆盖层次上看,就会涉及到刚才说的硬件、固件、软件,而软件会有内核、基础库、系统服务、运行时、以及再往上层的应用,这些都是具有可调优性的;从跨领域角度来讲,需要覆盖到 CPU、内存、IO、网络等等。要把这么多的知识统一起来是非常费劲的事,单纯的内核可调参数就在 3000 个以上,系统服务也会在 2000 个左右,如此大的范围内,我们如何求解这个问题?
如果是你,该找老板要时间来解决这个问题?半年、三个月还是一个月?事实上,我的老板只会给我一周。这一周时间我该做什么?跑路吗?毕竟还是要养家的,而且阿里有句话叫此时此刻非我莫属,别人做不了,我的团队为什么不做一下呢?
通过分析性能调优真正的难点在哪里,最后我们发现所有的困难归结为三个问题:
1、操作系统的软硬件配置过于繁杂。无论是应用内核参数、系统服务还是应用配置,都有成百上千的参数,而且参数之间相互,在调优的时候往往存在跷跷板现象,如何管理如此大量的领域知识,是非常困难的事情。
2、人力、时间成本高。做一次有效的全栈调优,往往需要把多个领域的专家集中起来进行一次1-3个月的集中攻关,在人力和时间成本上是非常大的代价。
3、专家知识难以固化复用。即使是我们在一个场景上把所有专家集中起来做了一次非常好的攻关,专家知识还是非常难以固化下来并在下个应用扩展使用起来,到了下一次调优场景,还是几乎要重头再来。
针对上述问题我们该如何求解呢?
如果专家知识非常难以固化,那我们为什么不建一个专家知识库平台来把专家知识固化起来呢? 如果我们的配置关系非常复杂,投入时间和人力非常高,那我们为什么不把 AI算法引入进来,让人工智能帮我们做一些事情。
二、如何解决了这些问题
基本的想法有了,我们来尝试做一个产品来实现,这就有了 KeenTune 项目。那么,我们进入第二部分,一起看看 KeenTune 是如何解决上述问题的。
KeenTune 有静态调优和动态调优两个过程:静态调优和动态调优。
静态调优:负责专家知识的固化和管理。一方面,把专家知识库固化起来,这样在新的场景,或者集群内的大量业务机器上,一键式把专家知识使用上;另一方面,能够把不同层次的大量可配置参数及其之间的关系管理起来。
动态调优:把 AI 引入进来,解决在高维空间找到最优参数组合的问题。人工非常难通过经验或者尝试在数以千计的参数空间中找到最优组合,而这是 AI 擅长的。通过敏感参数降维、Bayes 系列的参数搜索算法能够非常高效和有效的找到可用的最优参数组合。
动静态的协同调优,是 KeenTune 能够进行有效全栈调优的两个基本支柱。
大家可以看下现在 KeenTune 的架构,橙色部分是动态调优部分,黄色部分是静态调优部分。动态和静态都会有各自的专家知识库,细心的同学可能发现我们静态的调优知识库比动态的多一点,因为动态关注更多的是参数调优,所以是不包含硬件、固件管理,内核模块及系统服务等部分的。
动静态协同也是我们需要解决问题。大家可以思考一下这个问题:在线下一个小的集群里训练出来了一组非常好的结果,到了线上的大规模集群部署的时候,该如何快速运转起来?这个时候,需要把动态调优的结果固化起来,转移到静态专家知识库中进行扩散,KeenTune 提供了 dump 功能来做这件事。再来思考一个问题:静态调优专家知识库如果想放在特定环境上针对于细致调优?这时又需要把静态知识库转移到动态里去,所以 KeenTune 也提供了 generate 操作。动静态协同才能够确保 KeenTune 在实际业务场景上是有调优效果的。
下面,我们来具体了解下 KeenTune 的几个特点:
KeenTune 是全栈性能调优工具。从硬件、固件,到软件的内核、运行时、编译器,以及比较常用的应用,KeenTune都可以针对于它来做比较好的定制化调优。
多领域的算法模型。为了保证在各种环境上能够高效调优,不仅用到参数调优范畴里的算法,也引入到了敏感参数识别来进行降维实现效率和效果提升。同时,为了能够保证不停波动的环境上实现有效调优,引入高保真的算法来保证算法的有效性。另外,引入了多目标调优,保证在不同需求的场景上是有效果的。
算法可视化平台。这里也有个彩蛋:做算法开发的同学也可以用到 KeenTune,因为我们提供了可视化算法开发和运作平台,这也是后续希望能够和算法开发的同学能够共建的点。
跨平台。不仅能够非常好的支撑阿里自己的 OS,CentOS、Ubuntu、Debian等主流开源 OS 也都已经做过了适配,大家可以非常快速的在 X86、ARM 架构使用起来。
高度模块化,轻量化。KeenTune 是一个非常完整的模块化可分布式部署的产品,目前分成了四大组件:装在业务环境上的运行时 agent、管控工具、AI 算法库和 benchmark 管控工具。这些组件里,只有一个非常小的 agent 需要部署在业务环境上,其他比较重量级的模块都是可以卸载到非业务环境上,所以对于系统环境的侵占性会非常小,装上之后就能用。
希望大家在有性能调优需求的时候想到 KeenTune 产品。
三、目前做到了什么程度
在了解了 KeenTune 的能力和特点后,我们进入第三部分,一起看看 KeenTune 在内部的业务场景里能做到什么样的程度。
目前,无论是 VM 典型的业务压力还是容器场景下,KeenTune 在非常多的应用场景里的调优效果都达到了 30% 以上。开头提到的 MySQL 场景,我们已经可以实现通过静态的一键调优,在 X86 和 ARM 上达到性能提升 10 倍以上的效果。通过以上数据,还是能够体现出 KeenTune 在很多场景都有稳定而有效的调优能力。
另外,无论是在人力和时间成本节省上,还是调优有效性、高效性上,KeenTune 都是比较好的。
四、如何与我们一起做这个产品
通过以上的介绍,相信大家很想知道该如何获取和使用 KeenTune,那么我们一起进入最后一部分。
这里给出来一个可用的业务部署方式,刚才有提到模块化。从这个部署图里来看,如果只是静态调优,那么只需要部署左侧的两个模块就可以;所有的 AI 这些东西用起来的话,就是四个模块一起来用。你可以把它想象成一个乐高,按需所取,按照自己的使用方式来真正使用 KeenTune。
现在的 KeenTune 已经正式开源,大家可以通过 KeenTune 的官网和龙蜥社区(OpenAnolis)获取源码,图片中是 KeenTune(轻豚)交流群,大家可以扫码进群和我们互动。谢谢大家!
KeenTune(轻豚)是一款AI算法与专家知识库双轮驱动的操作系统全栈式智能优化产品,为主流的操作系统提供轻量化、跨平台的一键式性能调优,让应用在智能定制的运行环境发挥最优性能。
作者:胡玉溪,KeenTune(轻豚)SIG负责人。欢迎更多开发者加入KeenTune(轻豚) SIG:
网址:https://openanolis.cn/sig/KeenTune
邮件列表:keentune@lists.openanolis.cn
点击“阅读原文”直达KeenTune(轻豚) SIG