La latence entre 2 hôtes Linux est d'environ 0,23 ms. Ils sont connectés par un interrupteur. Ping et Wireshark confirment le numéro de latence. Mais, je n'ai aucune visibilité sur ce qui cause cette latence. Comment savoir si la latence est due à la carte réseau sur l'hôte A ou B ou au commutateur ou aux câbles?
MISE À JOUR: La latence de 0,23 ms est mauvaise pour mon application existante, qui envoie des messages à très haute fréquence et j'essaie de voir si elle peut être réduite à 0,1 ms
Réponses:
De manière générique, vous pouvez utiliser certains des commutateurs avancés de l' utilitaire iperf pour obtenir une vue des performances du réseau entre les systèmes, en particulier la latence et la gigue ...
S'agit-il d'un flux de messages basé sur UDP ou TCP?
J'ai commenté ci-dessus avoir besoin de plus d'informations sur votre configuration. S'il s'agit d'une application de messagerie à faible latence, il existe tout un monde de techniques de réglage et d'optimisation qui couvrent le matériel, les pilotes et le réglage du système d'exploitation. Mais vraiment, nous avons besoin de plus d'informations.
Éditer:
D'accord, il s'agit donc de la messagerie TCP. Avez-vous modifié des
/etc/sysctl.conf
paramètres? À quoi ressemblent vos tampons d'envoi / réception? L'utilisation d'un noyau en temps réel seul ne fera pas grand-chose, mais si vous passez au point où vous liez des interruptions aux CPU, changer la priorité en temps réel de l'application de messagerie (chrt
) et éventuellement modifier letuned-adm
profil du système peut aider ...Cela semble être un système EL6 générique, donc un moyen facile de définir une base de réglage des performances implique de changer le profil de performances du système en un autre disponible dans le cadre optimisé . Construisez ensuite à partir de là.
Dans ton cas:
Une matrice rapide montrant les différences:
Pouvez-vous nous parler du matériel? Types de CPU, NIC, mémoire?
Donc, il peut être intéressant de tester votre lien ... Essayez ce test iperf ...
Sur un système, démarrez un écouteur iperf UDP. De l'autre, ouvrez une connexion avec le premier ... Un test rapide de qualité de ligne.
Dans mon cas, faible gigue et temps de ping faible:
Je vérifierais le matériel et les interfaces pour les erreurs. Si vous le souhaitez, supprimez le basculement entre les systèmes et voyez à quoi ressemble une connexion directe. Vous ne voulez pas de gigue élevée (variance), alors vérifiez cela.
Mais honnêtement, même avec les temps de ping que vous obtenez sur votre configuration actuelle, cela ne devrait pas être suffisant pour tuer votre application. Je choisirais de régler vos tampons d'envoi / réception. Voir:
net.core.rmem_max
,net.core.wmem_max
et leurs valeurs par défaut ...Quelque chose comme ce qui suit
/etc/sysctl.conf
(veuillez régler au goût):la source
tuned-adm
profil.