A-Tune是一款基于AI的操作系统性能调优引擎。A-Tune利用AI技术,使操作系统“懂”业务,简化IT系统调优工作的同时,让应用程序发挥出色性能。
本次项目,主要尝试熟悉A-Tune离线动态调优的流程,目的是为一款应用实现调优。
OS: openEuler 20.03 LTS SP1,从仓库源码安装:
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
cd A-Tune
make models
make
make collector-install
make install
修改/etc/atuned/atuned.cnf中的network和disk配置选项为对应的指定网卡和磁盘。
加载并启动atuned和atune-engine服务:
systemctl daemon-reload
systemctl start atuned
systemctl start atune-engine
注意:这三条命令执行需要一定时间,且不会有任何输出显示。重启后需要重新启动服务。
查看atuned或atune-engine服务状态:
systemctl status atuned
systemctl status atune-engine
atune-adm list
atune-adm profile web-nginx-http-long-connection
激活web-nginx-http-long-connection对应的profile配置。
atune-adm analysis [OPTIONS]
atune-adm tuning [OPTIONS] <PROJECT_YAML>
离线动态调优是本次任务的重点。
示例位于A-Tune/examples/tuning目录,这里以对gcc编译器的优化为例。
cd <PATH-TO-A-Tune>/examples/tuning/gcc_compile
sh prepare.sh
wget http://www.cs.virginia.edu/stream/FTP/Code/stream.c
atune-adm tuning --project gcc_compile --detail gcc_compile_client.yaml
调优结果:
内存带宽提升121%,编译后的可以执行文件大小减小17%。
atune-adm tuning --restore --project gcc_compile
无输出。
离线动态调优包含三个输入文件:client.yaml、server.yaml和benchmark。
这里以gcc离线动态调优为例,说明这三个文件。
另外,还可以在client.yaml中添加参数选择:
参数选择是在进行离线动态调优前执行的步骤,其目的是在进行离线动态调优前缩减参数空间,在给出的参数空间中选择出对性能影响最大的参数并进行调优。
实现方法是在client.yaml中添加如下参数:
benchmark文件用于在调优执行时,会根据client.yaml中提供的命令执行此文件。
执行优化:
atune-adm tuning --project <PROJECT_NAME> --detail <client.yaml>
保存结果:
atune-adm tuning --restore --project <PROJECT_NAME>