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

Различные версии 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 г.) pthreads

C: \ темп> iperf -c solaris10
Клиент подключается к solaris10, TCP-порт 5001
Размер окна TCP: 64,0 КБайт (по умолчанию)

[3] локальный порт 10.172.181.159 2124 соединен с портом 10.172.180.209 5001
[ID] Интервальная пропускная способность передачи
[3] 0,0–10,2 с 10,6 МБ 8,74 Мбит / с

Ужасная производительность, но теперь я тестирую с одного и того же хоста (Windows XP SP3 32bit и 100Mbit) на тот же сервер (Solaris 10 / sparc 64bit и 1Gbit работает iperf 2.0.5 с окном по умолчанию 48k) с старый iperf

C: \ темп> 1iperf -v
iperf версии 1.7.0 (13 марта 2003 г.) потоки Win32

C: \ temp> 1iperf.exe -c solaris10 -w64k
Клиент подключается к solaris10, TCP-порт 5001
Размер окна TCP: 64,0 КБайт

[1208] локальный порт 10.172.181.159 2128 соединен с портом 10.172.180.209 5001
[ID] Интервальная пропускная способность передачи
[1208] 0,0-10,0 с 112 МБ 94,0 Мбит / с

Итак, один iperf с окном 64k говорит 8,75Mbit, а старый iperf с тем же размером окна говорит 94.0Mbit. Эти результаты постоянны при повторных испытаниях.

Из моего тестирования, запуск iperf (старый) с размером окна «x» и iperf (новый) с размером окна «x» вместо получения одинаковых или очень близких результатов дает совершенно разные результаты. Единственная разница, которую я вижу, - это старые, скомпилированные как потоки win32 и потоки pthread, но параллелизм (-P 10), похоже, работает в обоих.

Кто-нибудь знает или может порекомендовать инструмент, который дает результаты, которым я могу доверять?

РЕДАКТИРОВАТЬ: глядя на следы от (старого) iperf, он устанавливает флаг TCP Window Scale на 3 в пакете SYN, когда я запускаю (новый) iperf, он устанавливается на 0 в начальном пакете. Быстрый анализ размера окна через биржу показывает, что (старый) iperf перемещается взад и вперед, но в основном на 32k, в то время как (новый) iperf в основном держится на 64k. Может быть, это поможет кому-нибудь соединить точки.

В более поздней версии iperf, которая у вас есть, используется другая библиотека потоков (потоки win32 против pthread). Одно это могло объяснить разницу в производительности.

Между 1.x и 2.x может быть другая разница в коде iperf. Это может быть просто, например, изменение параметров по умолчанию с 1.x на 2.x (например, TCP_WINDOW_SIZE, ...).

Убедитесь, что оба используют TCP (или udp), например, повторно запустив с параметром --udp.

Вы можете попробовать архивы списков рассылки iperf-users или даже задать там свой вопрос.

Я не верю последнему утверждению в @ Ответ Фахда правильно! Клиенты Solaris и Linux iPerf определенно выдвигают правильную полосу пропускания для анализатора протокола. Windows iPerf 2.x получает неверное значение, но iPerf 1.07 - нет; поэтому мне пришлось использовать версию 1.x, чтобы получить точные результаты.

Это не считается правильным ответом, но пытались ли вы убедиться, что версия iperf на стороне Solaris совпадает с той, которую вы используете в Windows. Мне не удалось воспроизвести это с помощью iperf 2.0.4 в Linux и 2.0.5 в Windows. Поэтому я подозреваю, что наблюдаемое вами поведение связано с тем, что версия, используемая на вашем компьютере Solaris, не работает с последней версией для Windows.