EnvironmentОптимизация входящего UDP вещания в Linux
- Linux/RedHat
- 6 ядер
- Java 7/8
- 10G
Применение
- его низкой латентностью высокой частоты торгов применение
- А получает вещание через многоадресной UDP
- Есть несколько потоков данных
- Каждый Входящий размер пакета меньше, чем 1K (фиксированный размер)
- задержка Применение составляет около 4 микросекунды
Архитектура
- Отдельный поток приложения отображается в каждом потоке входящего многоадресного
- получает данные из сокета, используя multicastsocket.receive() в нативном байт
- Б обрабатываются и портфель заказов получают
Проблема
Несмотря на допустимую задержку приложения около 4 микросекунд, мы не можем получить желаемую производительность. Мы считаем, что это из-за латентности сети.
шаги по настройке используется
- Увеличение размера следующих параметров:
- netdev_max_backlog
- NIC кольцевого буфера приема Размер
- rmem_max
- tcp_mem
- socketreceivebuffer (в коде)
Вопрос:
- Мы заметили, что производительность приложения ухудшились после того, как мы увеличили значение указанных выше параметров. Каковы рекомендуемые параметры для оптимизации & рекомендуемых значений. Требуется руководство по оптимизации входящего вещания?
- Есть ли способ более точного измерения латентности сети в такой среде.Обратите внимание, что отправитель UDP является внешний объект (обмен)
Заранее спасибо
http://developerblog.redhat.com/2015/02/11/low-latency-performance-tuning-rhel-7/ (требуется подписка RedHat, хотя) –