AIDE SVP! J'ai une application qui doit être aussi proche que possible du traitement en temps réel et je continue à courir dans ce problème de délai inhabituel avec TCP et UDP. Le retard se produit comme sur des roulettes et c'est toujours la même durée (la plupart du temps entre 15 et 16 ms). Cela se produit lors de la transmission à n'importe quelle machine (veille locale) et sur n'importe quel réseau (nous en avons deux).Quel est le délai pour en TCP/UDP?
Un rapide résumé du problème:
J'utilise toujours winsock en C++, compilé dans VS 2008 Pro, mais je l'ai écrit plusieurs programmes pour envoyer et recevoir de diverses manières à l'aide de TCP et UDP. J'utilise toujours un programme intermédiaire (s'exécutant localement ou à distance) écrit en plusieurs langues (MATLAB, C#, C++) pour transmettre les informations d'un programme à l'autre. Les deux programmes winsock fonctionnent sur la même machine, de sorte qu'ils affichent des horodatages pour Tx et Rx à partir de la même horloge. Je continue à voir apparaître un schéma où une rafale de paquets sera transmise et il y a un retard d'environ 15 à 16 millisecondes avant la prochaine rafale, sans retard programmé. Parfois, il peut y avoir 15 à 16 ms entre chaque paquet au lieu de une rafale de paquets. D'autres fois (rarement) j'aurai un retard de longueur différent, comme ~ 47 ms. J'ai toujours l'impression de recevoir les paquets à l'intérieur d'une milliseconde d'entre eux étant transmis avec le même motif de retard étant exposé entre les rafales transmises.
Je soupçonne que winsock ou la carte réseau est en train de tamponner des paquets avant chaque transmission, mais je n'ai trouvé aucune preuve. J'ai une connexion Gigabit à un réseau qui reçoit différents niveaux de trafic, mais je ressens la même chose lors de l'exécution du programme intermédiaire sur un cluster qui a un réseau privé sans trafic (des utilisateurs au moins) et une connexion 2 Gigabit. Je vais même éprouver ce retard en exécutant le programme intermédiaire localement avec les programmes d'envoi et de réception.
Si vous avez besoin de "temps réel", avez-vous envisagé d'utiliser un système d'exploitation en temps réel? –
Les décisions ont été prises avant que j'aie été employé ici et ils ont déjà un cluster de 100k $ et plus qui fonctionne sous Windows Compute Cluster. Si je devais choisir, je supprimerais le cluster et exécuterais les calculs sur une seule machine à quatre processeurs, donc aucune communication réseau ne serait nécessaire. – ACE2100