我有下一个情况。 我们从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]