Назад | Перейти на главную страницу

настройки TCP с низкой задержкой в ​​Windows 2008 R2

Я использую стороннее программное обеспечение на сервере W2008. Этот клиент подключается к серверу через TCP. Среднее время пинга между ними составляет 1 мс. Однако, когда я проверяю tcp-соединение в мониторе ресурсов для приложения, он показывает задержку как 20 мс.

Я запустил захват пакетов на клиентском интерфейсе и увидел время подтверждения <1 мс. Настройки tcp на стороне клиента следующие:

Receive-Side Scaling State          : enabled 
Chimney Offload State               : automatic 
NetDMA State                        : enabled 
Direct Cache Acess (DCA)            : disabled 
Receive Window Auto-Tuning Level    : normal 
Add-On Congestion Control Provider  : ctcp 
ECN Capability                      : disabled 
RFC 1323 Timestamps                 : disabled 

Также я установил TcpNoDelay и TcpAckFrequency как 1 в реестре для конкретного интерфейса. На сетевой карте включена разгрузка.

Как монитор ресурсов вычисляет эту задержку TCP в 20 мс? Есть ли в Win2008 какие-либо другие параметры TCP, которые могут уменьшить эту задержку?

Итак, для начала, монитор ресурсов / perfmon использует систему измерения, отличную от той, что использует WireShark и т. Д., Поэтому, возможно, задержка отличается.

Не вдаваясь в подробности API Windows, разница вызвана постобработкой и низким приоритетом.

Учитывая, что фактическая задержка составляет 1 мс, нет никаких дополнительных настроек, которые вы могли бы применить, и я не знаю каких-либо изменений, которые вы могли бы внести, чтобы «исправить» perfmon Windows API, чтобы он отображал «правильную» задержку.

Если хотите, я могу найти точную причину, почему perfmon работает медленнее, но на основе предыдущего опыта вышеупомянутая причина - почему.