Настройка параметров ОС для улучшения задержки
Мы пытаемся улучшить среднюю задержку прокси-приложения Java.
Приложение Java получает сообщение от клиента и передает его на нужный сервер.
Протокол двоичный, асинхронный.
Топология:
Client (1) - Java proxy (2) - Server (3)
Поток вызовов
(1)-(2)-(3)-(2)-(1)
Требование составляет 2 мс средней задержки для одного направления направления для прокси Java.
Мы заметили, что если мы увеличиваем количество клиентов, накладные расходы уменьшаются линейно.
Скажем,
1 client -> Java proxy latency overhead = 6 ms.
2 clients -> Java proxy latency overhead = 3 ms.
4 clients -> Java proxy latency overhead = 1.5 ms.
С другой стороны, мы должны соблюдать требования к задержке даже с одним клиентом.
То же самое поведение мы наблюдаем, если мы заменим Java-реализацию прокси на реализацию Erlang.
Можем ли мы сделать что-нибудь для низкоуровневой настройки ОС?
Хост прокси Java - это 2 процессора Nehalem X5550 2,67 ГГц, всего 16 HW потоков; Red Hat Enterprise Linux Server, выпуск 5.6
2 ответа
Перед тем, как вы проведете тестирование, я должен убедиться, что JVM прогрета и установлена в режиме реального времени. Вы должны быть в состоянии достигнуть задержки ниже 0,1 мс сверх задержки сети.
Ваш Java прокси блокируется, пока он ожидает ответа Сервера? Это объясняет времена, которые вы видите.