Приоритизация сброшенных сообщений с Netty - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время я пытаюсь внести свой вклад в исследовательский проект / проект с открытым исходным кодом, в котором я пытаюсь расставить приоритеты для определенных сообщений на основе заданного приоритета в Spark (использует Netty).Тестовый пример, над которым мы работаем, находится в единственном экземпляре: сообщение 10 ГБ сбрасывается в буфер TCP, но затем приходит сообщение 10 КБ с более высоким приоритетом, и мы хотим иметь возможность отправить более высокий приоритет перед другим послебольший был уже сброшен (x мс назад).

Идея заключалась в определении приоритетов TCP с помощью Traffic Control в Linux (https://unix.stackexchange.com/questions/5231/how-to-give-http-traffic-higher-priority). К сожалению, это было опробовано, и оно не работает хорошо.В то же время мы также внедрили взвешенную очередь для этих передач данных, т. е. всегда сбрасываем высокоприоритетные сразу, в то время как ставим в очередь низкоприоритетные. Однако проблема здесь в следующем: когда Netty точно сбрасывает некоторые данные,вероятно, не предоставляет никакой обратной связи о состоянии сети. Как видно из (https://github.com/netty/netty/issues/1847 и https://github.com/netty/netty/issues/6541).

Еще одно интересное наблюдение: когда мы запускаем два экземпляра Spark, один с небольшим заданием(10 МБ в случайном порядке), другой с гигантским заданием (20 ГБ в случайном порядке). Время передачи небольшого задания едва блокируется bу тебя огромная работа.Легко понять, что ОС будет справедливо разделять пропускную способность для этих двух экземпляров Spark.Таким образом, единственная возможность, которая может привести к значительной задержке в этом небольшом задании, когда мы запускаем эти два задания вместе в одном экземпляре Spark, - это (мы серьезно подозреваем) Netty сбрасывает данные в промежуточный буфер, управляемый JVM, иэтот буфер будет сбрасывать данные в настоящий буфер TCP в порядке FIFO.

Есть ли у кого-нибудь какие-либо идеи / указания, которые можно попробовать, или что-нибудь о JVM / Netty, о котором мы, похоже, не знаем?

Спасибо!

...