0
我的应用程序等待更长的时间,然后我在超时规定:epoll_wait块超时在<code>epoll_wait</code>
22578 09:33:46.959791 epoll_wait(5, <unfinished ...>
22578 09:33:50.010794 <... epoll_wait resumed> [], 128, 1498) = 0
...
22034 09:35:07.686896 epoll_wait(5, <unfinished ...>
22034 09:35:09.482526 <... epoll_wait resumed> [{EPOLLIN, {u32=151458248, u64=151458248}}], 128, 362) = 1
...
22036 09:35:41.433241 epoll_wait(5, <unfinished ...>
22036 09:35:43.176881 <... epoll_wait resumed> [], 128, 97) = 0
我请求超时值,但是时机表明,它等待的时间间隔更长的时间。
从日志的时间是可靠的 - 我是从strace
输出。 我能做些什么,使超时在epoll
更细粒度的? 为什么epoll_wait
如此多的不正确呢?
我在其他线程中跳过了很多中间处理处理。从其他线程的处理中,我得出结论,我不处于资源匮乏的状态。你能给出更具体的想法如何进一步调查?我唯一的想法是调查调度程序的操作。从执行记录开始并... ...? – user1641854
尝试在单独的线程中运行的1毫秒定时器(用'epoll_wait',或timerfd),并检查其抖动。 –
我能够稳定地重现问题,实际上根本原因是调度程序。 – user1641854