Как я могу рассчитать подходящий объем канала? - PullRequest
0 голосов
/ 11 декабря 2018

Я ищу решение, потому что sth-канал заполнен.У меня проблемы с вычислением подходящей емкости емкости канала.

Этот документ имеет следующее описание.

Чтобы рассчитать подходящую емкость, простоПринимая во внимание следующие параметры:
・ Количество событий, которые должны быть помещены в канал источниками в единицу времени (скажем, 1 минута).
・ Количество событий, которые должны быть получены из канала приемникамиза единицу времени.
estimation Оценка количества событий, которые не удалось обработать за единицу времени и, таким образом, повторно ввести в канал (см. следующий раздел).

Как я могупроверить значения этих параметров?

1 Ответ

0 голосов
/ 24 июля 2019

Как я могу проверить значения этих параметров?

Вы не можете просто проверить эти параметры .Они зависят от вашего приложения.

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

Допустим, ваш генератор получает одно событие в секунду, и получателю требуется 2 секунды для управления этим событием.Теперь предположим, что у вас есть 3 получателя.За 1 секунду вы сможете обработать 0,5 события на получателя.У вас есть 3 приемника, поэтому ваши приемники вместе могут обрабатывать 0,5 × 3 = 1,5 события, что больше, чем вы получаете в качестве входных данных.Ваша емкость может быть 1 или 2, использование 2 значительно увеличит ваши шансы, что вас не заблокируют.

Давайте рассмотрим другой пример:

  • Ваш генератор хочет выдвинуть 1000 событий засекунда
  • Вашим приемникам требуется 3 секунды для обработки одного события
  • Вам потребуется 1000 x 3 = 3000 приемников (3000 подпрограмм, которые могут работать на полной скорости параллельно ...)

В этом примере общее количество получателей настолько велико, что вам нужно либо разбить код для работы на нескольких компьютерах, либо оптимизировать код получателя, чтобы он мог обрабатывать данные за определенное время,Скажем, у вас есть 50 процессоров, ваши приемники будут получать 1000 событий в секунду, все 50 могут работать на полной скорости, вам нужен один приемник для выполнения его работы:

50/1000 = 0,05 секунды

Теперь давайте предположим, что в большинстве случаев ваши программы занимают 0,02, но время от времени уходит 1 секунда.Это означает, что ваши программы могут быть немного позади.В этом случае ваша мощность (чтобы генератор не блокировался) должна быть чуть больше 1000.Опять же, это будет зависеть от того, сколько процедур будет замедлено и т. Д. В последнем примере время выполнения составляет 0,02 секунды, поэтому для обработки 1000 событий обычно требуется 0,02 секунды.Если вы можете отправить эти 1000 событий в течение 1 секунды, вам может даже не потребоваться 50 процедур, и они могут иметь меньшую емкость.С другой стороны, если у вас есть большие пакеты, в которых вы можете отправить много (скажем, 500) событий все в единицу , тогда больше процедур и большая емкость важны, чтобы не быть заблокированными.

...