长期支持版本

    使用方法

    用户可以通过命令行客户端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]

    参数说明

    • OPTIONS

      参数

      描述

      --model, -m

      用户自训练产生的新模型

    使用示例

    • 使用默认的模型进行分类识别

      # atune-adm analysis
      
    • 使用自训练的模型进行识别

      # atune-adm analysis --model /usr/libexec/atuned/analysis/models/new-model.m
      

    自定义模型

    A-Tune支持用户定义并学习新模型。定义新模型的操作流程如下:

    1. 用define命令定义workload_type和profile
    2. 用collection命令收集workload_type对应的画像数据
    3. 用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

      参数

      描述

      --filename, -f

      生成的用于训练的csv文件名:名称-时间戳.csv

      --output_path, -o

      生成的csv文件的存放路径,需提供绝对路径

      --disk, -b

      业务运行时实际使用的磁盘,如/dev/sda

      --network, -n

      业务运行时使用的网络接口,如eth0

      --workload_type, -t

      标记业务的负载类型,作为训练时使用的标签

      --duration, -d

      业务运行时采集数据的时间,单位秒,默认采集时间1200秒

      --interval,-i

      采集数据的时间间隔,单位秒,默认采集间隔5秒

    使用示例

    # 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>

    参数说明

    • OPTIONS

      参数

      描述

      --data_path, -d

      存放模型训练所需的csv文件的目录

      --output_file, -o

      训练生成的新模型

    使用示例

    使用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

    功能描述

    使用指定的项目文件对参数进行动态空间的搜索,找到当前环境配置下的最优解。

    命令格式

    说明:
    在运行命令前,需要满足如下条件:

    1. 编辑好服务端yaml配置文件,且需要服务端管理员将该配置文件放到服务端的/etc/atuned/tuning/目录下。
    2. 编辑好客户端yaml配置文件并放在客户端任一目录。

    atune-adm tuning [OPTIONS] <PROJECT_YAML>

    参数说明

    • OPTIONS

      参数

      描述

      --restore, -r

      恢复tuning优化前的初始配置

      --project, -p

      指定需要恢复的yaml文件中的项目名称

      说明:
      当使用参数时,上述两个参数需要同时使用,且-p参数后需要跟具体的项目名称。

    • PROJECT_YAML:客户端yaml配置文件。

    配置说明

    表 1 服务端yaml文件

    配置名称

    配置说明

    参数类型

    取值范围

    project

    项目名称。

    字符串

    -

    startworkload

    待调优服务的启动脚本。

    字符串

    -

    stopworkload

    待调优服务的停止脚本。

    字符串

    -

    maxiterations

    最大调优迭代次数,用于限制客户端的迭代次数。一般来说,调优迭代次数越多,优化效果越好,但所需时间越长。用户必须根据实际的业务场景进行配置。

    整型

    >10

    object

    需要调节的参数项及信息。

    object 配置项请参见表2

    -

    -

    表 2 object项配置说明

    配置名称

    配置说明

    参数类型

    取值范围

    name

    待调参数名称

    字符串

    -

    desc

    待调参数描述

    字符串

    -

    get

    查询参数值的脚本

    -

    -

    set

    设置参数值的脚本

    -

    -

    needrestart

    参数生效是否需要重启业务

    枚举

    "true", "false"

    type

    参数的类型,目前支持discrete, continuous两种类型,对应离散型、连续型参数

    枚举

    "discrete", "continuous"

    dtype

    该参数仅在type为discrete类型时配置,目前支持int和string两种类型

    枚举

    int, string

    scope

    参数设置范围,仅在type为discrete且dtype为int时或者type为continuous时生效

    整型

    用户自定义,取值在该参数的合法范围

    step

    参数值步长,dtype为int时使用

    整型

    用户自定义

    items

    参数值在scope定义范围之外的枚举值,dtype为int时使用

    整型

    用户自定义,取值在该参数的合法范围

    options

    参数值的枚举范围,dtype为string时使用

    字符串

    用户自定义,取值在该参数的合法范围

    ref

    参数的推荐初始值

    整型或字符串

    用户自定义,取值在该参数的合法范围

    表 3 客户端yaml文件配置说明

    配置名称

    配置说明

    参数类型

    取值范围

    project

    项目名称,需要与服务端对应配置文件中的project匹配

    字符串

    -

    iterations

    调优迭代次数

    整型

    >=10

    benchmark

    性能测试脚本

    -

    -

    evaluations

    性能测试评估指标

    evaluations 配置项请参见表4

    -

    -

    表 4 evaluations项配置说明

    配置名称

    配置说明

    参数类型

    取值范围

    name

    评价指标名称

    字符串

    -

    get

    获取性能评估结果的脚本

    -

    -

    type

    评估结果的正负类型,positive代表最小化性能值,negative代表最大化对应性能值

    枚举

    "positive","negative"

    weight

    该指标的权重百分比

    整型

    0-100

    threshold

    该指标的最低性能要求

    整型

    用户指定

    配置示例

    服务端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
      

    文档捉虫

    “有虫”文档片段

    问题描述

    提交类型 issue

    有点复杂...

    找人问问吧。

    PR

    小问题,全程线上修改...

    一键搞定!

    问题类型
    规范和低错类

    ● 错别字或拼写错误;标点符号使用错误;

    ● 链接错误、空单元格、格式错误;

    ● 英文中包含中文字符;

    ● 界面和描述不一致,但不影响操作;

    ● 表述不通顺,但不影响理解;

    ● 版本号不匹配:如软件包名称、界面版本号;

    易用性

    ● 关键步骤错误或缺失,无法指导用户完成任务;

    ● 缺少必要的前提条件、注意事项等;

    ● 图形、表格、文字等晦涩难懂;

    ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

    正确性

    ● 技术原理、功能、规格等描述和软件不一致,存在错误;

    ● 原理图、架构图等存在错误;

    ● 命令、命令参数等错误;

    ● 代码片段错误;

    ● 命令无法完成对应功能;

    ● 界面错误,无法指导操作;

    风险提示

    ● 对重要数据或系统存在风险的操作,缺少安全提示;

    内容合规

    ● 违反法律法规,涉及政治、领土主权等敏感词;

    ● 内容侵权;

    您对文档的总体满意度

    非常不满意
    非常满意
    提交
    根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
    文档捉虫
    编组 3备份