使用方法
用户可以通过命令行客户端atune-adm使用A-Tune提供的功能。本章介绍A-Tune客户端包含的功能和使用方法。
总体说明
使用A-Tune需要root权限。
atune-adm支持的命令可以通过 atune-adm help/--help/-h 查询。
使用方法中所有命令的使用举例都是在单机部署模式下,如果是在分布式部署模式下,需要指定服务器IP和端口号,例如:
# atune-adm -a 192.168.3.196 -p 60001 list
define、update、undefine、collection、train、upgrade不支持远程执行。
命令格式中,[ ] 表示参数可选,<> 表示参数必选,具体参数由实际情况确定。
命令格式中,各命令含义如下:
- WORKLOAD_TYPE:用户自定义负载类型的名称,支持的负载类型参考list命令查询结果。
- PROFILE_NAME:用户自定义profile的名称
- PROFILE_PATH:用户自定义profile的路径
查询负载类型
list
功能描述
查询系统当前支持的workload_type和对应的profile,以及当前处于active状态的profile。
命令格式
atune-adm list
使用示例
# atune-adm list
Support WorkloadTypes:
+-----------------------------------+------------------------+-----------+
| WorkloadType | ProfileName | Active |
+===================================+========================+===========+
| default | default | true |
+-----------------------------------+------------------------+-----------+
| webserver | ssl_webserver | false |
+-----------------------------------+------------------------+-----------+
| big_database | database | false |
+-----------------------------------+------------------------+-----------+
| big_data | big_data | false |
+-----------------------------------+------------------------+-----------+
| in-memory_computing | in-memory_computing | false |
+-----------------------------------+------------------------+-----------+
| in-memory_database | in-memory_database | false |
+-----------------------------------+------------------------+-----------+
| single_computer_intensive_jobs | compute-intensive | false |
+-----------------------------------+------------------------+-----------+
| communication | rpc_communication | false |
+-----------------------------------+------------------------+-----------+
| idle | default | false |
+-----------------------------------+------------------------+-----------+
说明:
Active为true表示当前激活的profile,示例表示当前激活的是default类型对应的profile。
分析负载类型并自优化
analysis
功能描述
采集系统的实时统计数据进行负载类型识别,并进行自动优化。
命令格式
atune-adm analysis [OPTIONS]
参数说明
使用示例
使用默认的模型进行分类识别
# atune-adm analysis
使用自训练的模型进行识别
# atune-adm analysis --model /usr/libexec/atuned/analysis/models/new-model.m
自定义模型
A-Tune支持用户定义并学习新模型。定义新模型的操作流程如下:
- 用define命令定义workload_type和profile
- 用collection命令收集workload_type对应的画像数据
- 用train命令训练得到模型
define
功能描述
添加用户自定义的workload_type,及对应的profile优化项。
命令格式
atune-adm define <WORKLOAD_TYPE> <PROFILE_NAME> <PROFILE_PATH>
使用示例
新增一个workload type,workload type的名称为test_type,profile name的名称为test_name,优化项的配置文件为example.conf。
# atune-adm define test_type test_name ./example.conf
example.conf 可以参考如下方式书写(以下各优化项非必填,仅供参考),也可通过atune-adm info查看已有的profile是如何书写的。
[main]
# list its parent profile
[tip]
# the recommended optimization, which should be performed manunaly
[check]
# check the environment
[affinity.irq]
# to change the affinity of irqs
[affinity.task]
# to change the affinity of tasks
[bios]
# to change the bios config
[bootloader.grub2]
# to change the grub2 config
[kernel_config]
# to change the kernel config
[script]
# the script extention of cpi
[sysctl]
# to change the /proc/sys/* config
[sysfs]
# to change the /sys/* config
[systemctl]
# to change the system service config
[ulimit]
# to change the resources limit of user
collection
功能描述
采集业务运行时系统的全局资源使用情况以及OS的各项状态信息,并将收集的结果保存到csv格式的输出文件中,作为模型训练的输入数据集。
说明:
- 本命令依赖采样工具perf,mpstat,vmstat,iostat,sar。
- CPU型号目前仅支持鲲鹏920,可通过dmidecode -t processor检查CPU型号。
命令格式
atune-adm collection <OPTIONS>
参数说明
OPTIONS
使用示例
# atune-adm collection --filename name --interval 5 --duration 1200 --output_path /home/data --disk sda --network eth0 --workload_type test_type
train
功能描述
使用采集的数据进行模型的训练。训练时至少采集两种workload_type的数据,否则训练会出错。
命令格式
atune-adm train <OPTIONS>
参数说明
使用示例
使用data目录下的csv文件作为训练输入,生成的新模型new-model.m存放在models目录下。
# atune-adm train --data_path /home/data --output_file /usr/libexec/atuned/analysis/models/new-model.m
undefine
功能描述
删除用户自定义的workload_type。
命令格式
atune-adm undefine <WORKLOAD_TYPE>
使用示例
删除自定义的负载类型test_type。
# atune-adm undefine test_type
查询profile
info
功能描述
查看workload_type对应的profile内容。
命令格式
atune-adm info <WORKLOAD_TYPE_>_
使用示例
查看webserver的profile内容:
# atune-adm info webserver
*** ssl_webserver:
#
# webserver tuned configuration
#
[main]
#TODO CONFIG
[kernel_config]
#TODO CONFIG
[bios]
#TODO CONFIG
[sysfs]
#TODO CONFIG
[sysctl]
fs.file-max=6553600
fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_local_port_range = 1024 65500
net.ipv4.tcp_max_tw_buckets = 5000
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_mem = 362619 483495 725238
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
[systemctl]
sysmonitor=stop
irqbalance=stop
[bootloader.grub2]
selinux=0
iommu.passthrough=1
[tip]
bind your master process to the CPU near the network = affinity
bind your network interrupt to the CPU that has this network = affinity
relogin into the system to enable limits setting = OS
[script]
openssl_hpre = 0
prefetch = off
[ulimit]
{user}.hard.nofile = 102400
{user}.soft.nofile = 102400
[affinity.task]
#TODO CONFIG
[affinity.irq]
#TODO CONFIG
[check]
#TODO CONFIG
更新profile
用户根据需要更新已有profile。
update
功能描述
将workload_type原来的优化项更新为new.conf中的内容。
命令格式
atune-adm update <WORKLOAD_TYPE> <PROFILE_NAME> <PROFILE_FILE>
使用示例
更新负载类型为test_type,优化项名称为test_name的优化项为new.conf。
# atune-adm update test_type test_name ./new.conf
激活profile
profile
功能描述
手动激活workload_type对应的profile,使得profile处于active状态。
命令格式
**atune-adm profile **<WORKLOAD_TYPE>
参数说明
WORKLOAD_TYPE支持的类型参考list命令查询结果。
使用示例
激活webserver对应的profile配置。
# atune-adm profile webserver
回滚profile
rollback
功能描述
回退当前的配置到系统的初始配置。
命令格式
atune-adm rollback
使用示例
# atune-adm rollback
更新数据库
upgrade
功能描述
更新系统的数据库。
命令格式
atune-adm upgrade <DB_FILE>
参数说明
DB_FILE
新的数据库文件路径
使用示例
数据库更新为new_sqlite.db。
# atune-adm upgrade ./new_sqlite.db
查询系统信息
check
功能描述
检查系统当前的cpu、bios、os、网卡等信息。
命令格式
atune-adm check
使用示例
# atune-adm check
cpu information:
cpu:0 version: Kunpeng 920-6426 speed: 2600000000 HZ cores: 64
cpu:1 version: Kunpeng 920-6426 speed: 2600000000 HZ cores: 64
system information:
DMIBIOSVersion: 0.59
OSRelease: 4.19.36-vhulk1906.3.0.h356.eulerosv2r8.aarch64
network information:
name: eth0 product: HNS GE/10GE/25GE RDMA Network Controller
name: eth1 product: HNS GE/10GE/25GE Network Controller
name: eth2 product: HNS GE/10GE/25GE RDMA Network Controller
name: eth3 product: HNS GE/10GE/25GE Network Controller
name: eth4 product: HNS GE/10GE/25GE RDMA Network Controller
name: eth5 product: HNS GE/10GE/25GE Network Controller
name: eth6 product: HNS GE/10GE/25GE RDMA Network Controller
name: eth7 product: HNS GE/10GE/25GE Network Controller
name: docker0 product:
参数自调优
A-Tune提供了最佳配置的自动搜索能力,免去人工反复做参数调整、性能评价的调优过程,极大地提升最优配置的搜寻效率。
tuning
功能描述
使用指定的项目文件对参数进行动态空间的搜索,找到当前环境配置下的最优解。
命令格式
说明:
在运行命令前,需要满足如下条件:
- 编辑好服务端yaml配置文件,且需要服务端管理员将该配置文件放到服务端的/etc/atuned/tuning/目录下。
- 编辑好客户端yaml配置文件并放在客户端任一目录。
atune-adm tuning [OPTIONS] <PROJECT_YAML>
参数说明
OPTIONS
说明:
当使用参数时,上述两个参数需要同时使用,且-p参数后需要跟具体的项目名称。PROJECT_YAML:客户端yaml配置文件。
配置说明
表 1 服务端yaml文件
最大调优迭代次数,用于限制客户端的迭代次数。一般来说,调优迭代次数越多,优化效果越好,但所需时间越长。用户必须根据实际的业务场景进行配置。 | |||
object 配置项请参见表2。 |
表 2 object项配置说明
表 3 客户端yaml文件配置说明
evaluations 配置项请参见表4 |
表 4 evaluations项配置说明
配置示例
服务端yaml文件配置示例:
project: "example"
maxiterations: 10
startworkload: ""
stopworkload: ""
object :
-
name : "vm.swappiness"
info :
desc : "the vm.swappiness"
get : "sysctl -a | grep vm.swappiness"
set : "sysctl -w vm.swappiness=$value"
needrestart: "false"
type : "continuous"
scope :
- 0
- 10
ref : 1
-
name : "irqbalance"
info :
desc : "system irqbalance"
get : "systemctl status irqbalance"
set : "systemctl $value sysmonitor;systemctl $value irqbalance"
needrestart: "false"
type : "discrete"
options:
- "start"
- "stop"
dtype : "string"
ref : "start"
-
name : "net.tcp_min_tso_segs"
info :
desc : "the minimum tso number"
get : "cat /proc/sys/net/ipv4/tcp_min_tso_segs"
set : "echo $value > /proc/sys/net/ipv4/tcp_min_tso_segs"
needrestart: "false"
type : "continuous"
scope:
- 1
- 16
ref : 2
-
name : "prefetcher"
info :
desc : ""
get : "cat /sys/class/misc/prefetch/policy"
set : "echo $value > /sys/class/misc/prefetch/policy"
needrestart: "false"
type : "discrete"
options:
- "0"
- "15"
dtype : "string"
ref : "15"
-
name : "kernel.sched_min_granularity_ns"
info :
desc : "Minimal preemption granularity for CPU-bound tasks"
get : "sysctl kernel.sched_min_granularity_ns"
set : "sysctl -w kernel.sched_min_granularity_ns=$value"
needrestart: "false"
type : "continuous"
scope:
- 5000000
- 50000000
ref : 10000000
-
name : "kernel.sched_latency_ns"
info :
desc : ""
get : "sysctl kernel.sched_latency_ns"
set : "sysctl -w kernel.sched_latency_ns=$value"
needrestart: "false"
type : "continuous"
scope:
- 10000000
- 100000000
ref : 16000000
客户端yaml文件配置示例:
project: "example"
iterations : 10
benchmark : "sh /home/Benchmarks/mysql/tunning_mysql.sh"
evaluations :
-
name: "tps"
info:
get: "echo -e '$out' |grep 'transactions:' |awk '{print $3}' | cut -c 2-"
type: "negative"
weight: 100
threshold: 100
使用示例
进行tuning调优
# atune-adm tuning example-client.yaml
恢复tuning调优前的初始配置,example为yaml文件中的项目名称
# atune-adm tuning --restore --project example