Сокеты на одном компьютере для Windows и Linux

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

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

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

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

Ответы

Ответ 1

Что касается производительности 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 Gбит/с

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 Мбит/с

Ответ 2

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