erlang调度程序只是睡觉,为什么?

时间:2018-03-29 18:45:12

标签: erlang scheduler erl

我有下一个情况。 我们从tap接口读取数据包(700-800字节) 处理它们并发送回此界面。我们为一个数据包启动3个进程

当在1-10毫秒到来时,1-8个数据包处理它们每个需要1-5毫秒。 但是当我们得到更多(20-50)时,似乎有些事情发生了,而且调度员只能睡1-3秒。

首先我认为这是由于nif在接口中写入数据包需要1-2ms。 但是当我们从remsch发送数据包时 - 情况重复。

我运行这个功能' lists:foreach(fun(_) -> lager:log(error, [], "queue ~p ~n", [erlang:statistics(run_queue_lengths)]), timer:sleep(5) end, lists:seq(1, 200* 5)).' 并开始发送数据包

结果糟糕

2018-03-29 21:43:52.474 [error]  queue [1,0]
2018-03-29 21:43:52.480 [error]  queue [1,0]
2018-03-29 21:43:52.486 [error]  queue [0,0]
2018-03-29 21:43:52.492 [error]  queue [0,0]
2018-03-29 21:43:52.498 [error]  queue [0,0]
2018-03-29 21:43:52.504 [error]  queue [0,0]
2018-03-29 21:43:52.510 [error]  queue [1,0]
2018-03-29 21:43:52.516 [error]  queue [0,0]
2018-03-29 21:43:56.422 [error]  queue [0,0]
2018-03-29 21:43:56.630 [error]  queue [1,2]
2018-03-29 21:43:56.900 [error]  queue [0,0]
2018-03-29 21:43:56.905 [error]  queue [0,0]
2018-03-29 21:43:57.548 [error]  queue [1,2]
2018-03-29 21:43:57.554 [error]  queue [0,4]
2018-03-29 21:43:57.560 [error]  queue [1,0]
2018-03-29 21:43:57.567 [error]  queue [2,1]
2018-03-29 21:43:57.572 [error]  queue [0,0]
2018-03-29 21:43:57.578 [error]  queue [0,0]
2018-03-29 21:43:57.584 [error]  queue [0,0]
2018-03-29 21:43:57.590 [error]  queue [0,1]

调度程序肯定有任务要运行,但它没有

任何建议去哪儿看?

多次尝试,可以看到这样的结果 当一个调度程序具有更大的任务队列时发生睡眠

2018-03-30 16:47:57.952 [trace]  alive [0,0]
2018-03-30 16:47:57.963 [trace]  alive [1,0]
2018-03-30 16:47:57.974 [trace]  alive [0,0]
2018-03-30 16:47:57.985 [trace]  alive [1,0]
2018-03-30 16:47:57.996 [trace]  alive [0,0]
2018-03-30 16:47:58.410 [trace]  alive [40,3]
2018-03-30 16:47:58.431 [trace]  alive [20,1]
2018-03-30 16:47:58.450 [trace]  alive [14,0]
2018-03-30 16:47:58.461 [trace]  alive [0,0]
2018-03-30 16:47:58.472 [trace]  alive [0,0]
2018-03-30 16:47:58.483 [trace]  alive [1,0]
2018-03-30 16:47:58.494 [trace]  alive [0,0]

2018-03-30 17:04:59.446 [trace]  alive [0,0]
2018-03-30 17:04:59.839 [trace]  alive [0,0]
2018-03-30 17:05:00.367 [trace]  alive [3,0]
2018-03-30 17:05:00.676 [trace]  alive [70,1]
2018-03-30 17:05:01.534 [trace]  alive [0,0]
2018-03-30 17:05:01.702 [trace]  alive [2,0]
2018-03-30 17:05:01.713 [trace]  alive [0,0]
2018-03-30 17:05:01.724 [trace]  alive [0,0]

0 个答案:

没有答案