Максимальное количество пакетов в секунду .NET-сокеты - PullRequest
3 голосов
/ 01 мая 2011

Я понимаю, что производительность будет связана с машиной. Но, скажем, два ядра i7 ПК с гигабитной локальной сетью между ними, один из которых отправляет 1 тыс. Пакетов так быстро, как может, а другой получает их, что будет грубым предположением о том, сколько пакетов в секунду вы ожидаете?

Я спрашиваю, потому что я реализую протокол с использованием необработанных сокетов, и я могу отправлять около 100 000 пакетов по 1 Кбит / с, но мне кажется, что я могу получать только где-то между 20 000 и 40 000 пакетов в секунду. Отправка удивительно постоянна, но количество принимаемых пакетов в секунду сильно варьируется между двумя значениями. Когда я достигаю этого предела приема, загрузка процессора составляет около 20% Почему отправка, по-видимому, намного быстрее, чем получение?

Я не делаю никакой обработки на приеме, а просто снова вызываю прием после последнего приема с тем же буфером. Я использую BeginSendTo и BeginReceiveFrom с соответствующим EndReceive и т. Д. Может быть, 20-40 000 ппс это очень хорошо? Какого типа pps достигают другие люди, и вы начинаете пропускать какие-либо пакеты с более высокой скоростью? Если вы хотите «выжать каждую унцию» из сокетов tx / rx, какие методы лучше всего использовать и на что обратить внимание.

Все советы / идеи, которые стоит попробовать

...