Оптимизировать как-то сбор 'ops in fly', проверить как это влияет на сеф
Сделать ceph-lib, вынести ее в отдельный проект, должна поддерживать и 2.7 и 3.5 и не иметь строгих внешних бинарных зависимостей. В нее вынести:
Openstack VM spawn
Load generators
Load results visualizator
Cluster load visualization
Поиск узких мест
Расчет потребляемых ресурсов
Сопрягающий код
Хранилища должны легко подключаться
Расчет потребления ресурсов сделать конфигурируемым - указывать соотношения чего с чем считать
В конфиге задавать storage plugin
На выходе из сенсоров есть
NODE_OR_ROLE.DEVICE.SENSOR
create namespace with all nodes/roles as objects with specially overloaded getattr method to handle device and then handle sensor. Make eval on result
(CLUSTER.DISK.riops + CLUSTER.DISK.wiops) / (VM.DISK.riops + VM.DISK.wiops)
Send data to external storage
Each sensor should collect only one portion of data. During start it should scan all available sources and tell upper code to create separated funcs for them.
store statistic results in storage
During prefill check io on file
Store percentiles levels in TS, separate 1D TS and 2D TS to different classes, store levels in 2D TS
weight average and deviation
C++/Go disk stat sensors to measure IOPS/Lat on milliseconds
TODO large
Force to kill running fio on ctrl+C and correct cleanup or cleanup all previous run with 'wally cleanup PATH'
Code:
RW mixed report
RPC reconnect in case of errors
store more information for node - OSD settings, FS on test nodes, target block device settings on test nodes
Sensors
Config validation
Add sync 4k write with small set of thcount
Flexible SSH connection creds - use agent, default ssh settings or part of config
Remove created temporary files - create all tempfiles via func from .utils, which track them
Use ceph-monitoring from wally
Use warm-up detection to select real test time.
Report code:
Calculate statistic for previous iteration in background
UT
UT, which run test with predefined in yaml cluster (cluster and config created separatelly, not with tests) and check that result storage work as expected. Declare db sheme in seaprated yaml file, UT should check.
White-box event logs for UT
Result-to-yaml for UT
Infra:
Add script to download fio from git and build it
Docker/lxd public container as default distribution way
Update setup.py to provide CLI entry points
Statistical result check and report:
KDE on latency, than found local extremums and estimate effective cache sizes from them
Check results distribution
Warn for non-normal results
Check that distribution of different parts is close. Average performance should be steady across test
Node histogram distribution
Interactive report, which shows different plots and data, depending on selected visualization type
Offload simple report table to cvs/yaml/json/test/ascii_table
fio load reporters (visualizers), ceph report tool ceph-viz-histo
evaluate bokeh for visualization
flamegraph for 'perf' output
detect internal pattern:
For HDD read/write - report caches hit ratio, maps of real read/writes, FS counters
Report help page, link for explanations
checkboxes for show/hide part of image
pop-up help for part of picture
pop-up text values for bars/lines
waterfall charts for ceph request processing
correct comparison between different systems
Maybe move to 2.1:
2.0: * Сравнения билдов - пока по папкам из CLI, текcтовое * Занести интервал усреднения в конфиг * починить SW & HW info, добавить настройки qemu и все такое * Перед началом теста проверять наличие его результатов и скипать * продолжение работы при большинстве ошибок * Починить процессор * Починить боттлнеки * Юнит-тесты * Make python module * putget/ssbench tests * rbd с нод без виртуалок * отдельный тенант на все и очистка полная * Per-vm stats & between vm dev * Логи визуальные * psql, mssql, SPC-1 * Тестирование кешей
Done: * собрать новый fio под основные платформы и положить в git * Все тесты - в один поток * Перейти на анализ логов fio * Делать один больщой тест на несколько минут и мерять по нему все параметры * печатать fio параметры в лог
Мелочи: * Зарефакторить запуск/мониторинг/оставнов процесса по SSH, запуск в фоне с чеком - в отдельную ф-цию * prefill запускать в фоне и чекать периодически * починить все подвисания во всех потоках - дампить стеки при подвисании и таймаут * При убивании - грохать все удаленные процессы. Хранить машины и пиды в контесте и в файле * fadvise_hint=0 * Изменить в репорте сенсоров все на % от суммы от тестнод * посмотреть что с сетевыми картами * Intellectual granular sensors
Стат-обработка: расчет async расчет количества измерений расчет смешанных IOPS
Проверить работу вольюмов Чего такого с port fw python 2.6 Почему тайминги некорректные Копировать в папку оригинальный конфиг реюз вольюмс сделать
assumption_check.py почти все криво
charts.py 1) генерировать картинки с фиксированными именами
report.py украсить
rest_api.py переписать на prest