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

Вы можете использовать функции, предоставляемые 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
Пример вывода
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]

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

--cahacretization, c

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

--model, m

Новая модель, созданная после самообучения.

Пример

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

    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 может иметь следующий вид (приведенные ниже элементы оптимизации являются необязательными и приведены только для справки).

Пример заполнения example.conf
[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

Вы также можете выполнить команду atune-adm info, чтобы просмотреть, как составлен существующий профиль.

collection

Функция

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

Эта команда зависит от применяемых инструментов выборки, таких как perf, mpstat, vmstat, iostat и sar.

Поддерживается только ЦП Kunpeng 920. Для проверки модели ЦП можно выполнить команду:

dmidecode -t processor

Формат

atune-adm collection <OPTIONS>

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

--app_type, -t

Пометка типа приложения сервиса для дальнейшего обучения.

--disk, -b

Диск, используемый во время работы сервиса, например /dev/sda.

--duration, -d

Время сбора данных во время работы сервиса в секундах. Время сбора по умолчанию составляет 1200 секунд.

--filename, -f

Имя сгенерированного CSV-файла, используемого для обучения: name-timestamp.csv.

--interval, -i

Интервал сбора данных в секундах. Интервал по умолчанию составляет 5 секунд.

--network, -n

Сетевой порт, используемый во время работы сервиса, например, eth0.

--output_path, -o

Путь для хранения сгенерированного CSV-файла. Требуется указать абсолютный путь.

Пример

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>

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

--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
Пример вывода
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>

Перед выполнением команды убедитесь, что выполнены следующие условия.

  • Файл конфигурации YAML на сервере был отредактирован и сохранен в каталоге /etc/atuned/tuning/ сервиса atuned.

  • Файл конфигурации YAML на клиенте был отредактирован и сохранен на клиенте atuned.

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

--detail, -d

Вывод подробной информации о процессе настройки.

--project, -p

Указание имени проекта в файле YAML для восстановления.

Если используется этот параметр, за параметром -p должно следовать конкретное имя проекта и должен быть указан файл YAML проекта.
--restart, -c

Выполнение настройки на основе исторических результатов настройки.

--restore, -r

Восстановление исходной конфигурации перед настройкой.

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

Файл YAML на сервере:

project

Название проекта.

Тип: строка символов.

startworkload

Скрипт для запуска сервиса, который требуется оптимизировать.

Тип: строка символов.

stopworkload

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

Тип: строка символов.

maxiterations

Максимальное количество итераций оптимизации, которое используется для ограничения количества итераций на клиенте. Как правило, чем больше число итераций оптимизации, тем лучше ее эффект и тем больше времени на нее требуется. Установите этот параметр в соответствии с конкретными предъявляемыми требованиями.

Тип: целое число.

Значение должно быть больше 10.
object

Оптимизируемые параметры и связанная с ними информация.

Подробные сведения об элементах конфигурации для object см. ниже.

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

name

Параметр, который нужно оптимизировать.

Тип: строка символов.

desc

Описание параметров, которые нужно оптимизировать.

Тип: строка символов.

get

Скрипт для запроса значений параметров.

set

Скрипт для установки значений параметров.

needrestart

Указывает, следует ли перезапустить сервис для вступления параметра в силу.

Возможные значения:

  • false;

  • true.

type

Тип параметра.

Возможные значения:

  • discrete;

  • continuous.

dtype

Этот параметр доступен только в том случае, если для параметра type установлено значение discrete.

Возможные значения:

  • float;

  • int;

  • string.

scope

Диапазон настройки параметра. Этот параметр действителен, только если для параметра type установлено значение discrete, а для параметра dtype — значение int или float, либо для параметра type установлено значение continuous.

Возможное значение — целое или с плавающей точкой.

Это значение определяется пользователем и должно находиться в допустимом диапазоне для этого параметра.

step

Шаг значения параметра, который используется, когда для параметра dtype установлено значение int или float.

Возможное значение — целое или с плавающей точкой.

Это значение определяется пользователем.

items

Перечислимый тип, значение параметра не входит в область действия. Используется, когда для параметра dtype установлено значение int или float.

Возможное значение — целое или с плавающей точкой.

Это значение определяется пользователем и должно находиться в допустимом диапазоне для этого параметра.

options

Диапазон значений перечислимого типа, который используется, когда для dtype установлено значение string.

Тип: строка символов.

Это значение определяется пользователем и должно находиться в допустимом диапазоне для этого параметра.

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

project

Название проекта, которое должно совпадать с именем в файле конфигурации на сервере.

Тип: строка символов.

engine

Алгоритм настройки.

Тип: строка символов.

Возможные значения:

  • bayes;

  • extraTrees;

  • forest;

  • gbrt;

  • random.

iterations

Количество итераций оптимизации.

Тип: целое число.

Значение должно быть больше или равно 10.
random_starts

Количество случайных итераций.

Тип: целое число

Значение должно быть меньше значения iterations.
feature_filter_engine

Алгоритм поиска параметров, используемый для выбора важных параметров. Это необязательный параметр.

Тип: строка символов.

Возможное значение — lhs.

feature_filter_cycle

Циклы поиска параметров, используемые для выбора важных параметров. Этот параметр используется вместе с feature_filter_engine.

Тип: целое число.

feature_filter_iters

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

Тип: целое число

split_count

Количество равномерно выбранных параметров в диапазоне значений параметров настройки, которое используется для выбора важных параметров. Этот параметр используется вместе с feature_filter_engine.

Тип: целое число.

benchmark

Скрипт тестирования производительности.

evaluations

Показатель оценки тестирования производительности.

Подробные сведения об элементах конфигурации для evaluations см. ниже.

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

name

Имя показателя оценки.

Тип: строка символов.

get

Скрипт для получения результатов оценки производительности.

type

Указание положительного или отрицательного типа результата оценки. Значение positive указывает на минимальное значение производительности, а значение negative — на максимальное значение производительности.

Возможные значения:

  • positive;

  • negative.

weight

Вес показателя.

Тип: целое число.

Возможные значения: от 0 до 100.

threshold

Минимально допустимое значение производительности для показателя.

Тип: целое число.

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

Пример

Ниже приведен пример файла конфигурации 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