Я не сделал ничего необычного для моего оборудования или конфигураций ядра (все настройки по умолчанию, новая установка ОС, ядро Linux 3.11 стек TCP / IP), и я усредняю около 3,83 миллиона сообщений в секунду через TCP, в то время как я в среднем только 0,75 миллион сообщений в секунду через UDP. Кажется, это полностью противоречит тому, что я ожидаю от двух протоколов.
Какая наиболее вероятная причина такой разницы и как я могу диагностировать ее в Ubuntu 13.10?
#TCP RESULTS
Recv Send Send Utilization Service Demand
Socket Socket Message Elapsed Send Recv Send Recv
Size Size Size Time Throughput local remote local remote
bytes bytes bytes secs. 10^6bits/s % S % S us/KB us/KB
87380 65536 64 10.00 1963.43 32.96 17.09 5.500 2.852
#UDP RESULTS
Socket Message Elapsed Messages CPU Service
Size Size Time Okay Errors Throughput Util Demand
bytes bytes secs # # 10^6bits/sec % SS us/KB
4194304 64 10.00 7491010 0 383.5 28.97 24.751
212992 10.00 1404941 71.9 25.03 21.381
Для этого теста у меня есть два тестовых сервера, которые идентичны и напрямую подключены через перекрестный кабель 10G. В этом случае используются сетевые адаптеры Intel X520 с готовыми конфигурациями, подключенные к слоту PCIe 3.0 x8 на материнской плате, который обменивается данными с процессором через контроллер NUMA.
netperf
для тестов, тестов UDP_STREAM и TCP_STREAM, фиксированных для того же процессора и 64-байтовых размеров сообщений.