Al probar un servidor de multidifusión UDP que escribí en Windows 7 Ultimate x64, me encontré con una cosa muy curiosa. Reproducción de música con foobar2000 en el fondo significativamente mejorado tasa de transmisión del servidor aún también incurrió en la pérdida de paquetes menores. Al apagar la música, inmediatamente disminuyó la velocidad de transmisión a niveles inferiores a los aceptables, pero también produjo 0 pérdida de paquetes. (Tengo una aplicación cliente que habla con el servidor e informa sobre paquetes no reconocidos)Mejores prácticas de aplicaciones de red de alto rendimiento
Conozco el comportamiento de aceleración de Vista (y superior) para hacer que los medios y las aplicaciones de red jueguen bien, pero ciertamente no esperaba que la música mejoraría el rendimiento de la red, ni que apagarla degradara el rendimiento de la red de manera significativa.
¿Qué puedo hacer al respecto desde el punto de vista de código en mi aplicación de servidor para que funcione consistentemente tanto si reproduce música o no en Vista y más? Ciertamente me gustaría evitar tener que informar a todos mis clientes sobre cómo modificar su registro para obtener velocidades de transmisión aceptables, y también me gustaría evitar que simplemente "toquen música" para obtener velocidades de transmisión aceptables. La aplicación debería "funcionar" en mi opinión.
Estoy pensando que la solución implica algo similar a las prioridades del proceso, MMCSS, o posiblemente alguna otra llamada oscura de Windows API para que haga The Right Thing (TM) aquí.
Además, lo siento, pero la creación de un caso de prueba reproducible es una cantidad de trabajo no trivial. El comportamiento de aceleración se produce solo cuando el controlador de la NIC física está trabajando activamente y no se puede reproducir utilizando la interfaz de bucle invertido. Uno necesitaría una implementación de cliente, una implementación de servidor y hardware físico de red para probar.
cuando dice 'está reproduciendo música', ¿quiere decir que está reproduciendo música de su HD y usando la tarjeta de sonido? ¿O se está transmitiendo a través de la misma tarjeta de red? – Toad
@reinier: Sí, foobar2000 está cargando lentamente datos de HD y transmitiendo audio a la interfaz de audio externa a través de USB 2.0. –