В настоящее время у меня есть приложение, которое получает сообщения в реальном времени с очень высокой скоростью, и мое приложение должно отображать эти сообщения мгновенно. Я прочитал об алгоритме nagles и понял, что он объединяет маленькие сообщения в одно большое сообщение и затем передает его (он предназначен для уменьшения количества пакетов подтверждения за счет небольшой задержки ACK). Мой вопрос заключается в том, чтобы отключить справку алгоритма Nagles мое заявление ? все мои сообщения будут отображаться в режиме реального времени, как только они будут получены. Любые предложения по этому вопросу будут оценены.
Обновить:
Также у меня есть только управление ресивером, будет отключение nagles algo. на получателя имеют какое-либо влияние или это влияет только когда его отключено на отправителя?
Nagle — это только алгоритм на стороне отправителя, поэтому, если вы можете влиять только на получателя, вы не можете его отключить.
Даже если вы можете повлиять на отправителя, отключение Nagle не очень эффективно при выполнении однонаправленной связи. В двунаправленной связи отключение Nagle может повысить пропускную способность, поскольку преимущества устранения задержек могут накапливаться, поскольку каждый узел может отправлять свои ответы немного раньше, что позволяет другой стороне отвечать даже раньше, чем это. Тем не менее, в случае одного направления отключение Nagle может уменьшить задержку на один прием, но эти преимущества не могут накапливаться, поскольку тот факт, что вы не задерживаете пакеты, не замедляет генерацию новых пакетов. Вы никогда не продвинетесь больше чем одним путешествием туда и обратно. Через Интернет это ~ 20-30 мс. По локальной сети это обычно ~ 1 мс
Если в вашей системе в режиме реального времени достаточно сложно, чтобы иметь значение задержка в один конец, то TCP — плохой протокол, и вы должны использовать вместо него UDP. Nagle является алгоритмом только TCP, поэтому он не влияет на UDP.
Просто для удовольствия: пинг локального компьютера в моей локальной сети <1мс. Это означает, что Nagle может только задержать мои сообщения до 1 мс. Кванты для планировщиков настольных компьютеров могут составлять 20-60 мс [1], и даже больше для серверов, поэтому я ожидаю, что удаление алгоритма nagle не окажет видимого влияния на мою локальную сеть, затмевая влияние других потоков на моем компьютере, потребляющих ЦП.
[1] http://recoverymonkey.org/2007/08/17/processor-scheduling-and-quanta-in-windows-and-a-bit-about-unixlinux/Других решений пока нет …