In generale, è possibile utilizzare alcuni degli switch avanzati dell'utilità iperf per ottenere una visione delle prestazioni di rete tra i sistemi, in particolare latenza e jitter ...
Si tratta di un flusso di messaggi basato su UDP o TCP?
Ho commentato sopra sulla necessità di ulteriori informazioni sulla tua configurazione. Se si tratta di un'applicazione di messaggistica a bassa latenza, esiste un intero mondo di tecniche di ottimizzazione e ottimizzazione che vanno dall'ottimizzazione dell'hardware, del driver e del sistema operativo. Ma davvero, abbiamo bisogno di maggiori informazioni.
Modificare:
Va bene, quindi questa è la messaggistica TCP. Hai modificato qualche /etc/sysctl.conf
parametro? Che aspetto hanno i buffer di invio / ricezione? L'uso da solo di un kernel in tempo reale non farà molto, ma se si passa al punto in cui si vincolano gli interrupt alla CPU, cambiare la priorità in tempo reale dell'app di messaggistica ( chrt
) e possibilmente modificare il tuned-adm
profilo del sistema può aiutare ...
Questo sembra essere un sistema EL6 generico, quindi un modo semplice per impostare una linea di base di ottimizzazione delle prestazioni prevede la modifica del profilo delle prestazioni del sistema con un altro disponibile all'interno del framework ottimizzato . Quindi costruire da lì.
Nel tuo caso:
yum install tuned tuned-utils
tuned-adm profile latency-performance
Una matrice rapida che mostra le differenze:
Puoi parlarci dell'hardware? Tipi di CPU, NIC, memoria?
Quindi, potrebbe essere interessante testare il tuo link ... Prova questo test iperf ...
Su un sistema, avviare un listener UDP iperf. Dall'altro, apri una connessione al primo ... Un rapido test di qualità della linea.
# Server2
[root@server2 ~]# iperf -su
# Server1
[root@server1 ~]# iperf -t 60 -u -c server2
Nel mio caso, jitter basso e tempo di ping basso:
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.15.3 port 5001 connected with 172.16.2.152 port 36312
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-20.0 sec 2.50 MBytes 1.05 Mbits/sec 0.012 ms 0/ 1785 (0%)
PING server1 (172.16.2.152) 56(84) bytes of data.
64 bytes from server1 (172.16.2.152): icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from server1 (172.16.2.152): icmp_seq=2 ttl=63 time=0.144 ms
Verificherei errori hardware e interfacce. Se lo desideri, elimina il passaggio tra i sistemi e osserva l'aspetto di una connessione diretta. Non vuoi un jitter elevato (varianza), quindi controlla quello.
Ma onestamente, anche con i tempi di ping che stai ottenendo sulla tua configurazione attuale, questo non dovrebbe essere sufficiente per uccidere l'applicazione. Vorrei seguire il percorso di ottimizzazione dei buffer di invio / ricezione. Vedere: net.core.rmem_max
, net.core.wmem_max
ed i loro valori di default ...
Qualcosa di simile al seguente in /etc/sysctl.conf
(sintonizzarsi a piacere):
net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216