Wie effizient ist die Verwendung von Sockets beim IPC im Vergleich zu Named Pipes und anderen Methoden unter Windows und Linux?Sockets auf derselben Maschine für Windows und Linux
Im Moment habe ich 4 separate Apps auf 4 separaten Boxen, die kommunizieren müssen. Zwei sind .NET 3.5-Anwendungen, die auf Windows Server 2003 R2 ausgeführt werden. Zwei davon sind Linux (Suse Linux 10). Sie sind im Allgemeinen nicht CPU-gebunden. Die Menge an Datenverkehr ist nicht so groß, aber es ist sehr wichtig, dass es eine niedrige Latenz hat. Wir verwenden derzeit Sockets mit deaktiviertem Nagle und dem Slow Start-Patch sles10, der auf den Linux-Rechnern installiert ist.
Wie viel von einer Geschwindigkeitssteigerung glaubst du, würden wir einfach durch Ausführen der beiden Windows-Apps auf der gleichen Windows-Box und den beiden Linux-Apps auf der gleichen Linux-Box und ohne Code-Änderungen (dh immer noch mit Sockets).
Wird das Betriebssystem erkennen, dass die Endpunkte auf demselben Rechner liegen und nicht mit den Paketen zum Ethernet gehen? Müssen die Pakete noch den gesamten Netzwerkstack durchlaufen? Wie viel schneller ist es, wenn wir uns die Zeit nehmen, zu Named Pipes oder Memory-Mapped-Files oder etwas anderem zu wechseln?
Dies ist einfach zu testen. Testen Sie es einfach. –
+1, jeffamaphone: keine vagen Kommentare oder anekdotische Beweise spielen hier eine Rolle. Was zählt, ist, wie * Michaels * Programme sich verhalten. –
Einverstanden, ich sollte es testen. Das ist der einzige Weg, um sicher zu sein, angesichts der Unterschiede in Netzwerken, Setups usw. Aber ich habe nur gehofft, dass jemand eine Verbindung zu jemandem hat, der bereits einen sehr ähnlichen Test gemacht hat. Ich kann mir nicht vorstellen, dass ein rigoros Vergleich der Leistung dieser Dinge eine neue Idee ist - es wurde wahrscheinlich 100 Mal von Leuten gemacht, die mehr über Vernetzung wissen als ich. –