Tengo una aplicación java que usa unas cuantas instancias de MulticastSocket para escuchar en algunas fuentes de multidifusión UDP. Cada zócalo se maneja mediante un hilo dedicado.
El hilo lee cada Datagram, analiza su contenido y escribe para registrar (log4j) el ID de secuencia del paquete (largo) y la fecha y hora en que se recibió el Datagram.java - Problemas de MulticastSocket en Windows Server 2008
Cuando trato de ejecutar 2 instancias de la misma aplicación en un servidor Windows 2008 R2, con 2 * 6 núcleos y comparar las 2 registros creados por las 2 aplicaciones, noto que con bastante frecuencia la sincronización de los paquetes no es lo mismo
La mayoría de los paquetes son recibidos por las 2 aplicaciones al mismo tiempo (Milis), pero con frecuencia hay una diferencia de aproximadamente 1-7ms diff entre el tiempo de recepción del mismo paquete por las 2 aplicaciones.
Intenté asignar más búferes en la NIC, y también hice que el búfer de lectura de zócalos fuera más grande. Además intenté minimizar las ejecuciones de GC y también uso -verbose: gc y puedo ver que los tiempos de GC y la diferencia de temporización problemática no ocurren al mismo tiempo. Esto me permite suponer que mi problema no está relacionado con GC.
No se observó ningún problema de paquetes de caída, y no es probable que exista un problema de ancho de banda.
Ideas/Opiniones son bienvenidas. Gracias.
AFAIK La frecuencia de interrupción del sistema operativo es de 1 por 10 ms, por lo que el sistema operativo no puede garantizar precisiones de tiempo superiores a esa. –