Сокеты на одной машине для Windows и Linux - PullRequest
17 голосов
/ 29 октября 2009

Насколько эффективно использовать сокеты при выполнении IPC по сравнению с именованными каналами и другими методами в Windows и Linux?

Прямо сейчас у меня есть 4 отдельных приложения на 4 отдельных окнах, которые должны общаться. Два из них .NET 3.5 приложения, работающие на Windows Server 2003 R2. Два Linux (Suse Linux 10). Они обычно не связаны с процессором. Объем трафика не так велик, но очень важно, чтобы он имел низкую задержку. Сейчас мы используем сокеты с отключенным nagle и патчем медленного запуска sles10, установленным на компьютерах с Linux.

Как вы думаете, какой прирост скорости вы получите, просто запустив два приложения для Windows в одном окне Windows и два приложения для Linux в одном окне Linux и не внося изменений в код (т.е. все еще используя сокеты).

Осознают ли ОС, что конечные точки находятся на одной и той же машине, и знают, что пакеты с пакетами не выходят в Ethernet? Будут ли эти пакеты проходить через весь сетевой стек? Насколько быстрее это будет, если мы потратим время на переход к именованным каналам, файлам, отображенным в память, или к чему-то еще?

Ответы [ 2 ]

17 голосов
/ 30 октября 2009

Что касается производительности TCP, я недавно провел такой тест на сервере HP-UX (8 процессоров Intel Itanium 2 1,5 ГГц, 6 МБ, 400 МТ / с шиной) и на Red Hat Linux (2 IA-64 1 , 6 ГГц). Я использовал iperf для тестирования производительности TCP. Я обнаружил, что скорость обмена TCP более чем в десять раз выше, когда я запускаю iperf на одной машине, по сравнению с iperf на двух разных машинах.

Вы также можете попробовать, так как есть варианты, которые могут вас заинтересовать - длина буфера для чтения или записи, настройка TCP без задержки и т. Д. Также вы можете сравнить скорость обмена TCP на машинах с Windows, так как есть версия iperf для Winddws.

Это более подробное сравнение:

1) Скорость обмена TCP между двумя приложениями iperf, работающими на разных серверах HP-UX, окно TCP по умолчанию 32K: 387 Мбит / с

2) Скорость обмена TCP между двумя приложениями iperf, работающими на разных серверах HP-UX, окно TCP 512K: 640 Мбит / с

3) Скорость обмена TCP между двумя приложениями iperf, работающими на одном сервере HP-UX, окно TCP по умолчанию 32K: 5,60 Гбит / с

4) Скорость обмена TCP между двумя приложениями iperf, работающими на одном сервере HP-UX, окно TCP по умолчанию 512K: 5,70 Гбит / с.

5) Скорость обмена TCP между двумя приложениями iperf, работающими на одном сервере Linux, окно TCP 512K: 7,06 Гбит / с

6) Скорость обмена TCP между двумя приложениями iperf, работающими в HP-UX и Linux, окно TCP 512K: 699 Мбит / с

3 голосов
/ 29 октября 2009

Локальные именованные каналы будут работать быстрее, поскольку они работают в режиме ядра.

...