Разные версии iperf для Windows дают совершенно разные результаты
Измерение выхода TCP от клиента Windows на сервер Solaris:
WXP SP3 с iperf 1.7.0 -> возвращает в среднем около 90 Мбит
Тот же клиент, тот же сервер, но iperf 2.0.5 для Windows -> возвращает в среднем 8,5 Мбит
Аналогичные расхождения наблюдались при подключении к другим серверам (W2008, W2003)
Трудно прийти к некоторым выводам, когда разные версии одного и того же инструмента дают совершенно разные результаты.
Пример ниже:
C: \ temp> iperf -v (из iperf.fr)
iperf версия 2.0.5 (8 июля 2010 г.)C:\temp>iperf -c solaris10
Клиент, подключающийся к solaris10, TCP-порт 5001
Размер окна TCP: 64,0 КБ (по умолчанию)[3] локальный порт 2124 10.172.181.159, соединенный с портом 5001 10.172.180.209
[ ID] Интервал передачи
[ 3] 0,0-10,2 с 10,6 МБайт 8,74 Мбит / с
Плохая производительность, но теперь я тестирую с того же хоста (Windows XP SP3 32-битный и 100 Мбит) на тот же сервер (Solaris 10/sparc 64-битный и 1 Гбит под управлением iperf 2.0.5 с окном по умолчанию 48k) со старым iperf
C: \ temp> 1iperf -v
iperf версия 1.7.0 (13 марта 2003) потоки win32C:\temp>1iperf.exe -c solaris10 -w64k
Клиент, подключающийся к solaris10, TCP-порт 5001
Размер окна TCP: 64,0 КБ[1208] локальный порт 2128 10.172.181.159, соединенный с портом 5001 10.172.180.209
[ ID] Интервал передачи
[1208] 0,0-10,0 с 112 МБ 94,0 Мбит / с
Таким образом, один iperf с окном 64 Кбит говорит о 8,75 Мбит, а старый iperf с тем же размером окна говорит 94,0 Мбит. Эти результаты постоянны благодаря повторным испытаниям.
Из моего тестирования я запустил iperf(старый) с размером окна "x" и iperf(новый) с размером окна "x" вместо того, чтобы давать одинаковые или очень близкие результаты, которые дают совершенно разные результаты. Единственное отличие, которое я вижу, заключается в том, что старый компилируется как потоки win32 против pthreads, но параллелизм (-P 10), похоже, работает в обоих случаях.
У кого-нибудь есть подсказка или вы можете порекомендовать инструмент, который дает результаты, которым я могу доверять??
РЕДАКТИРОВАТЬ: Глядя на следы от (старого) iperf, он устанавливает флаг масштабирования окна TCP на 3 в пакете SYN, когда я запускаю (новый) iperf, он устанавливается на 0 в исходном пакете. Быстрый анализ размера окна через обмен показывает, что (старый) iperf перемещается взад и вперед, но в основном на 32k, в то время как (новый) iperf в основном держится на 64k. Может быть, это поможет кому-то соединить точки.
3 ответа
Более поздняя версия iperf, которую вы используете, использует другую библиотеку потоков (потоки win32 и pthread). Уже одно это может объяснить разницу в производительности.
Там может быть какая-то другая разница кода между 1.x и 2.x iperf. Это может быть просто, например, параметры по умолчанию были изменены с 1.x на 2.x (например, TCP_WINDOW_SIZE, ...).
Убедитесь, что оба используют TCP (или udp), например, перезапустив с параметром --udp.
Вы можете попробовать архивы списков рассылки iperf-users или даже разместить свой вопрос там.
Это не считается правильным ответом, но вы пытались убедиться, что версия iperf на стороне Solaris совпадает с версией, которую вы используете в Windows. Я не смог воспроизвести это, используя iperf 2.0.4 на Linux и 2.0.5 на Windows. Поэтому я подозреваю, что поведение, которое вы видите, связано с тем, что версия, используемая на вашем устройстве Solaris, не очень хорошо работает с последней версией для Windows.
Я не верю, что последнее утверждение в ответе Фахада верное! Клиенты Solaris и Linux iPerf определенно используют правильную пропускную способность для каждого анализатора протокола. Windows iPerf 2.x не выводит правильное значение, но iPerf 1.07 - это; поэтому мне пришлось довольствоваться версией 1.x, чтобы получить точные результаты.