我有一个组件,它执行以下操作
- 使用基于源 A 的 tcp/ip 构建的自定义协议通过网络接受 SINGLE 消息
- 处理消息(大约需要 500 微秒)
- 使用基于 tcp/ip 构建的自定义协议通过网络将消息发送到不同的组件,例如端点 B
- 从端点 B 接收 ACK
- 向源 A 发送 ACK
冲洗并重复上述 5 个步骤。重要的是要了解源 A 不会发送第二条消息,直到它收到前一条消息的 ACK。
如您所见,该进程在以下情况下处于空闲状态
源 A 通过网络向组件发送一条消息的时间。源 A 和组件都在同一个 VLAN、以太网中。
组件将处理后的消息发送到端点 B 的时间。端点 B 也在通过以太网连接的同一 VLAN 中。
组件从端点 B 接收 ACK 的时间。
组件向源 A 发送 ACK 的时间。
以上是对组件职责的描述。从部署的角度来看,我计划在一台 8 核机器上生成 100 个这些组件。没有其他东西可以在机器上运行。端点 B 和源 A 都在不同的机器上,并且一切都在同一个以太网中。我的问题是,上述生成大量组件的模型是否会花费大部分时间等待网络 IO 导致上下文颠簸?如果是,为什么?