Сценарии применения
Вы можете использовать функции, предоставляемые 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
Формат
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 равно |
Анализ и автоматическая оптимизация типов рабочих нагрузок
analysis
Функция
Сбор статистики из системы в режиме реального времени для определения и автоматической оптимизации типов рабочей нагрузки.
Описание параметров
- --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 позволяет пользователям определять и обучать новые модели. Чтобы определить новую модель, сделайте следующее:
-
Выполните команду
define, чтобы определить новый профиль. -
Выполните команду
collection, чтобы собрать системные данные, соответствующие приложению. -
Выполните команду
train, чтобы обучить модель.
define
Функция
Добавление определяемых пользователем сценариев для приложения и соответствующих элементов для настройки профиля.
Пример
Добавление профиля, у которого <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-файл в качестве входного набора данных для обучения модели.
|
Эта команда зависит от применяемых инструментов выборки, таких как Поддерживается только ЦП Kunpeng 920. Для проверки модели ЦП можно выполнить команду:
|
Описание параметров
--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-файла. Требуется указать абсолютный путь.
train
Функция
Использование собранных данных для обучения модели. Во время обучения нужно собрать данные как минимум для двух типов приложений. В противном случае выводится сообщение об ошибке.
Запрос профилей
info
Пример
Просмотр содержимого профиля для 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
Обновление профиля
Активация профиля
Запрос информации о системе
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>
|
Перед выполнением команды убедитесь, что выполнены следующие условия.
|
Описание параметров
- --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