Сценарии применения

Вы можете использовать функции, предоставляемые A-Tune, с помощью клиента CLI atune-adm. В этой главе описаны функции и порядок использования клиента A-Tune.

Обзор#

  • Можно выполнить команду atune-adm help/–help/-h, чтобы запросить команды, поддерживаемые atune-adm.

  • Все примеры команд используются в режиме одного узла. Для распределенного режима укажите IP-адрес и номер порта. Например:

    #  atune-adm -a 192.168.3.196 -p 60001 list
    
  • Команды define, update, undefine, collection, train и **upgrade** не поддерживают удаленное выполнение.

  • В формате команды квадратные скобки ([]) обозначают необязательный параметр, а угловые скобки (<\>) — обязательный. Нужно указывать фактические значения параметров.

Запрос типов рабочей нагрузки#

list#

Функция#

Запрос поддерживаемых профилей и значений параметра Active.

Формат#

atune-adm list

Пример#

# atune-adm list

Support profiles:
+------------------------------------------------+-----------+
| ProfileName                                    | Active    |
+================================================+===========+
| arm-native-android-container-robox             | false     |
+------------------------------------------------+-----------+
| basic-test-suite-euleros-baseline-fio          | false     |
+------------------------------------------------+-----------+
| basic-test-suite-euleros-baseline-lmbench      | false     |
+------------------------------------------------+-----------+
| basic-test-suite-euleros-baseline-netperf      | false     |
+------------------------------------------------+-----------+
| basic-test-suite-euleros-baseline-stream       | false     |
+------------------------------------------------+-----------+
| basic-test-suite-euleros-baseline-unixbench    | false     |
+------------------------------------------------+-----------+
| basic-test-suite-speccpu-speccpu2006           | false     |
+------------------------------------------------+-----------+
| basic-test-suite-specjbb-specjbb2015           | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-hdfs-dfsio-hdd                 | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-hdfs-dfsio-ssd                 | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-bayesian                 | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-kmeans                   | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql1                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql10                    | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql2                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql3                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql4                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql5                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql6                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql7                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql8                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-sql9                     | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-tersort                  | false     |
+------------------------------------------------+-----------+
| big-data-hadoop-spark-wordcount                | false     |
+------------------------------------------------+-----------+
| cloud-compute-kvm-host                         | false     |
+------------------------------------------------+-----------+
| database-mariadb-2p-tpcc-c3                    | false     |
+------------------------------------------------+-----------+
| database-mariadb-4p-tpcc-c3                    | false     |
+------------------------------------------------+-----------+
| database-mongodb-2p-sysbench                   | false     |
+------------------------------------------------+-----------+
| database-mysql-2p-sysbench-hdd                 | false     |
+------------------------------------------------+-----------+
| database-mysql-2p-sysbench-ssd                 | false     |
+------------------------------------------------+-----------+
| database-postgresql-2p-sysbench-hdd            | false     |
+------------------------------------------------+-----------+
| database-postgresql-2p-sysbench-ssd            | false     |
+------------------------------------------------+-----------+
| default-default                                | false     |
+------------------------------------------------+-----------+
| docker-mariadb-2p-tpcc-c3                      | false     |
+------------------------------------------------+-----------+
| docker-mariadb-4p-tpcc-c3                      | false     |
+------------------------------------------------+-----------+
| hpc-gatk4-human-genome                         | false     |
+------------------------------------------------+-----------+
| in-memory-database-redis-redis-benchmark       | false     |
+------------------------------------------------+-----------+
| middleware-dubbo-dubbo-benchmark               | false     |
+------------------------------------------------+-----------+
| storage-ceph-vdbench-hdd                       | false     |
+------------------------------------------------+-----------+
| storage-ceph-vdbench-ssd                       | false     |
+------------------------------------------------+-----------+
| virtualization-consumer-cloud-olc              | false     |
+------------------------------------------------+-----------+
| virtualization-mariadb-2p-tpcc-c3              | false     |
+------------------------------------------------+-----------+
| virtualization-mariadb-4p-tpcc-c3              | false     |
+------------------------------------------------+-----------+
| web-apache-traffic-server-spirent-pingpo       | false     |
+------------------------------------------------+-----------+
| web-nginx-http-long-connection                 | true      |
+------------------------------------------------+-----------+
| web-nginx-https-short-connection               | false     |
+------------------------------------------------+-----------+

ПРИМЕЧАНИЕ.
Если значение параметра Active равно true, значит профиль активирован. В приведенном примере профиль web-nginx-http-long-connection активирован.

Анализ и автоматическая оптимизация типов рабочих нагрузок#

analysis#

Функция#

Сбор статистики из системы в режиме реального времени для определения и автоматической оптимизации типов рабочей нагрузки.

Формат#

atune-adm analysis [OPTIONS]

Описание параметров#

  • OPTIONS

Пример#

  • Использование модели по умолчанию для идентификации приложений.

    # atune-adm analysis --characterization
    
  • Использование модели по умолчанию для идентификации приложений и выполнения автоматической настройки.

    # atune-adm analysis
    
  • Использование определяемой пользователем модели обучения для распознавания.

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

Определяемая пользователем модель#

A-Tune позволяет пользователям определять и обучать новые модели. Чтобы определить новую модель, сделайте следующее.

  1. Выполните команду define, чтобы определить новый профиль.
  2. Выполните команду collection, чтобы собрать системные данные, соответствующие приложению.
  3. Выполните команду train, чтобы обучить модель.

define#

Функция#

Добавление определяемых пользователем сценариев для приложения и соответствующих элементов для настройки профиля.

Формат#

atune-adm define <service_type> <application_name> <scenario_name> <profile_path>

Пример#

Добавление профиля, у которого service_type имеет значение test_service, application_name — значение test_app, scenario_name — значение test_scenario, а файлом конфигурации элементов настройки является example.conf.

# atune-adm define test_service test_app test_scenario ./example.conf

Файл example.conf может иметь следующий вид (приведенные ниже элементы оптимизации являются необязательными и приведены только для справки). Вы также можете выполнить команду atune-adm info, чтобы просмотреть, как составлен существующий профиль.

 [main]
 # list its parent profile
 [kernel_config]
 # to change the kernel config
 [bios]
 # to change the bios config
 [bootloader.grub2]
 # to change the grub2 config
 [sysfs]
 # to change the /sys/* config
 [systemctl]
 # to change the system service status
 [sysctl]
 # to change the /proc/sys/* config
 [script]
 # the script extension of cpi
 [ulimit]
 # to change the resources limit of user
 [schedule_policy]
 # to change the schedule policy
 [check]
 # check the environment
 [tip]
 # the recommended optimization, which should be performed manunaly

collection#

Функция#

Сбор информации об использовании глобальных ресурсов и состоянии ОС во время работы сервиса и сохранение собранных сведений в выходной CSV-файл в качестве входного набора данных для обучения модели.

ПРИМЕЧАНИЕ.
— Эта команда зависит от применяемых инструментов выборки, таких как perf, mpstat, vmstat, iostat и sar.
— В настоящее время поддерживается только ЦП Kunpeng 920. Для проверки модели ЦП можно выполнить команду dmidecode -t processor.

Формат#

atune-adm collection <OPTIONS\>

Описание параметров#

  • OPTIONS

Пример#

# atune-adm collection --filename name --interval 5 --duration 1200 --output_path /home/data --disk sda --network eth0 --app_type test_type 

train#

Функция#

Использование собранных данных для обучения модели. Во время обучения нужно собрать данные как минимум для двух типов приложений. В противном случае выводится сообщение об ошибке.

Формат#

atune-adm train <OPTIONS\>

Описание параметров#

  • OPTIONS
    Параметр Описание
    –data_path, -d Путь для хранения CSV-файлов, требуемых для обучения моделей.
    –output_file, -o Модель, созданная в рамках обучения.

Пример#

Использование CSV-файла в каталоге data в качестве входных данных для обучения. Созданная модель new-model.m сохраняется в каталоге model.

# atune-adm train --data_path /home/data --output_file /usr/libexec/atuned/analysis/models/new-model.m 

undefine#

Функция#

Удаление определяемого пользователем профиля.

Формат#

atune-adm undefine <profile\>

Пример#

Удаление определяемого пользователем профиля.

# atune-adm undefine test_service-test_app-test_scenario

Запрос профилей#

info#

Функция#

Просмотр содержимого профиля.

Формат#

atune-adm info <profile\>

Пример#

Просмотр содержимого профиля для web-nginx-http-long-connection.

# atune-adm info web-nginx-http-long-connection

*** web-nginx-http-long-connection:

#
# nginx http long connection A-Tune configuration
#
[main]
include = default-default

[kernel_config]
#TODO CONFIG

[bios]
#TODO CONFIG

[bootloader.grub2]
iommu.passthrough = 1

[sysfs]
#TODO CONFIG

[systemctl]
sysmonitor = stop
irqbalance = stop

[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

[script]
prefetch = off
ethtool =  -X {network} hfunc toeplitz

[ulimit]
{user}.hard.nofile = 102400
{user}.soft.nofile = 102400

[schedule_policy]
#TODO CONFIG

[check]
#TODO CONFIG

[tip]
SELinux provides extra control and security features to linux kernel. Disabling SELinux will improve the performance but may cause security risks. = kernel
disable the nginx log = application

Обновление профиля#

При необходимости можно обновить существующий профиль.

update#

Функция#

Обновление исходных элементов настройки в существующем профиле в соответствии с содержимым файла new.conf.

Формат#

atune-adm update <profile\> <profile_path\>

Пример#

Изменение элемента настройки профиля test_service-test_app-test_scenario в соответствии с файлом new.conf.

# atune-adm update test_service-test_app-test_scenario ./new.conf

Активация профиля#

profile#

Функция#

Ручная активация профиля для перевода его в активное состояние.

Формат#

atune-adm profile <profile\>

Описание параметров#

Дополнительные сведения об имени профиля см. в результатах запроса команды list.

Пример#

Активация профиля web-nginx-http-long-connection.

# atune-adm profile web-nginx-http-long-connection

Откат профилей#

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#

Функция#

Проверка информацию о ЦП, BIOS, ОС и сетевой карте.

Формат#

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#

Функция#

Использование указанного файла проекта для поиска параметров в динамическом пространстве и подбора оптимального решения с учетом текущей конфигурации среды.

Формат#

atune-adm tuning [OPTIONS] <PROJECT_YAML\>

ПРИМЕЧАНИЕ.
Перед выполнением команды убедитесь, что выполнены следующие условия.
1. Файл конфигурации YAML на сервере был отредактирован и сохранен в каталоге /etc/atuned/tuning/ сервиса atuned. 2. Файл конфигурации YAML на клиенте был отредактирован и сохранен на клиенте atuned.

Описание параметров#

  • OPTIONS

ПРИМЕЧАНИЕ.
Если используется этот параметр, за параметром -p должно следовать конкретное имя проекта и должен быть указан файл YAML проекта.

  • PROJECT_YAML: файл конфигурации YAML на клиенте.

Описание конфигурации#

Таблица 1. Файл YAML на сервере

Таблица 2. Описание элементов конфигурации для object

Таблица 3. Описание элементов конфигурации файла YAML на клиенте

Таблица 4. Описание элементов конфигурации для evaluations

Пример#

Ниже приведен пример файла конфигурации YAML на сервере:

project: "compress"
maxiterations: 500
startworkload: ""
stopworkload: ""
object :
  -
    name : "compressLevel"
    info :
        desc : "The compresslevel parameter is an integer from 1 to 9 controlling the level of compression"
        get : "cat /root/A-Tune/examples/tuning/compress/compress.py | grep 'compressLevel=' | awk -F '=' '{print $2}'"
        set : "sed -i 's/compressLevel=\\s*[0-9]*/compressLevel=$value/g' /root/A-Tune/examples/tuning/compress/compress.py"
        needrestart : "false"
        type : "continuous"
        scope :
          - 1
          - 9
        dtype : "int"
  -
    name : "compressMethod"
    info :
        desc : "The compressMethod parameter is a string controlling the compression method"
        get : "cat /root/A-Tune/examples/tuning/compress/compress.py | grep 'compressMethod=' | awk -F '=' '{print $2}' | sed 's/\"//g'"
        set : "sed -i 's/compressMethod=\\s*[0-9,a-z,\"]*/compressMethod=\"$value\"/g' /root/A-Tune/examples/tuning/compress/compress.py"
        needrestart : "false"
        type : "discrete"
        options :
          - "bz2"
          - "zlib"
          - "gzip"
        dtype : "string"

  

Ниже приведен пример файла конфигурации YAML на клиенте:

project: "compress"
engine : "gbrt"
iterations : 20
random_starts : 10

benchmark : "python3 /root/A-Tune/examples/tuning/compress/compress.py"
evaluations :
  -
    name: "time"
    info:
        get: "echo '$out' | grep 'time' | awk '{print $3}'"
        type: "positive"
        weight: 20
  -
    name: "compress_ratio"
    info:
        get: "echo '$out' | grep 'compress_ratio' | awk '{print $3}'"
        type: "negative"
        weight: 80

  

Пример#

  • Выполнение настройки.

    # atune-adm tuning --project compress --detail compress_client.yaml
    
  • Восстановление исходной конфигурации перед настройкой. compress — это имя проекта в файле YAML.

    # atune-adm tuning --restore --project compress