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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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成为稳定高效的国产操作系统。



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
机器学习/深度学习 算法 数据挖掘
利用机器学习优化数据中心能效的策略与实践
【5月更文挑战第13天】 在数据中心管理和运营的众多挑战中,能源效率优化是降低运营成本和减少环境影响的关键因素。本文旨在探讨如何应用机器学习技术来提高数据中心的能效,通过智能化的数据分析和资源管理达到节能的目的。与传统的摘要不同,本文将直接深入探讨所采用的技术手段、实施步骤以及预期效果,为读者提供一种新颖的视角。
72 4
|
7月前
|
机器学习/深度学习 数据挖掘 物联网
【专栏】机器学习如何通过预测性维护、负载预测、动态冷却管理和能源效率优化提升数据中心能效
【4月更文挑战第27天】随着信息技术发展,数据中心能耗问题日益突出,占全球电力消耗一定比例。为提高能效,业界探索利用机器学习进行优化。本文讨论了机器学习如何通过预测性维护、负载预测、动态冷却管理和能源效率优化提升数据中心能效。然而,数据质量、模型解释性和规模化扩展是当前挑战。未来,随着技术进步和物联网发展,数据中心能效管理将更智能自动化,机器学习将在实现绿色高效发展中发挥关键作用。
126 5
|
5月前
|
机器学习/深度学习 数据采集 运维
智能化运维:利用机器学习优化系统性能
在当今快速发展的信息技术时代,传统的运维方式已难以满足日益增长的业务需求和复杂性。本文将探讨如何通过机器学习技术来提升运维效率,确保系统的高可用性和性能优化。我们将深入分析机器学习模型在预测系统负载、自动故障检测与响应以及资源分配中的应用,并讨论实施这些策略时可能遇到的挑战和解决思路。
|
5月前
|
存储 缓存 监控
通用研发提效问题之动态调整干预能力,如何解决
通用研发提效问题之动态调整干预能力,如何解决
|
7月前
|
机器学习/深度学习 人工智能 运维
智能化运维:基于AI的系统异常检测与自动修复策略
【5月更文挑战第29天】 在现代IT基础设施管理领域,智能化运维正逐步成为推动效率和稳定性的关键因素。本文深入探讨了人工智能(AI)技术在系统异常检测和自动化故障修复中的应用,提出了一个集成的智能运维框架。该框架利用机器学习算法分析历史数据,实时监控关键性能指标,并在检测到潜在问题时触发自动化修复流程。通过这一方法,我们旨在降低人工干预的需求,提高系统的可靠性和业务连续性。
|
6月前
|
机器学习/深度学习 数据采集 运维
基于机器学习的智能运维:提升系统稳定性与效率
在数字化时代,随着企业对信息技术系统的依赖日益加深,传统的运维模式已难以满足现代业务需求。本文探讨了如何通过机器学习技术优化运维流程,实现故障预测、自动化处理和性能优化,从而提升系统的稳定性和效率。文章首先概述了智能运维的概念及其重要性,随后深入分析了机器学习在故障检测、自动化运维和性能优化方面的应用案例,并讨论了实施智能运维时面临的挑战及应对策略。最后,通过数据支持的分析,展示了智能运维带来的效益,为运维领域的专业人士提供了一种前沿的技术视角和实践指南。
180 0
|
6月前
|
机器学习/深度学习 缓存 运维
智能化运维:机器学习在故障预测与自动修复中的应用
随着信息技术的飞速发展,企业系统日益复杂,传统运维模式面临巨大挑战。智能化运维作为一种新兴趋势,通过集成机器学习算法,实现对系统故障的预测和自动修复,显著提高运维效率与准确性。本文深入探讨了智能化运维的概念、关键技术及其在故障预测和自动修复方面的应用实例,旨在为读者提供一种科学严谨、数据导向的视角,理解智能化运维的价值与实践路径。
165 0
|
7月前
|
机器学习/深度学习 监控 算法
利用机器学习优化数据中心能效的策略
【5月更文挑战第31天】 在数据中心管理和运营的众多挑战中,能效优化是减少运营成本和环境影响的关键要素。随着机器学习技术的不断进步,本文探讨了如何应用机器学习算法来监测和调控数据中心的能源使用效率。通过分析历史能耗数据、服务器负载以及环境变量,机器学习模型能够预测数据中心的能耗模式并实施节能措施。文中介绍了几种主要的机器学习方法,并讨论了它们在实际场景中的应用效果。
|
数据采集 算法 编译器
倚天710规模化应用 - 性能优化 -自动反馈优化分析与实践
编译器优化分成静态优化与动态优化,静态优化指传统编译器gcc/llvm时,增加的优化等级,如O1,O2,O3,Ofast,此时,编译器会依据编译优化等级增加一些优化算法,如函数inline、循环展开以及分支静态预测等等。一般情况下,优化等级越高,编译器做的优化越多,性能会更会好。在阿里生产环境中,单纯依赖于静态优化,并不能达到程序运行流畅目的,通过分析CPU硬件取指令、执行指令,往往会出现一些分支预测失败导致iCacheMiss率高的场景,限制了程序的性能进一步提升。基于此,业务引入了动态反馈优化工具,依据生产环境的实际运行数据,反哺指导编译器对程序代码进一步调整编译优化策略,提高分支预准确率
|
人工智能 算法 数据可视化
带你读《2022龙蜥社区全景白皮书》——5.9.4 KeenTune:智能化全栈调优&容量评估工具
带你读《2022龙蜥社区全景白皮书》——5.9.4 KeenTune:智能化全栈调优&容量评估工具
217 7
下一篇
无影云桌面