Mehr Performance

Die zweite Beobachtung umfasst die schlechte Korrelation von Mehrprozess- und Einzelprozess-Testergebnissen für einige RMW-Implementierungen. Das gilt jedoch nicht für Connext. Einige RMWs, die in den Ergebnissen der Einzelprozesse eine gute Performance liefern, sind tatsächlich die schlechtesten Performer, wenn der gleiche Test für mehrere Prozesse durchgeführt wird. Das liegt an der Verwendung von Local Delivery, einer Verknüpfung, die erkennt, ob sich das Datenziel im selben Prozess wie die Quelle befindet, und den Netzwerkstapel umgeht sowie die Daten direkt an ihr Ziel verschiebt.

Für die lokale Bereitstellung in einer einzelnen Prozessapplikation gibt es Anwendungen, meistens ist das jedoch nicht repräsentativ für ein bereitgestelltes System. Hat man also ein System entworfen, das von der Bereitstellung mehrerer ROS-Nodes im selben Prozess abhängt und diese zusätzliche Performance für große Datenmengen reduzieren muss, lässt sich das auch durch das Senden eines Datenzeigers anstelle der eigentlichen Daten erreichen.

Zudem unterstützt Connext DDS einen Zero-Copy-Modus, der die Performance beim Senden großer Datenmengen innerhalb eines Prozesses oder über den gemeinsam genutzten Speicher steigern kann. Darüber hinaus umgeht der von Connext verwendete Zero-Copy-Ansatz die Serialisierung und das Protokoll nicht und verursacht daher keine unerwünschten Nebeneffekte bei der Kopplung. Allerdings verwendet die Connext Zero Copy eine spezielle API, die sich der ROS-RMW-API nicht zuordnen lässt. Mit rtiperftest, dem RTI-Performance-Benchmark-Tool, lassen sich die Vorteile der Zero-Copy-Funktion sowie umfangreichere Performance-Szenarien untersuchen.

Benchmarks können also wertvoll sein, wenn sie unter realistischen Bedingungen für den eigenen Anwendungsfall durchgeführt werden.

Veröffentlicht am
Kategorisiert in Robotik

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert