У меня есть приложение, чувствительное к задержкам. Хотя мне важна пропускная способность, для меня важнее чрезвычайно низкая задержка.
Пожалуйста, предложите, как я могу оптимизировать свой сервер для достижения минимально возможной задержки, то есть минимально возможного времени ответа на запрос, полученный через сетевой интерфейс (или карту inifiniband), и опубликованный ответ.
Первоначальные мысли:
Статья Оптимизация серверов и процессов для повышения скорости кажется хорошим началом, но другие указания приветствуются.
Любые другие предложения приветствуются
Прежде всего, я думаю, вам следует установить и использовать ядро linux-rt
. Это ядро исправлено и позволяет прервать почти все ядро, за исключением нескольких очень маленьких областей кода («критические области raw_spinlock»). Это делается путем замены большинства спин-блокировок ядра мьютексами, которые поддерживают наследование приоритетов, а также путем перемещения всех прерываний и программных прерываний в потоки ядра.
Вытеснение - это акт временного прерывания задачи, выполняемой компьютерной системой, без необходимости ее взаимодействия и с намерением возобновить задачу в более позднее время.
blockquote>Читать Обзор преимущественного прерывания в реальном времени . Это позволит вам понять, как все работает, что позволит вам точно настроить ядро для вашего конкретного приложения.
Существует также RTLinuxFree , разработанная Wind River Systems, у которой также есть коммерческий аналог, если у вас есть деньги.
Для
linux-rt
я рекомендую прочитать RT WikiМожет быть, ваше приложение поддерживает RTAI ?
Возможно, важно иметь аппаратную тактовую частоту? Это может повлиять на переключение состояний питания ACPI, например, если ожидается, что ваша машина будет находиться в режиме ожидания в течение некоторого времени и должна быстро отвечать на сетевые запросы. Или, если вам нужно (очень) точное время и запись, скажем.
См. текст ссылки для дальнейшего обсуждения. Я не уверен, насколько последние, но опция аппаратных часов была все еще там в прошлый раз, когда я проверял (приблизительно 6 месяцев назад).