Как рассчитать пропускную способность с помощью C # - PullRequest
2 голосов
/ 12 ноября 2010

Я хочу измерить ширину полосы, используя c #.Вот что я сделал.Комментарии и предложения приветствуются.

  1. Найти максимальную полезную нагрузку udp (на моем тестовом стенде - 1472 байта)
  2. Создать несжимаемые данные с размером 1472 байта
  3. Отправитьэти данные от сервера к клиенту несколько раз (в моем тесте это 5000 пакетов)
  4. Клиент запускает секундомер в момент прибытия первого пакета
  5. Когда все данные отправлены, отправьте уведомлениеклиенту, заявив, что все данные были отправлены
  6. Клиент остановит секундомер
  7. Я рассчитываю пропускную способность как (общий отправленный пакет (5000) * MTU (1500 байтов)) / промежуток времени
  8. Iобратите внимание, что некоторые пакеты являются потерями.лучший, потеря 20%.в худшем случае потеря 40%.Я не учел это при расчете пропускной способности.Я подозреваю, что клиентское сетевое устройство испытывает переполнение буфера.Нужно ли мне учитывать этот фактор?

Если у вас, ребята, есть какие-либо предложения или комментарии, не стесняйтесь это делать.

Спасибо.

1 Ответ

1 голос
/ 12 ноября 2010

Для расчета полосы пропускания я бы использовал TCP вместо UDP. Когда вы используете UDP, все дейтаграммы могут очень быстро выходить через вашу сетевую карту (со скоростью 100 Мбит / с) и помещаться в очередь на «медленном канале» цепи (например, кабельный модем / маршрутизатор 512 Кбит / с). Если буфер очереди заполнится, вполне вероятно, что дейтаграммы будут отброшены. Так что ваш тест не очень надежен.

Я бы использовал TCP и использовал бы некоторые математические средства для преобразования скорости TCP (КБ / с) в пропускную способность (Мбит / с) (я думаю, что издержки TCP составляют около 8%)

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