Разные версии 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) потоки win32

C:\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, чтобы получить точные результаты.

Другие вопросы по тегам