Zajmuję się rozwojem serwera w C#. Serwer ten będzie działał jako serwer danych dla usługi kopii zapasowej: klient będzie wysyłać dane, dużo danych, w sposób ciągły, konkretnie wyśle fragment danych plików, do pięciu, w tym samym kanale tcp. Wyślę dane na serwer powoli, nie chcę zabijać przepustowości klientów, więc nie potrzebowałem przyspieszyć wysyłania danych do maksimum iz tego powodu mogę użyć jednego kanału TCP na wszystko.Socket.BeginReceive Performance na Mono
Powiedział, że tak naprawdę serwer używa metody BeginReceive do pozyskiwania danych z klienta, a w systemie Windows oznacza to IOCP. Moje pytania brzmią: w jaki sposób BeginReceive będzie działał na Linux-ie/freebsd? W systemie Windows przeczytałem wiele rzeczy, wykonam bardzo dobrze, ale to oprogramowanie, część serwerowa, będzie działała na platformie linux lub freebsd i nie wiem jak te metody są na niej zaimplementowane!
Więcej, aby zredukować dalsze alokacje obiektu Async State dla metody (Begin | End) Receive, w której znajduje się połączenie tcp, oraz w wywołaniu zwrotnym BeginReceive, a następnie skopiować dane przed ich ponownym użyciem (naturalnie nie. t jasne dane, ponieważ wiem, ile wartości odczytu EndReceive jest minimalna). Bufor ustawiony jest na 8kb, więc będę mógł maksymalnie skopiować 8kb danych, nie powinien zabijać resoruces.
Moim celem jest uzyskanie do 400/500 połączeń przy max. To nie jest tak dużo, ale serwer (maszyna) w międzyczasie będzie obsługiwał pliki za pomocą własnego systemu plików (opracowanego przy użyciu bezpiecznika najpierw w języku C# i później w C) w oprogramowaniu LVM + Linux Software Raid Mirror i antywirusowego sprawdzania przy użyciu clamav, tak oprogramowanie musi być jak najlżejsze!
Edycja: zapomniał, że urządzenie będzie (prawdopodobnie) Intel Core 2 Duo 2.66+ GHz (3 MB L2 - FSB 1066 MHz) 2 GB pamięci RAM, a więc przy użyciu 64 bitów.
Czy mono używa epoli (libevent) lub kqueue (na freebsd)? I powinienem zrobić coś konkretnego, aby zmaksymalizować wydajność? Czy mogę zrobić coś więcej, aby nie zabijać zasobów otrzymujących pakiety danych?
Witamy w społeczności! – JoshJordan