Sto sviluppando un server in C#. Questo server fungerà da server di dati per un servizio di backup: un client invierà dati, molti dati, continuamente, in particolare invierà blocchi di dati di file, fino a cinque, nello stesso canale TCP. Trasmetterò i dati lentamente al server, non voglio uccidere la larghezza di banda del cliente, quindi non ho avuto bisogno di accelerare al massimo invio di dati e, per questo motivo, posso usare un singolo canale TCP per tutto.Socket.BeginReceive Performance on Mono
Detto questo, in realtà il server utilizza il metodo BeginReceive per acquisire dati dal client e, su Windows, questo significa IOCP. Le mie domande sono: come BeginReceive si esibirà su linux/freebsd tramite mono? Su Windows, ho letto un sacco di cose, si esibiranno molto bene ma questo software, la parte server, funzionerà su linux o freebsd tramite mono e non so come siano implementati questi metodi!
Altro, per provare a ridurre le allocazioni continue di un oggetto Async State per il metodo di ricezione (Begin | End) ne mantengo uno per la connessione TCP e nel callback BeginReceive copio i dati prima di riutilizzarlo (naturalmente non lo faccio t dati chiari in perché so quanta lettura attraverso il valore di ritorno di EndReceive). Buffer è impostato su 8kb, quindi a max copie 8kb di dati, non dovrebbe uccidere resoruces.
Il mio obiettivo è di ottenere fino a 400/500 connessioni al massimo. Non è tanto, ma il server (macchina), nel frattempo, gestirà i file attraverso un proprio filesystem (sviluppato utilizzando il fusibile prima in C# e successivamente in C) su LVM + Linux Software Raid Mirror e controllo antivirus usando clamav so il software deve essere leggero come può!
EDIT: Ho dimenticato di dire che la macchina sarà (probabilmente) un processore Intel Core 2 Duo 2.66+ GHz (3 MB L2 - FSB 1066 MHz) con 2 GB di RAM e il SO utilizzando 64 bit.
È mono che utilizza epoll (libevent) o kqueue (su freebsd)? E dovrei fare qualcosa di specifico per cercare di massimizzare le prestazioni? Posso fare qualcosa in più per non uccidere le risorse che ricevono i pacchetti di dati?
Benvenuti nella comunità! – JoshJordan