Colobridge WIKI

измерение скорости доступа к серверу с помощью iperf

Применимость: Linux, windows

Слова для поиска: benchmark


Задача:

Нужно измерить реальную скорость доступа к серверу

Решение:

К сожалению общедоступные сервисы для измерения скорости доступа нельзя считать объективными.

Надо понимать, что это коммерческие проекты со специфическими задачами.

Измерения скорости доступа правильнее производить с помощью специальных утилит в конкретных условиях.

Iperf

Iperf — кроссплатформенная консольная клиент-серверная программа — генератор трафика для тестирования пропускной способности сети.

Для измерения требуется два хоста (компьютера). Например виртуальный сервер на хостинге и ваш ПК.

Размееется, лучше использовать другой сервер расположенный в сети с быстрыми и не нагруженными каналами связи.

Для тестирования производительности сети в течение 10 секунд:

На сервере выполняется команда:

iperf -s

На клиенте:

iperf -c server_host

Сервер:

 
iperf -s
  ------------------------------------------------------------
  Server listening on TCP port 5001
  TCP window size: 85.3 KByte (default)
  ------------------------------------------------------------
Клиент:
  
  iperf -c 95.169.186.76
------------------------------------------------------------
Client connecting to 95.169.186.76, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 77.72.128.66 port 38250 connected with 95.169.186.76 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  96.3 MBytes  80.5 Mbits/sec

На одной из сторон запускаем программу в режиме сервера:

iperf -s -p 42113 -l 256K -w 256K

На другой стороне запускаем программу с буферами по 256К на запись и чтение в режиме клиента который создает 10 потоков на протяжении 120 секунд:

iperf -c 77.72.128.72 -p 42113 -l 256K -w 256K -P 10 -t 120

Результат выполнения команды:

iperf -c 77.72.128.72 -p 42113 -l 256K -w 256K
------------------------------------------------------------
Client connecting to 77.72.128.72, TCP port 42113
TCP window size:   256 KByte (WARNING: requested   256 KByte)
------------------------------------------------------------
[  4] local 95.169.186.76 port 46549 connected with 77.72.128.72 port 42113
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  54.2 MBytes  45.5 Mbits/sec
[root@km31618 html]# iperf -c 77.72.128.72 -p 42113 -l 256K -w 256K -P 10 -t 120
------------------------------------------------------------
Client connecting to 77.72.128.72, TCP port 42113
TCP window size:   256 KByte (WARNING: requested   256 KByte)
------------------------------------------------------------
[  5] local 95.169.186.76 port 46551 connected with 77.72.128.72 port 42113
[  6] local 95.169.186.76 port 46552 connected with 77.72.128.72 port 42113
[ 14] local 95.169.186.76 port 46559 connected with 77.72.128.72 port 42113
[  8] local 95.169.186.76 port 46553 connected with 77.72.128.72 port 42113
[ 10] local 95.169.186.76 port 46555 connected with 77.72.128.72 port 42113
[ 11] local 95.169.186.76 port 46556 connected with 77.72.128.72 port 42113
[ 12] local 95.169.186.76 port 46557 connected with 77.72.128.72 port 42113
[  9] local 95.169.186.76 port 46554 connected with 77.72.128.72 port 42113
[ 13] local 95.169.186.76 port 46558 connected with 77.72.128.72 port 42113
[  4] local 95.169.186.76 port 46550 connected with 77.72.128.72 port 42113
write2 failed: Connection reset by peer
[ ID] Interval       Transfer     Bandwidth
[ 14]  0.0- 0.0 sec    188 KBytes  69.9 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-120.0 sec    152 MBytes  10.6 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  8]  0.0-120.1 sec    154 MBytes  10.8 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[ 12]  0.0-120.1 sec    152 MBytes  10.6 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[ 10]  0.0-120.1 sec    153 MBytes  10.7 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[ 13]  0.0-120.1 sec    152 MBytes  10.6 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0-120.1 sec    154 MBytes  10.7 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-120.2 sec    154 MBytes  10.8 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[ 11]  0.0-120.2 sec    142 MBytes  9.90 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  9]  0.0-120.4 sec    135 MBytes  9.41 Mbits/sec
[SUM]  0.0-120.4 sec  1.32 GBytes  94.0 Mbits/sec
таким образом я получил сумаррную ширину канала 94.0 Mbits/sec, что вполне соотвествует скорости используемых каналов для данного сервера.

Запуск сервера в UDP-режиме с выводом результатов раз в секунду, на порту 65005

iperf -u -s -i1 -p 65005

Тестирование UDP c длиной 100 байт со скоростью 20 Кбит/с в течение 180 секунд (имитация VoIP трафика, запускать нужно в обе стороны).

iperf -u -c server_host -l100 -b20k -t180

Послать поток 10 мегабит, на порт 65005

iperf -n 10m -p 65005 -c server_host

Вывод:

[[|ID]] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[[| 4]] 0.0- 1.0 sec   1.3 MBytes   10.0 Mbits/sec  0.209 ms    1/  894 (0.11%)


Актуальность: 2011/03/09 15:20