Приостановить обработку внутри разрушителя lmax?

Я хотел бы провести тест производительности с помощью Lmax Disruptor:

  • Настроить dusruptor
  • Как-то "приостановить" обработку
  • Добавить много сообщений в RingBuffer
  • "Возобновить" обработку

Таким образом, я мог точно измерить, насколько быстро буфер становится пустым. Если я «смешиваю» добавление большого количества сообщений (что приводит к некоторым задержкам) и обработку, у меня могут быть менее определенные результаты по скорости обработки.

Однако я не нашел «приостановки», доступной в LMAX Disruptor (https://lmax-exchange.github.io/disruptor/docs/com/lmax/disruptor/dsl/Disruptor.html ), есть ли способ сделать это?


person Askar Ibragimov    schedule 26.01.2017    source источник
comment
Я не уверен, что добавление большого количества сообщений приводит к задержке. Можете ли вы объяснить, что, по вашему мнению, может вызвать это?   -  person jasonk    schedule 26.01.2017


Ответы (1)


Ответ во многом зависит от того, что вы подразумеваете под приостановкой работы разрушителя.

У вас может легко получиться потребитель, который не освобождает слоты в кольцевом буфере, пока не достигнет сообщения nth. Однако время, необходимое для опустошения кольцевого буфера, полностью зависит от скорости потребителя.

Однако, если вы хотите сопоставить стоимость самого разрушителя, это гораздо более сложное предложение. Я бы начал с изучения собственных тестов производительности проектов Disruptor.

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

person Sam Turtel Barker    schedule 27.01.2017