Как проверить скорость на Socket? - PullRequest
5 голосов
/ 23 декабря 2010

Я пишу программу, которая может пересылать IP-пакеты между двумя серверами, так как проверить скорость программы?спасибо!

Ответы [ 2 ]

7 голосов
/ 23 декабря 2010

Существует ряд метрик, которые могут заинтересовать ваших потенциальных пользователей.

Задержка - это время отправки сообщения, которое обычно указывается в микросекундах для совмещенных устройств и в миллисекундах для всех других сценариев.Обычно он указывается как «задержка нулевого байта», что означает время, необходимое для передачи метаданных сообщения.Чем ниже, тем лучше.

Полоса пропускания измеряется в битах в секунду.Он часто указывается как «пиковая пропускная способность» и может быть получен путем отправки огромного количества данных по линии.Чем выше, тем лучше.

Загрузка ЦП - это процент процессорного времени, необходимого для передачи сообщения.Сетевые протоколы, которые могут разгрузить передачу сообщения, имеют низкое использование, что означает, что связь может «перекрывать» некоторые другие вычисления в пользовательском приложении, что имеет эффект скрытия задержки.Чем ниже, тем лучше.

Все они измеряются просто вариацией теста ping , обычно называемого "пинг-понг":

Node 1:
    for n = 1 to MAXSIZE, step via n*=2
    send message of size n bytes
    receive a response of size n bytes

Node 2:
    for n = 1 to MAXSIZE, step via n*=2
    receive a message of size n bytes
    send response of size n bytes

Также естьтест "пинг-пинг", в котором оба узла пишут друг другу одновременно.Это требует неблокируемой связи для установки.

Просто выведите n и время, необходимое для каждой итерации.Первый раз - задержка нулевого байта.Самая большая устойчивая n/time - это полоса пропускания (для отраслевого стандарта конвертирование в биты в секунду).Вы также можете измерить загрузку ЦП, необходимую для выполнения больших итераций, но это сложная тема для совершенно другого вопроса.

4 голосов
/ 23 декабря 2010

Взгляните на iperf.Вы можете найти его на http://sourceforge.net/projects/iperf/ Если вы гуглите вокруг, вы найдете учебники для него.Вы можете посмотреть на источник и получить некоторые хорошие идеи о том, как он это делает.Я использую это для рутинного тестирования, и это довольно надежно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...