Вы можете использовать функции, предоставляемые 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 позволяет пользователям определять и обучать новые модели. Чтобы определить новую модель, сделайте следующее.
- Выполните команду define, чтобы определить новый профиль.
- Выполните команду collection, чтобы собрать системные данные, соответствующие приложению.
- Выполните команду 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