Skip to content
Snippets Groups Projects

benchmark replaces and NOPs

Merged Valentin Syrovatskiy requested to merge 135-benchmark-kit into master
All threads resolved!

Выводит результаты вида

image

image

Closes #135 (closed)

Edited by Valentin Syrovatskiy

Merge request reports

Merge request pipeline #12282 passed

Merge request pipeline passed for ae55e9f7

Approval is optional

Merged by Valentin SyrovatskiyValentin Syrovatskiy 2 years ago (Sep 29, 2022 1:17pm UTC)

Merge details

  • Changes merged into master with ae55e9f7.
  • Deleted the source branch.
  • Auto-merge enabled

Pipeline #12283 passed

Pipeline passed for ae55e9f7 on master

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Yaroslav Dynnikov
  • added 2 commits

    Compare with previous version

  • added 1 commit

    Compare with previous version

  • added 1 commit

    Compare with previous version

  • Yaroslav Dynnikov resolved all threads

    resolved all threads

  • Valentin Syrovatskiy changed the description

    changed the description

  • Я считаю ПР пора мержить, с задачей он справляется. Хотя есть ряд вещей, которые имеет смысл улучшить в будущем. Выпишу их здесь.

    1. Зависимость результата от количества файберов.

    Любую операцию в тарантуле можно модельно представить в виде двух частей - "полезную нагрузку", когда файбер что-то делает и занимает tx тред, и латенси - когда файбер йилдит и ждет, например, записи в wal.

    Как замеры не проводи, результирующий рпс будет показывать нам их сумму. А хочется все-таки видеть полезную нагрузку в чистом виде. Чтобы этого добиться, мы запускаем много файберов, но надо еще дождаться насыщения по цпу. Неплохо было бы эту задачу автоматизировать, но я пока не заю как.

    1. Время выполнения тестов.

    test_benchmark_replace сейчас делат n*c реплейсов, где c - количество файберов. Это приводит к линейному росту времени выполнения. Тест и так выполняется примерно минуту, а если я добавляю в табличку тест на 500 файберов, то получаю еще + 100 секунд примерно (500 файберов * 100_000 реплейсов / 500_000 рпс).

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

    1. Сбор результатов.

    Сейчас каждый бенчмарк считает и репортит рпсы сам по себе. Это дублирование кода. Это можно объединить.

    1. Вывод результатов.

    Чтобы увидеть результаты, test_benchmark_replace и test_benchmark_nop приходится запускать по-одному. К тому же, with capsys.disabled() как-то странно себя ведет, и я периодически наблюдаю логи пикодаты в консоли.

    На эту тему можно посмотреть в сторону https://smarie.github.io/python-pytest-harvest/. Идея простая - рядом заводится отдельная фикстура, в которую каждая тест функция отправляет свои репорты. А печатает их teardown фикстуры в конце всех тестов.

    Другой интересный проект - https://pypi.org/project/pytest-benchmark/. Сам по себе он нам вряд ли подойдет, но там можно почерпнуть идей - скриншоты с репортами у них красивые.

    1. Старт кластеров разного размера.

    Это тоже дублирование кода. Все то же самое можно было бы сделать при помощи @pytest.mark.parametrize

  • Yaroslav Dynnikov approved this merge request

    approved this merge request

  • added 2 commits

    Compare with previous version

  • added 2 commits

    Compare with previous version

  • Valentin Syrovatskiy changed the description

    changed the description

  • added 3 commits

    Compare with previous version

  • mentioned in issue #135 (closed)

  • Valentin Syrovatskiy enabled an automatic merge when the pipeline for ae55e9f7 succeeds

    enabled an automatic merge when the pipeline for ae55e9f7 succeeds

  • Valentin Syrovatskiy canceled the automatic merge

    canceled the automatic merge

  • Valentin Syrovatskiy enabled an automatic merge when the pipeline for ae55e9f7 succeeds

    enabled an automatic merge when the pipeline for ae55e9f7 succeeds

  • Valentin Syrovatskiy canceled the automatic merge

    canceled the automatic merge

  • Valentin Syrovatskiy enabled an automatic merge when the pipeline for ae55e9f7 succeeds

    enabled an automatic merge when the pipeline for ae55e9f7 succeeds

  • Valentin Syrovatskiy changed the description

    changed the description

  • Please register or sign in to reply
    Loading