Estoy desarrollando un servidor en C#. Este servidor actuará como un servidor de datos para un servicio de respaldo: un cliente enviará datos, una gran cantidad de datos, de manera continua, específicamente enviará fragmentos de datos, hasta cinco, en el mismo canal tcp. Enviaré datos al servidor lentamente, no quiero matar el ancho de banda del cliente, así que no necesitaba acelerar en el envío máximo de datos y, por esta razón, puedo usar un solo canal tcp para todo.Socket.BeginReceive Performance en Mono
Dicho esto, en realidad el servidor utiliza el método BeginReceive para adquirir datos del cliente y, en Windows, esto significa IOCP. Mi pregunta es: ¿cómo funcionará BeginReceive en Linux/FreeBSD a través de mono? En Windows, he leído muchas cosas, funcionará muy bien, pero este software, la parte del servidor, se ejecutará en linux o freebsd a través de mono y no sé cómo se implementan estos métodos en él.
Más, para intentar reducir las asignaciones continuas de un objeto de estado Async para el método de recepción (Begin | End) mantengo uno para la conexión tcp y en la devolución de llamada BeginReceive copio datos antes de reutilizarlo (naturalmente no lo hago t borrar datos porque sé cuánto leyó a través del valor de retorno de EndReceive). El búfer está configurado en 8kb así que voy a copiar al máximo 8kb de datos, no debería matar a los resoruces.
Mi objetivo es obtener hasta 400/500 conexiones a un máx. No es tanto, pero el servidor (máquina), mientras tanto, manejará los archivos a través de un sistema de archivos propio (desarrollado usando fusibles primero en C# y luego en C) en LVM + Linux Software Raid Mirror y antivirus usando clamav para ¡el software debe ser liviano como pueda!
EDIT: Olvidé decir que la máquina será (probablemente) un Intel Core 2 Duo 2.66+ GHz (3 MB L2 - FSB 1066 MHz) con 2 GB de RAM y SO utilizando 64 bits.
¿Está mono usando epoll (libevent) o kqueue (en freebsd)? ¿Y debería hacer algo específico para intentar maximizar las actuaciones? ¿Puedo hacer algo más para no eliminar los recursos que reciben los paquetes de datos?
¡Bienvenido a la comunidad! – JoshJordan