2009-11-03 32 views
4

我一直在使用名爲ROS(http://www.ros.org)的系統檢出一些作品。很多數據量很少的端口,或者一個端口有很多數據?

在ROS中的網絡節點之間有很多不同類型的數據被髮送。 您可以定義一個要發送到消息中的數據結構,ROS將處理在兩個節點之間打開一個只發送該數據結構的特定端口。

所以如果有5個不同的消息,將會有5個不同的端口。

與此場景相反,我看到其他平臺只是將所有不同的消息推送到一個端口。這意味着需要一種多路複用/解複用(由接收器端的某種消息解析完成)。

我在想什麼......從性能角度來看哪個更好?

操作系統是否快速基於端口進行切換,以便像ROS這樣的系統不需要做太多的工作來計算出消息中的內容並解釋它?

OR

是開放大量的端口將意味着大量的慢內核調用的,並具有制定和翻譯的消息類型最終會被更多的則時間成本花在端口之間進行切換?

當以高速率和大量不同的消息類型擴展到大量數據時,會有很多端口。所以我設想在擴展這些拓撲時,性能將成爲選擇工作方式的重要因素。

我還應該指出,這些節點通常存在於一個小型網絡中,或者大部分時間都在一臺機器上,其中網絡被用作進程間通信的力量。所以傳輸時間只是整個系統時間的一個非常小的因素。因爲根據系統的複雜性,我們可能會談論20-30個節點在10個節點之間推送小數據(100字節左右)的數據, 100Hz

回答

1

這取決於。我不知道ROS的細節,但在網絡它歸結爲以下限制:

  • 距離:光的速度是快,但在距離它開始發揮作用

  • 協議開銷:與面向無連接的

在操作系統方面,維護空閒端口的列表是沒有這樣多的開銷的連接 - 當然有它成本一切都是相對的:如果您正在談論一個具有長距離鏈路的分佈式系統,那麼很容易爭辯說,與管理通信質量相比,通過OS網絡端口進行循環的關注度更低。

沒有一個更具體的問題,我會在這裏停下來。

+0

謝謝jldupont,我會更新與更多的細節問題。 我沒有考慮過這個級別的問題 – Fuzz

1

我沒有這方面的任何數據,但似乎有理由認爲多核心繫統可以更有效地處理多個端口,而不是程序內部的多路分離。

+0

我想這也是這種情況......但誰知道底層操作系統如何處理它 – Fuzz