Ho un'applicazione java che utilizza alcune istanze MulticastSocket per ascoltare in alcuni feed multicast UDP. Ciascuno di questi socket è gestito da un thread dedicato.
Il thread legge ciascun datagramma, ne analizza il contenuto e scrive nel log (log4j) l'ID della sequenza del pacchetto (lungo) e il timestamp ricevuto dal datagramma.java - Problemi con MulticastSocket su Windows Server 2008
Quando provo a fare funzionare 2 istanze della stessa applicazione su un Windows Server 2008 R2, con 2 * 6 core e confrontare i 2 registri creati dai 2 applicazioni, ho notato che molto spesso i tempi dei pacchetti non è lo stesso
I più pacchetti vengono ricevuti dalle 2 applicazioni contemporaneamente (milis), ma spesso c'è una differenza di circa 1-7ms diff tra il tempo di ricezione dello stesso pacchetto dai 2 applicazioni.
Ho provato ad allocare più buffer nella scheda NIC e ho anche aumentato il buffer di lettura del socket. Inoltre ho provato a ridurre le esecuzioni di GC e uso anche -verbose: gc e posso vedere che i tempi di GC e la differenza di temporizzazione problematica non si verificano allo stesso tempo. Questo mi consente di presumere che il mio problema non sia legato al GC.
Non è stato rilevato alcun problema di pacchetti di rilascio e non è probabile un problema di larghezza di banda.
Idee/Opinioni sono i benvenuti. Grazie.
La frequenza di interruzione del sistema operativo AFAIK è 1 per 10 ms, pertanto il sistema operativo non può garantire una precisione temporale superiore a quella. –