Я не робив нічого незвичайного для моєї конфігурації апаратного забезпечення або ядра (всі налаштування за замовчуванням, свіжа установка ОС, 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. NIC, що використовуються в цьому випадку, - це Intel X520 з нестандартною конфігурацією та підключений до слота PCIe 3.0 x8 на материнській платі, який спілкується з процесором через контролер NUMA.
netperf
для тестів, тести UDP_STREAM і TCP_STREAM, зафіксовані на одному процесорі та розмірами 64-байтних повідомлень.