【发布时间】:2014-05-05 13:52:49
【问题描述】:
我一直在使用名为 ROS (http://www.ros.org) 的系统进行检查。
在 ROS 的网络节点之间发送了许多不同类型的数据。 您定义了要在消息中发送的数据结构,ROS 将处理打开两个节点之间的特定端口,该端口仅发送该数据结构。
所以如果有 5 个不同的消息,就会有 5 个不同的端口。
与这种情况相反,我见过其他平台只是将所有不同的消息推送到一个端口。这意味着需要进行某种复用/解复用(通过在接收端进行某种消息解析来完成)。
我想知道的是......从性能角度来看哪个更好?
操作系统是否会根据端口快速切换,以便像 ROS 这样的系统不必做太多工作来计算消息中的内容并进行解释?
或
打开大量端口是否意味着大量内核调用速度变慢,而必须计算和转换消息类型的成本最终会超过在端口之间切换所花费的时间?
当它以高速率扩展到大量数据和许多不同的消息类型时,将会有很多端口。所以我想,在扩展这些拓扑中的每一个时,性能将是选择工作方式的一个重要因素。
我还应该指出,这些节点通常存在于一个小型网络上,或者大部分时间存在于一台机器上,其中网络被用作进程间通信的一种力量。所以传输时间在整个系统时序中只是一个很小的因素。
ROS 作为一种机器人架构,可能每个传感器和执行器都有一个节点,因此根据您系统的复杂性,我们可能会讨论 20-30 个节点在 10-100Hz 之间推送小型(100 字节左右)数据
【问题讨论】:
标签: networking network-programming