Hi zhangpan, Glad to here feedback, as I written in my previous mail, after we modify the code to using RPC mechanism, ping works fine but we have random 10ms issue while our normal ping delay is <1ms, we think the reason it due to schedule delay in the main thread but we want the community to confirm that. For vector processing, I think there is a upper limit for wait packets in order to reduce packet processing delay, it should not wait that much for a batch.
2017-06-22 13:11 GMT+08:00 [email protected] <[email protected]> : > I didn't investigate the code but there's an assumption I would like to > share. > I encountered the same problem before, but what interested me is that I > found if you send multiple ping pkts as fast as you can, the problem went > away. > I tried different numbers and if it's a multiple of 4, VPP works just as > expected. > I just assumed that in order to perform “vector processing”, VPP first > waits for enough( > 4) pkts to store in a vector and then, process the > batch. If you send ICMP pkt one by one, VPP will only start to process > these pkts after receiving at lease 4 pkts. So for the first ping, the > latency is 1000ms. > > Best Regards, > > Pan > ------------------------------ > [email protected] > > > *发件人:* 张东亚 <[email protected]> > *发送时间:* 2017-06-22 11:09 > *收件人:* 雷彦章 <[email protected]> > *抄送:* vpp-dev <[email protected]> > *主题:* Re: [vpp-dev]答复: 【vpp-dev】delay is error in ping with multi worker > thread > Hi List, > > I am colleague of Leiyanzhang, let me describe share the issues and > investigations found when we test the ping command under multiple worker > thread case. > > Stage1: > > Issue: Ping does not work under multiple worker thread case. > Version: Vanilla vpp 17.04 > (vanilla vp) > > > Stage2: > Issue: Ping got > 1s delay result under multiple worker thread case, 1s is > the default ping interval, if we specify 10s interval, the delay will be > 10s delay. > Version: Vanilla vpp 17.04 + VPP-844 patch. > Our Solution: > as Lei pointed out, we think it's not correct for the worker thread to > directly using the ping_run_t's cli_process_id to notify the main thread > because the vlib_process_signal_event is using work thread vlib_main > structure, however since process is shared by main thread and worker, when > cli process in main thread timeout waiting event, it can still fetch the > event, but the delay will be the interval. > > State3: > Issue: Ping delay is not related with interval, but got 10ms+ delay > randomly. > Version: Vanilla vpp 17.04 + VPP-844 Patch + change to using > vl_api_rpc_call_main_thread to notify cli process in main thread. > Our solution: > After read vpp code, we think worker thread should use > vl_api_rpc_call_main_thread to notify cli process in main thread, after > will made the fix, the ping command works as expected most time with only > random 10ms+ delay. > > For this problem, we found the reason is related to > vl_api_rpc_call_main_thread only put then event to master thread > vl_input_queue, but does not notify and wake up master thread timely, the > main thread can only process this when linux_epoll_input returns, while > it will randomly sleep 10e3, if we change this value, the random ping delay > will change too. > > We want to hear feedback from the list and hope we can find a better way > to fix this. > >
_______________________________________________ vpp-dev mailing list [email protected] https://lists.fd.io/mailman/listinfo/vpp-dev
