2009-10-29 10 views
16

Jak efektywne jest korzystanie z gniazd podczas wykonywania IPC w porównaniu do nazwanych potoków i innych metod w systemach Windows i Linux?Gniazda na tej samej maszynie dla systemów Windows i Linux

W tej chwili mam 4 oddzielne aplikacje na 4 oddzielnych polach, które muszą się komunikować. Dwa z nich to aplikacje .NET 3.5 działające w systemie Windows Server 2003 R2. Dwa to Linux (Suse Linux 10). Zwykle nie są one związane z procesorem. Ilość ruchu nie jest tak duża, ale bardzo ważna, aby była to mała zwłoka. Używamy teraz gniazd z funkcją "nagle dis-abled" i zainstalowaną łatą sles10 slow-start na urządzeniach Linux-a.

Jak myślisz, ile przyspieszenia prędkości dostaniemy po prostu uruchamiając dwie aplikacje systemu Windows w tym samym oknie systemu Windows i dwie aplikacje linuksowe w tym samym oknie systemu Linux i nie wykonując żadnych zmian kodu (tj. Nadal używając gniazd).

Czy system operacyjny zorientuje się, że punkty końcowe znajdują się na tym samym komputerze i nie wychodzą z sieci do sieci Ethernet? Czy pakiety nadal będą musiały przejść przez cały stos sieciowy? O ileż szybciej byłoby, gdybyśmy poświęcili czas na zmianę nazwanych potoków lub plików mapowanych w pamięci lub coś innego?

+7

To jest łatwe do przetestowania. Po prostu przetestuj to. –

+3

+1, jeffamaphone: nie ma tu żadnych niejasnych komentarzy ani niepotwierdzonych dowodów. Ważne jest, jak zachowują się * programy Michaela *. –

+3

Zgoda, powinienem to przetestować. To jedyny sposób, aby wiedzieć na pewno, biorąc pod uwagę wszystkie różnice w sieciach, konfiguracjach itd. Miałem jednak nadzieję, że ktoś będzie miał link do kogoś, kto już zrobił bardzo podobny test. Nie mogę sobie wyobrazić, że rygorystyczne porównywanie wydajności tych rzeczy jest nowym pomysłem - prawdopodobnie wykonano go 100 razy przez ludzi, którzy wiedzą dużo więcej na temat networkingu niż ja. –

Odpowiedz

16

Jeśli chodzi o wydajność TCP, przeprowadziłem ostatnio tego rodzaju test na serwerze HP-UX (8 procesorów Intel Itanium 2 1,5 GHz, 6 MB, 400 MT/s szyny) i na systemie Red Hat Linux (2 IA-64 1,6 Ghz). Użyłem iperf w celu przetestowania wydajności TCP. Zauważyłem, że szybkość wymiany TCP jest ponad dziesięć razy szybsza, gdy uruchamiam iperf na tym samym komputerze w porównaniu do uruchamiania iperf na dwóch różnych maszynach.

Możesz także spróbować, ponieważ są opcje, które mogą Cię zainteresować - długość bufora do odczytu lub zapisu, ustaw TCP no delay i tak dalej. Możesz także porównać szybkość wymiany TCP na komputerach Windows, ponieważ istnieje wersja iperf dla Winddws.

Jest to bardziej szczegółowe porównanie:

1) Szybkość wymiany TCP pomiędzy dwoma applicatons iperf działających na innym HP-UX oknie serwera, domyślnie TCP 32K: 387 Mbit/s

2) Prędkość Wymiana TCP między dwoma aplikacjami iperf działającymi na różnych serwerach HP-UX, okno TCP 512K: 640 Mb/s

3) Szybkość wymiany TCP między dwoma aplikacjami iperf działającymi na tym samym serwerze HP-UX, domyślne okno TCP 32K: 5,60 Gb/s

4) Szybkość wymiany TCP między dwoma aplikacjami iperf działającymi na tym samym serwerze HP-UX, domyślne okno TCP 512K: 5,70 Gb/s.

5) Szybkość wymiany TCP pomiędzy dwoma applicatons iperf uruchomionych na tym samym serwerze Linux, okna TCP 512K: 7,06 Gb/s

6) Szybkość wymiany TCP pomiędzy dwoma applicatons iperf z systemem HP-UX i Linux , Okno TCP 512K: 699 Mbitów/sek.

+0

To jest idealne. Uruchomi to na moim setupie jako początek. Dzięki! –

3

Lokalne potoki nazwane będą szybsze, ponieważ działają w trybie jądra.

+0

Uzgodnione. Ale pod względem wielkości, czyli większego skoku, jaki przechodzisz od (Gniazda na różnych maszynach) -> (Gniazda na tej samej maszynie) -> (Potoki nazwane)? Ile kosztuje kupowanie aplikacji na tym samym komputerze, a nie poświęcanie czasu na konwersję do nazwanych potoków? –

+0

uruchamianie aplikacji na tym samym komputerze spowoduje duży wzrost wydajności, ponieważ opóźnienie w sieci Ethernet zostanie drastycznie zmniejszone. Przeniesienie do nazwanych potoków prawdopodobnie zwiększy Twój poziom, jeśli będziesz tego potrzebować. Zalecam najpierw wypróbować tylko stos TCP/IP, a następnie przejść do nazwanych potoków, jeśli absolutnie potrzebujesz tego wzmocnienia. Szanse są, ale nie mogę tego na pewno wiedzieć, ponieważ nie wiem wystarczająco dużo o twojej sytuacji. – Randolpho

+2

Używaj gniazd domeny UNIX! Będą one równe lub zbliżone do nazwanych potoków pod względem wydajności, ale będą prawie identyczne z używanymi gniazdami TCP. – ephemient

Powiązane problemy