[dpdk-dev] KNI latency improvement
Checks
Commit Message
Hi Ferruh,
There is latency in the range of milliseconds when packets are passed
through KNI up to the IP stack. With CONFIG_RTE_KNI_PREEMPT_DEFAULT=n
its required sacrifice a cpu core. Do you have any suggestion to improve
latency without sacrificing a cpu?
What do you think about using cond_resched() instead of
schedule_timeout_interruptible(), in our test it helped to reduce
latency?
Regards,
Nirmoy
Comments
On Fri, 29 Dec 2017 15:27:03 +0100
Nirmoy Das <ndas@suse.de> wrote:
> Hi Ferruh,
>
> There is latency in the range of milliseconds when packets are passed
> through KNI up to the IP stack. With CONFIG_RTE_KNI_PREEMPT_DEFAULT=n
> its required sacrifice a cpu core. Do you have any suggestion to improve
> latency without sacrificing a cpu?
>
> What do you think about using cond_resched() instead of
> schedule_timeout_interruptible(), in our test it helped to reduce
> latency?
>
That fully consumes a CPU core when doing KNI.
It would be better to figure out how to use a a NAPI style
API for this. I.e keep processing packet until idle,
then poll for a small window more, then if still idle
wait in kernel to be kicked by syscall from user space.
===================================================================
@@ -150,9 +150,8 @@ kni_thread_single(void *data)
}
up_read(&knet->kni_list_lock);
#ifdef RTE_KNI_PREEMPT_DEFAULT
- /* reschedule out for a while */
- schedule_timeout_interruptible(
- usecs_to_jiffies(KNI_KTHREAD_RESCHEDULE_INTERVAL));
+ /* reschedule out */
+ cond_resched();
#endif
}