从上下文切换到下面模型中的颠簸的退化?

时间:2012-01-06 16:58:50

标签: linux context-switch

我有一个组件,它执行以下操作

  1. 使用来自源A的tcp / ip构建的自定义协议通过网络接受SINGLE消息
  2. 处理消息(大约需要500微秒)
  3. 使用通过tcp / ip构建的自定义协议,通过网络将消息发送到另一个组件,例如端点B
  4. 从端点B收到ACK
  5. 向源A发送ACK
  6. 冲洗并重复上述5个步骤。重要的是要理解源A不会发送第二条消息,直到它收到先前消息的ACK。

    正如您所看到的,在以下情况下,该过程处于空闲状态

    1. 源A通过网络向组件发送一条消息的时间。源A和组件都在同一VLAN,ethernet。

    2. 组件将已处理的消息发送到端点B的时间。端点B也在通过以太网连接的同一VLAN中。

    3. 组件从端点B接收ACK的时间。

    4. 组件向源A发送ACK的时间。

    5. 以上是对组件责任的描述。从部署的角度来看,我计划在一台8核机器上产生100个这样的组件。机器上没有其他任何东西可以运行。端点B和源A都在不同的机器上,一切都在同一个以太网中。 我的问题是,产生大量组件的上述模型是否会花费大部分时间等待网络IO导致上下文颠簸?如果是,为什么?

1 个答案:

答案 0 :(得分:0)

我不确定你为何担心。首先,你设计一个效率低下的协议,然后担心它会有多快?

测量它,这是唯一确定的方法。

我怀疑只有100个线程或进程会导致上下文切换速率出现任何问题。