KeenTune—智能化调优&容量评估

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 阿里QA导读:亲爱的小伙伴们,还记得上个月圆满落幕的TICA2022大会吗?应大家要求,我们将为大家深入解读一些Topic。今天的文章来自TICA大数据&智能化分会场,读完后,你对KeenTune(轻豚)这款优秀的智能优化产品会有更深入的了解。

一、背景介绍

I 性能调优&容量评估中遇到的问题


在业务的性能调优中,我们往往会遇到下面三个方面的问题:

  1. 操作系统的软硬件配置过于繁杂。无论是应用内核参数、系统服务还是应用配置,都有成百上千的参数,而且参数之间相互,在调优的时候往往存在跷跷板现象,如何管理如此大量的领域知识,是非常困难的事情。
  2. 人力、时间成本高。做一次有效的全栈调优,往往需要把多个领域的专家集中起来进行一次1-3个月的集中攻关,在人力和时间成本上是非常大的代价。
  3. 专家知识难以固化复用。即使是我们在一个场景上把所有专家集中起来做了一次非常好的攻关,专家知识还是非常难以固化下来并在下个应用扩展使用起来,到了下一次调优场景,还是几乎要重头再来。
    

针对上述问题我们该如何求解呢?

  • 如果专家知识非常难以固化,那我们为什么不建一个专家知识库平台来把专家知识固化起来呢?
  • 如果我们的配置关系非常复杂,投入时间和人力非常高,那我们为什么不把AI算法引入进来,让人工智能帮我们做一些事情。
  • image.png
  • 在容量评估测试中,我们也会遇到类似的问题:Benchmark的参数众多,哪些参数是需要使用的,哪些其实无关紧要?需要使用的参数,如何设置它的值才能保证给出的压力是足够的,从而不会因为压力不足而无法验证到物理机/系统真实的容量呢?

I 可行的解决途径——KeenTune的缘起


从上个部分中,我们其实可以看出求解的方式,一个是需要专家知识的固化平台,一个是可以考虑引入AI算法来解决人工无法有效探索参数取值空间的问题。这也就是KeenTune的起源,其主要完成两大部分的功能,一方面将人工的经验固化下来,形成能够在业务上一键调优的专家知识库——也就是静态调优;另一方面,在有了需要调优的参数及其取值空间的概要知识的情况下,可以使用AI算法来进行最优取值搜索。



这是KeenTune产品开始研发时最朴素的想法,后面也因为业务的实际需要,引入了参数可解释性方向的算法,来识别出来哪些参数对结果真实有影响,其最优取值范围是什么,从而指导进行人工解释和进一步研究;同时,也引入了高保真方向的算法来规避Benchmark/业务环境的波动对调优效果的准确性带来的影响;另外,也针对“在不增加时延的情况下,提升吞吐量”这样的带控制条件的实际调优需求,引入了多目标调优方向的算法。

image.png

请注意,KeenTune提供的动静态协同调优的能力,可以协助实际业务解决如下问题:


  1. POC小集群调优到线上大规模集群调优,比如:POC小集群动态调优完后,调优经验固化成静态调优,直接大规模部署到线上;
  2. 相似场景的精细化调优,比如:调优过mysql后,使用mysql的固化出的静态专家知识库,转化成动态进行精细化调优。

在算法创新的同时,基于阿里业务自身的特点,KeenTune采用了高度模块化的分布式部署的方式,在业务端只需要部署轻量的agent(keentune-target),管控调度模块keentuned,算法模块keentune-brain,Benchmark管控模块keentune-bench,前端管控与算法可视化模块keentune-ui都是可以部署在网络可连通的其他环境上,因此,对业务的适配度非常高。

image.png

二、创新点


KeenTune项目目前已经提交13篇专利,其中9篇已提交专利局;另外,还有3篇正在提交流程中。A类论文发表1篇(FSE2022:KeenTune: Inteligent Parameter Interpretability and Tuning Tool for Linux System),1篇在投A类论文。

本章节的各小节中,后续也会简单介绍一下KeenTune的创新点。

I 多领域算法的集成


KeenTune主要使用的算法为Hyper Parameter Tuning方向,目标是在参数空间上寻找最优组合。不过,在实际应用落地中,发现在实际应用中会存在很多问题:


  1. 在高维空间上,无论是传统的Bayes,还是更新的HORD、EPTE等算法,都无法达到工程需求的快速收敛(比如:100个连续/分散取值的参数,在100轮达成收敛目标),而一般Benchmark的执行时间都会在几分钟甚至几小时,每一轮执行代价都非常大,因此,降低轮次成为首要问题。
  2. 非单一目标调优,在实际中,往往是“不增加时延的情况下提升吞吐”、“不仅avg_latency降低,还要求99_latency、95_latency都降低”
  3. 无论是Benchmark还是业务环境,都存在抖动的问题,如何识别出环境抖动并且尽量消除,是个问题。

为应对这些问题,KeenTune集成了多个领域的算法来使参数调优在实际工程中能够产生效果:

  • 敏感参数可解释性方向算法:从众多的参数中识别出真正对结果有影响的TOP参数,并且能够给出其最优取值的范围,给出参考。一方面,可以成为参数调优算法的输入,大大降低参数空间,从而实现快速找到优化点的目标。另一方面,也可以为人工提炼专家静态知识库并进行领域分析提供依据。
  • 多目标调优算法:KeenTune自研的带有可控制条件的多目标调优,有效地解决了工程中遇到的各种多个评价指标同时调优,甚至是带有强制限制条件的调优问题。
  • 高保真算法:能够通过评估环境的波动情况,调整每轮运行的次数,从而保证调优效果。另外,结合early stop机制,能够智能化控制实际的运行效率,从而大大提升对于每次调优的收敛效率。
  • image.png

I 自研参数调优算法BGCS


为了实现高效可扩展的参数调优算法,BGCS参考了HORD框架进行了改进,使用CNN/MLP模型取代RBF模型作为代理模型,以提高代理模型预测准确性。


在HORD算法的DYCORS过程中,通过两个变量φδ来控制变异的过程,前者控制的是给坐标的某个维度进行变异的概率,后者决定了增加变异的幅度。在调优过程中,φ随着调优的进行递减,而δ根据每一轮是否发现了新的最优参数进行动态调整。


虽然有两个变量干预参数的变异,但HORD算法的参数变异过程整体来说是随机的,在这个过程中会产生大量无意义的参数配置。我们针对这个过程加入性能梯度对参数编译的过程进行指导,避免盲目随机地生成大量参数配置。同时使用梯度对参数维度进行排序,优先针对性能梯度较高的参数进行变异,同时保持性能梯度低参数的取值,降低代理模型预测误差的干扰。

I 自研参数可解释性算法XSen


为了达成算法能够正确的找到真正对结果产生影响的参数,PIA将多种不同的敏感参数领域算法进行融合,根据实际情况使用。下图中列出了PIA的框架,主要是分为analyzer和aggregator。


Analyzer分为mutual information analyzer、linear analyzer、non-linear analyzer三种。Non-linear analyzer分为两种:DNN模型、树形模型,linear analyzer使用线性模型。在工程验证中,高维度non-linear analyzer的准确度更高,但是运行时间较久;linear analyzer运行时间在1s内,不过准确度相对不高。mutual information analyzer捕捉线性和非线性信息,通过互信息识别来识别敏感参数。


三、应用实践


I KeenTune在Linux全栈性能调优中的实践


KeenTune不仅在算法层面上实现了对kernel、environment configuration、runtime、compiler、application的多个层级的参数的动态算法调优,还积累了包括多层级的人工经验。目前,在云场景、云原生场景、编译器场景等多个合作项目中达成了调优目标,并且在社区中与统信、中兴、intel等SIG伙伴进行相关共建。

image.png

1. 专家一键式调优 –MySQL的竞分打榜


项目背景

某商业打榜

调优目标

AnolisOS提供自研性能调优工具能力,主流应用(MySQL)调优能力不低于友商

调优效果

MySQL的TPCC跑分在一键式专家调优后,相比初始安装性能提升10倍+

image.png

2. 敏感参数识别 –Nginx业务的参数可解释性


项目背景

调优参数多导致参数空间巨大,进而导致参数调优算法收敛慢(100参数收敛需要2000轮以上)

调优目标

116个联合参数(内核+ Nginx) 中对结果影响大的参数,目标20个以内

识别效果

TOP10参数对Nginx吞吐与时延的影响已经超过90%,降维后调优效果和全量保持一致


image.png

3. 智能参数调优 – 云原生业务Ingress-Nginx的全栈调优


项目背景

调优参数多导致参数空间巨大,进而导致参数调优算法收敛慢(100参数收敛需要500轮以上)

调优目标

  • 四个场景完整覆盖:HTTP短链接,HTTP长链接,HTTPs短链接,HTTPs长链接
  • 多领域参数协同调优:Sysctl,Nginx
  • 两个指标统一优化:Throughput提升的同时Latency下降

调优效果

  • 四个场景均达成了throughput提升的同时latency下降,有些场景最好效果达到40%+
  • 达成内核到应用的全栈调优,取得良好效果

image.png

4. 智能参数调优 – 云业务gcc编译参数调优

项目背景

gcc编译参数对应用性能影响较大,人工定义配置比较困难

调优目标

对云业务上TOP3的应用进行编译参数优化

调优效果

TOP3应用的主要指标均达成调优目标(目标1-3%)

image.png

I KeenTune在容量评估方向的实践


容量评估一直一直以来的痛点,就是Benchmark工具,大家都知道是什么,怎么用,不过却不一定能够用对。现在集团内的使用方式基本上还是人工定义性能测试用例,用这个结果直接评估是否正确,这就对Benchmark使用人员有着非常高的要求,怎么创建模型,定义Benchmark的各个参数是很有讲究的。往往存在直接从网上找到使用的命令行方式,修改修改参数,跑出来个结果就开始做分析。可是这样子就会有几个问题:


  1. 不少Benchmark的参数都非常多,比如:sysbench,那么,哪些参数是我们需要关注并且使用的呢?
  2. 在不同规格的机器上,都使用相同一套参数的测试用例,是不是不合适?换个说法,是否能够提供足够的压力用来提供容量评估?
  3. Benchmark本身的资源消耗怎样?会不会因为参数设置不当,或者环境选用不当,导致Benchmark自己占掉了所有资源而无法给出足够压力?这一点在wrk上非常明显。

为了解决这些问题,KeenTune的参数调优算法登场了,开始在看似不属于自己的领域,进行了一些还挺有效果的实践。

1. 基础Benchmark的压力管控 – iperf3网络带宽测试

项目背景

在与私有云团队进行容量评估的需求分析时,发现使用人工用例进行容量评估,往往存在因为Benchmark压力不足导致无法测出真实容量

压控目标

通过动态控压,评测出硬件和云上环境的真实容量

压控效果

  • 相比人工测试用例,评测出更真实的网络容量,高出10%+
  • image.png
  • 管控更多工具参数,并且能够提供最佳效果取值范围

说明:左边的两个图分别是iperf3进行接收端和发送端容量评估时,iperf3中参数真正对结果有效果的3个参数,右边的两列图,分别给出来了接收端和发送端在当前规格机器中这三个敏感参数的取值推荐。


image.png

2. 应用的调优、压力双控 – MySQL的调优与变压


项目背景:

进行应用的调优时,需要解决两部分问题:(1)Benchmark压力不足;(2)应用环境及自身调优

压控目标:

同时管控MySQL与Benchmark的参数,保证压力控制的状况下进行MySQL调优

image.png

四、价值体现


I 开源共建

KeenTune在2021年10月开源以来,成为OpenAnolis社区的标杆SIG,对整个开源生态有着重要的贡献。

  • 集团重点开源项目
  • 2021云栖大会官宣开源
  • 龙蜥社区标杆SIG
  • SIG深度合作单位:统信、中兴、intel……
  • OS2ATC、TICA等大会重点宣传项目
  • 龙蜥社区公众号等多次重点推荐项目

KeenTune的官方网站可以通过以下途径访问,非常欢迎感兴趣的同学加入:

I 商业落地

KeenTune已经在阿里云多个商业产品中落地:

  • 阿里云ECS购买页的“场景加速”

image.png

阿里云ACK大客户解决方案

Dragonwell的SPECjbb商业打榜

……

后续KeenTune也将持续服务开源社区和阿里云商业产品,助力AnolisOS/Alibaba Cloud Linux3成为稳定高效的国产操作系统。



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
弹性计算 运维 自然语言处理
开发者评测|操作系统智能助手OS Copilot
OS Copilot 是阿里云针对Linux操作系统推出的一款智能助手,它利用大模型技术提供自然语言问答、辅助命令执行和系统运维调优等功能,旨在提高Alibaba Cloud Linux的使用效率。OS Copilot在新人上手时并不简单,文档指引不够清晰,存在一些步骤无法顺利执行的问题,比如环境配置和命令执行。此外,产品目前仅支持Alibaba Cloud Linux,限制了其应用范围。虽然OS Copilot在一些基本功能上表现尚可,如解答问题和编写简单脚本,但在处理复杂任务或自动化运维时显得不足。总体而言,OS Copilot对新手和阿里云环境有一定的帮助,但功能和使用体验仍有改进空间。
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
开发者
EasyYitian软件架构迁移工具如何使用
EasyYitian软件架构迁移工具如何使用
340 0
|
负载均衡 算法 Linux
深入理解Linux内核进程CPU负载均衡机制(上)
深入理解Linux内核进程CPU负载均衡机制
|
关系型数据库 MySQL PostgreSQL
性能优化特性之:code_hugepage - 代码大页
本文介绍了倚天实例上的内存优化特性:代码段大页,并从优化原理、使用方法、性能收益进行详细阐述。
|
存储 缓存 算法
ICDE2024 |VDTuner:向量数据库自动调优技术
在CodeFuse接入实际业务的过程中,大模型的推理成本以及生成内容的准确性是产品规模落地的两个核心考量因素。为了降低推理成本,我们研发了CodeFuse-ModelCache语义缓存加速功能,通过引入Cache机制,缓存已经计算的结果,当接收到类似请求后直接提取缓存结果返回给用户。另一方面,为了提升代码生成的准确度,我们引入了few shot机制,在输入大模型之前拼接一些类似的代码片段,帮助大模型更好的理解希望生成的目标代码。上述两个核心功能的实现都依赖于向量数据库(Vector Data Management Systems, VDMS)存储并检索相似的请求或者代码片段。
502 1
|
弹性计算 Linux 编译器
CoreBolt——在倚天上基于 Coresight 做 BOLT 优化
CoreBolt 是一种倚天平台的性能优化解决方案。CoreBolt 通过 Coresight 在程序运行时采集程序运行信息,对程序的热代码和冷代码进行区分,并通过 BOLT 对程序进行代码段重排,从而提升程序代码的局部性,减少程序运行过程中由 CPU iCache miss 和 iTLB miss 引发的性能下降,提升程序的整体性能。
1418 6
|
SQL 弹性计算 分布式计算
阿里云李腾飞:基于ECS倚天实例的大数据加速最佳实践
2023年9月14日,系列课程第八节《基于ECS倚天实例的大数据加速最佳实践》正式播出,阿里云弹性计算大数据优化负责人李腾飞主讲,内容涵盖倚天大数据场景迁移适配、倚天大数据性能加速实践和倚天大数据场景落地实践。
阿里云李腾飞:基于ECS倚天实例的大数据加速最佳实践