线性CPU工作增加的解释导致双步延迟增加

我正面临一个奇怪的现象,我无法解释CPU /内核的使用情况。 我在运行OpenPLC的Ubuntu机器上运行了几个Docker容器。 关于这一点唯一有趣的部分是,当我重新部署到PLC时,它运行g ++编译器来重新编译一个程序。 我有一个额外的容器来控制这些重新部署。

所以如果我将程序重新部署到4个容器,4 g ++的进程将会产生并且工作。 围绕4 PLC标志,我的i3-2310M CPU拥有100%的所有内核。 在这里,我有一个图表,展示了部署的容器数量,以及重新部署完成后再次接收数据的时间。

每个PLC的延迟图 这些是5次testing运行的手段,错误栏表示标准错误。 很明显,随着更多的g ++进程运行,时间应该会增加,但是增加的方式是我无法解释的。 我会预期线性增长。

这些PLC容器将Modbus / TCP数据包发送到控制容器,我使用Wireshark在重新部署之前的最后一条消息和之后的第一条消息之间测量时间。

任何可能的解释这个怪异的模式?

你的处理器有两个内核。 所以1台和2台PLC需要花费相同的时间。

除此之外,它几乎是线性的。 有一行包括所有的偶数(两个核都忙),一个包括所有奇数(其中一个核有时没有工作要做,因为只剩下一个作业)。

两条线汇合,因为有了足够的PLC,几乎可以保持两个内核都处于忙碌状态。