phxrpc icon indicating copy to clipboard operation
phxrpc copied to clipboard

epoll_wait的最后参数为什么是4MS ?

Open yeyilihappy opened this issue 6 years ago • 1 comments

如题,不应该通过计算定期或者超时事件最小触发时间而动态进行设置吗? 无就绪事件而有定时器来时,4ms会有延迟处理; 无就绪事件也无定时器来时,4MS触发的往下执行没有必要。

yeyilihappy avatar Jun 12 '18 12:06 yeyilihappy

https://github.com/Tencent/phxrpc/issues/31#issuecomment-340964431 可以参考这个comment。 无就绪事件的情况下,即使timeout参数填0,也会等待4ms左右,所以4ms是可填的最小的参数。 为什么timeout参数要填最小的?是因为随时有就绪的resp需要通过active_socket_func_回传给client,在吞吐低的时候,要通过EpollNotifier避免epoll_wait最长时长为timeout的卡顿;但吞吐的高低是有统计周期的,例如从高变低的过程中,EpollNotifier不能及时被触发,时长为timeout的卡顿还是会发生,所以timeout越小越好。

unixliang avatar Jun 26 '18 01:06 unixliang