在我的应用程序中,有三个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进程逻辑,我没有看到这个问题。
这种减速模式背后的可能解释是什么,以及对这种行为进行基准测试或分析的正确方法是什么?