Я хочу настроить TCP-стек Windows 7 на скорость в локальной сети.
Немного справочной информации: у меня есть Citrix XenServer, настроенный с Windows 2008R2, Windows 7 и Debian Lenny с ядром Citrix, на компьютерах Windows установлены инструменты iperf
серверный процесс запущен на другом хосте, также на Debian Lenny. В остальном серверы простаивают, тесты были повторены несколько раз для подтверждения результатов.
Во время тестирования с iperf
2008R2 может достигать скорости около 600-700 Мбит / с без каких-либо настроек, но я не могу найти никакого руководства или набора параметров, которые позволят Windows 7 достичь чего-либо более 150 Мбит / с без изменения размера окна TCP с использованием -w
параметр для iperf
.
Я пробовал использовать netsh
autotuining
к disabled
, experimental
, normal
и highlyrestricted
- без изменений. Изменение congestionprovider
ничего не делает, так же как rss
и chimney
.
Установка всех доступных параметров на те же значения, что и на хосте Windows 2008R2, не помогает.
Подвести итоги:
iperf -w 65536
: 400-500 Мбит / сВ то время как недостающие 400 Мбит / с в производительности я виню дрянную сетевую карту Realtek на хосте XenServer (я могу передавать ~ 980 Мбит / с с моего ноутбука на сервер iperf), это не объясняет, почему Windows 7 не может достичь хорошей производительности без ручной настройки размера окна на уровень приложения.
Итак, как настроить Windows 7?
Это может быть другой сетевой драйвер в Windows 2008R2 и Windows 7. Кроме того, всегда ли xenserver предоставляет один и тот же виртуальный драйвер для Windows 2008R2 и Windows 7? Потому что, если он другой, будет загружен другой драйвер.
Могут быть некоторые различия в производительности.
РЕДАКТИРОВАТЬ: Я только что вспомнил, что в Windows 7 по умолчанию очень маленькие буферы отправки / получения. В некоторых приложениях, которые я разрабатывал, я обнаружил, что под Windows 7 это было что-то жалкое, вроде 8 КБ. Под ubuntu linux это около 120 КБ. Вы можете где-то прочитать, что ограничение составляет 64 КБ. На самом деле это неверно для более поздних версий Windows. Я обнаружил, что его можно установить даже на 1 МБ и более. Хотя при таком большом увеличении производительности будет замечено небольшое увеличение.
Эта ссылка предоставляет некоторые параметры настройки tcp в реестре, которые применяются ко всей системе. Имейте в виду, что многие из этих параметров могут быть отменены самими приложениями.
http://www.psc.edu/networking/projects/tcptune/ http://www.psc.edu/networking/projects/tcptune/OStune/winxp/winxp_stepbystep.html
Попробуйте увеличить размер окна и буферы отправки / получения. Надеюсь, эти настройки реестра, указанные по ссылке, по-прежнему применяются в Windows 7.
Попробуйте включить RSS и Механизм разгрузки TCP:
netsg int tcp set global rss=enabled
netsh int tcp set global chimney=enabled
TCP Autotuning (который вы уже исключили), MTU, который уже был адресован, и MMCS (планирование классов мультимедиа) обычно являются большими различиями. Поскольку MMCS еще не решена, попробуйте отключить ее.
Убедитесь, что автоматическое масштабирование окна tcp отключено, если вы находитесь на скорости LAN или близки к ней.
Инструкции доступны здесь: http://smallvoid.com/article/winnt-services-mmcss.html
Вы не должны видеть драйвер Realtek внутри Windows как виртуальную машину на Citrix XenServer. Если да, это означает, что у вас не установлен XenTools. Сетевая карта Realtek, которую вы видите, является эмулированной, предоставляемой службой QEMU внутри Dom 0 (домен 0). После установки ОС Windows, прежде чем делать что-либо еще, особенно установку приложения, вам необходимо установить XenTools. Кроме того, скорость жестко запрограммирована после установки XenTools (как указано в Руководстве пользователя виртуальной машины), так как на виртуальном устройстве нет ограничений на скорость.