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

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

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

因此,如果我将程序重新部署到 4 个容器,将生成 4 个 g++ 进程并开始工作。在 4 PLC 标记附近,我的 i3-2310M CPU 的所有核心都达到 100%。这里有一个图表,其中显示了我部署到的容器数量以及重新部署完成后再次接收数据所需的时间。

每个 PLC 数量的延迟图 这是 5 次测试运行的平均值,误差线表示标准误差。很明显,随着更多 g++ 进程的运行,时间应该会增加,但我无法解释它增加的方式。我本来预计会线性增加。

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

对于这种奇怪的模式有什么可能的解释吗?

答案1

您的处理器有两个核心。因此 1 个和 2 个 PLC 所花的时间相同。

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

这两条线路之所以汇聚,是因为只要有足够的 PLC,您就能够让两个核心几乎一直处于忙碌状态。

相关内容