A-Tune是一款基于AI开发的系统性能优化引擎,它利用人工智能技术,对业务场景建立精准的系统画像,感知并推理出业务特征,进而做出智能决策,匹配并推荐最佳的系统参数配置组合,使业务处于最佳运行状态。
支持特性:
七大类11款应用负载类型自动优化
自定义负载类型和业务模型
参数自调优
A-Tune支持的业务模型包括https应用、大数据、计算密集型应用、网络密集型应用、内存密集型应用,以及系统IDLE等。安装与部署
硬件要求:鲲鹏920处理器
软件要求:openEuler 20.03 LTS 操作系统
安装openEuler系统。
安装A-Tune需要使用root权限。
A-Tune支持单机模式和分布式模式安装:
单机模式
client和server安装到同一台机器上。
分布式模式
client和server分别安装在不同的机器上。
由于曾经在本地尝试安装过,但下载速度极慢,且由于虚拟机硬盘空间不足、较容易崩溃等原因,产生了很多不便,因此我在此使用了源码编译安装的方式,以及ssh远程登录云服务器来做这部分实验。
华为云服务器:
配合弹性公网IP一起使用:
windows命令行进行ssh登录:
ssh [email protected]
登陆成功。
接下来在云服务器上安装A-Tune。
# 安装依赖软件包
yum install -y golang-bin python3 perf sysstat hwloc-gui
# 安装A-Tune服务的依赖包
yum install -y python3-dict2xml python3-flask-restful python3-pandas python3-scikit-optimize python3-xgboost python3-pyyaml
# 安装数据库依赖包
yum install -y python3-sqlalchemy python3-cryptography
yum install -y python3-psycopg2
# 下载源码并编译安装
git clone https://gitee.com/openeuler/A-Tune.git # 使用git命令克隆远程gitee仓库到openEuler服务器
cd A-Tune
make models
make
make collector-install
make install
安装依赖:
克隆源码:
编译安装:
这里出现一个错误(文件未找到),再编译一遍:(-i暂时忽略错误)
开始编译(make):
……………………
编译完成的最后几行:
安装:
……………………
安装完成。云服务器设置最大带宽为 50Mbps,下载过程速度很快,不到十分钟,A-Tune就已经安装完毕,而之前在虚拟机上本地安装仅是安装依赖和clone源码就花了一个多小时,编译过程中也出现过一些小插曲。而这些问题对于更稳定、更高性能的云服务器是不存在的。
本章介绍A-Tune的配置部署。
A-Tune配置文件位于 /etc/atuned/atuned.cnf,配置项说明:
A-Tune服务启动配置
可根据需要进行修改。
protocol:系统grpc服务使用的协议,unix或tcp,unix为本地socket通信方式,tcp为socket监听端口方式。默认为unix。
address:系统grpc服务的侦听地址,默认为unix socket,若为分布式部署,需修改为侦听的ip地址。
port:系统grpc服务的侦听端口,范围为0~65535未使用的端口。如果protocol配置是unix,则不需要配置。
rest_port:系统restservice的侦听端口, 范围为0~65535未使用的端口。
sample_num:系统执行analysis流程时采集样本的数量。
system信息
system为系统执行相关的优化需要用到的参数信息,必须根据系统实际情况进行修改。
disk:执行analysis流程时需要采集的对应磁盘的信息或执行磁盘相关优化时需要指定的磁盘。
network:执行analysis时需要采集的对应的网卡的信息或执行网卡相关优化时需要指定的网卡。
user:执行ulimit相关优化时用到的用户名。目前只支持root用户。
tls:开启A-Tune的gRPC和http服务SSL/TLS证书校验,默认不开启。开启TLS后atune-adm命令在使用前需要设置以下环境变量方可与服务端进行通讯:
export ATUNE_TLS=yes
export ATUNE_CLICERT=<客户端证书路径>
tlsservercertfile:gPRC服务端证书路径。
tlsserverkeyfile:gPRC服务端秘钥路径。
tlshttpcertfile:http服务端证书路径。
tlshttpkeyfile:http服务端秘钥路径。
tlshttpcacertfile:http服务端CA证书路径。
日志信息
根据情况修改日志的路径和级别,默认的日志信息在/var/log/messages中。
monitor信息
为系统启动时默认采集的系统硬件信息。
cat /etc/atuned/atuned.cnf # 查看配置文件
部分配置信息:
从图中可看出system板块中磁盘选项为 sda;网络选项为 enp189s0f0;用户名为 root。
systemctl daemon-reload # 加载服务
systemctl start atuned # 启动服务
systemctl start atune-engine
systemctl status atuned # 查看服务状态
查看状态,atuned 和 atune-engine 显示 active(running),服务启动成功,然后输入” Ctrl+c “ 退出。
使用A-Tune需要使用root权限。
atune-adm支持的命令可以通过 atune-adm help/–help/-h 查询。
使用方法中所有命令的使用举例都是在单机部署模式下,如果是在分布式部署模式下,需要指定服务器IP和端口号。
define、update、undefine、collection、train、upgrade不支持远程执行。
命令格式中,[ ] 表示参数可选,<> 表示参数必选,具体参数由实际情况确定。
命令格式中,各命令含义如下:
WORKLOAD_TYPE:用户自定义负载类型的名称,负载支持的类型参考list命令查询结果。
PROFILE_NAME:用户自定义profile的名称
PROFILE_PATH:用户自定义profile的路径
查询负载类型:
查询系统当前支持的workload_type和对应的profile,以及当前处于active状态的profile:
atune-adm list
……………………
查询profile信息:
查看workload_type对应的profile内容。
atune-adm info _
例如查看 basic-test-suite-baseline-lmbench 的profile内容:
激活profile:
手动激活workload_type对应的profile,使得workload_type处于active状态:
atune-adm profile [ProfileName]
例如想要激活 basic-test-suite-baseline-lmbench:
会显示如上一系列提示信息以及安全警告信息。
验证是否激活成功:
basic-test-suite-baseline-lmbench 一行活动状态为 ”true“,表明该 profile 已被成功激活。
此外,还有对profile的更新、回滚,以及系统信息查询,用法都比较简单在此不再一一举例。
这部分参考了openeuler说明文档,同时受到OpenEuler上A-Tune的部署与使用albert-rabbit的博客-CSDN博客a-tune的离线调优过程的启发。
首先进入示例目录:
实例目录位于 /root/A-Tune/examples/tuning,该目录下有若干实例,我们进入 ./nginx 目录,并准备环境:
# 打开nginx目录
cd nginx
# 查看当前路径
pwd
/root/A-Tune/examples/tuning/nginx
# 查看目录内所有文件
ls
nginx_benchmark.sh nginx_client.yaml nginx_http_long_client.yaml prepare.sh README
# 准备调优环境
sh prepare.sh
执行sh命令后,系统会自动安装nginx、启动nginx、更新nginx客户端:
查看一下 nginx_client.yaml 的内容:
可以看到相关优化设置:
nginx的调优算法为 gbrt;
调优的迭代次数为 30;
随即迭代次数为 10;
benchmark执行命令为 "sh /root/A-Tune/examples/tuning/nginx/nginx_benchmark.sh";
性能评价指标为 ”rps“。
再看 ./nginx_benchmark.sh 的内容:
该文件用来在执行调优时获取评价指标的具体数值,由上面的 nginx_client.yaml 文件中第 6 行执行该文件。
接下来正式执行调优:
一般命令:
atune-adm tuning --project --detail # 为调优实例名;client.yaml保存了客户端调优的评价指标等信息
本实验中执行如下命令:
atune-adm tuning --project nginx --detail nginx_client.yaml
……………………
10~15分钟后调优结束,注意到最后几行:
The final optimization result is: nginx.access_log=off,nginx.error_log=/dev/null
The final evaluation value is: rps=53493.00
Baseline Performance is: (rps=46279.00)
Tuning Finished
[root@openeuler-huaweicloud nginx]#_
告诉我们错误日志信息保存在 /dev/null,rps 由最初的 46297.00 增长到 53493.00。
RPS:全名为 Requests per second,表示 nginx 每秒处理的请求数,以此作为 nginx 的性能指标,其他的一些性能指标参考Nginx 压测和性能分析的一些经验 - K码农 (kmanong.top)。
所以不难得出,通过A-Tune调优,nginx 的性能提升了约 15.5%。