Рассчитать оптимальный размер буфера для компромисса между задержкой и накладными расходами - PullRequest
0 голосов
/ 13 октября 2018

Итак ... проблема в следующем:

У меня есть 2 компьютера, которым нужно обмениваться данными.На одном из них (A) собираются данные датчика с около 6000 значений в секунду.Другой (B) получает эти данные, чтобы визуализировать их в виде графика или чего-то еще.Связь между A и B осуществляется через локальную сеть по протоколу TCP / IP.Так что теперь A использует буфер для временного сохранения n значений перед отправкой его в B. Отдельная отправка каждого значения приведет к большим издержкам.Установка размера буфера n в 6000 приведет к большой задержке, поскольку B получит «самое старое» значение в буфере с задержкой не менее 1 секунды, но значения должны быть доступны в B в течениеболее короткий интервал.Также, если я выберу больший размер буфера, передача из А в В может занять больше времени.

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

То, о чем я уже думал, было функцией для подсчета накладных расходов в зависимости от размера буфера n :

(6000 / n) * o
(n = buffer size, o = overhead in bytes)

Но это не очень помогает найтиоптимальный размер буфера n ...

Итак, теперь мой вопрос: как я могу рассчитать оптимальный размер буфера?По сути, мне нужно найти точку, в которой два значения (задержка и накладные расходы) находятся в оптимальном балансе, так что выбор другого размера буфера ухудшает одно из значений.Я уже читал об эффективности «Парето», так как, похоже, он решает именно эту проблему.Но я не думаю, что это правильный подход.Может быть, я просто не знаю правильное ключевое слово, чтобы найти его самостоятельно.Этот вид проблемы оптимизации также кажется мне знакомым, но я не знаю точно, что искать.

...