为什么erlang周期性流程执行时间会随着时间的推移而发生巨大变化

时间:2017-01-12 10:22:11

标签: process erlang

在我的应用程序中,有三个erlang进程以10ms,1s和5s的间隔周期性地运行,让我们分别称它们为进程A,B和C;并且有两个c节点,X和Y,它们执行一些低级硬件访问。

c-nodes有一个固定的linux线程池,用于同时处理从erlang进程收到的查询。当调用阻塞时,一个erlang进程只能向c节点发送一个查询,但是c节点可以从不同的erlang进程接收多个调用,并通过它的固定线程池同时为它们提供服务。

在我的应用程序中,A和C正在使用c-node X的服务,而进程是使用c-node Y的服务进行的。

我们观察到所有三个erlang进程的执行时间随着时间的推移而大幅变化,即从进程A开始,B和C分别在3ms,100ms和250ms完成任务,但是在一小时内它增加到200毫秒,600毫秒,1300毫秒,然后它再次缓慢下降到3毫秒,100毫秒和250毫秒,并且随着我们继续运行,我们正在重复看到这种模式。

我在C应用程序中也实现了相同的erlang进程逻辑,我没有看到这个问题。

这种减速模式背后的可能解释是什么,以及对这种行为进行基准测试或分析的正确方法是什么?

0 个答案:

没有答案