[dpdk-dev] drops while transmitting to the kni using rte_kni_tx_burst()
ferruh.yigit at intel.com
Tue Jan 17 18:49:13 CET 2017
On 1/17/2017 12:34 PM, Shirley Avishour wrote:
> can the KNI_KTHREAD_RESCHEDULE_INTERVAL decrease to lower values than 5
> usecs?? is it effective at all?
You are right, it may not be since metric is usecs, and
usecs_to_jiffies() most probably will give same value for 5 and lower.
Removing that sleep completely (CONFIG_RTE_KNI_PREEMPT_DEFAULT=n) helps
> and what is the purpose of KNI_RX_LOOP_NUM? I am not sure I understand
> what it does and what should I do with it to improve the performance.
Increasing the loop number, also increases the work/sleep ratio, and
increasing the performance a little.
> On Mon, Jan 16, 2017 at 5:43 PM, Shirley Avishour
> <shirley at imvisiontech.com <mailto:shirley at imvisiontech.com>> wrote:
> KNI_KTHREAD_RESCHEDULE_INTERVAL is currently set to 5usec. how
> should I tweak this value to get better performance?
> and can you explain the use of KNI_RX_LOOP_NUM and what can I
> possibly modify it to ?
> On Mon, Jan 16, 2017 at 4:55 PM, Ferruh Yigit
> <ferruh.yigit at intel.com <mailto:ferruh.yigit at intel.com>> wrote:
> On 1/16/2017 2:47 PM, Shirley Avishour wrote:
> > Hi,
> > As I wrote the kernel thread runs on a dedicated lcore.
> > running top while my application is running I see kni_single and the cpu
> > usage is really low...
> > Is there any rate limitation for transmitting to the kernel interface
> > (since packets are being copied in the kernel).
> Yes, kind of, kernel thread sleeps periodically, with a value
> defined by
> KNI_KTHREAD_RESCHEDULE_INTERVAL. You can try tweaking this
> value, if you
> want thread do more work, less sleep J
> Also KNI_RX_LOOP_NUM can be updated for same purpose.
> > On Mon, Jan 16, 2017 at 4:42 PM, Ferruh Yigit <ferruh.yigit at intel.com <mailto:ferruh.yigit at intel.com>
> > <mailto:ferruh.yigit at intel.com
> <mailto:ferruh.yigit at intel.com>>> wrote:
> > On 1/16/2017 12:20 PM, Shirley Avishour wrote:
> > > Hi,
> > > I have an application over dpdk which is consisted of
> the following threads
> > > each running on a separate core:
> > > 1) rx thread which listens on in a poll mode for traffic
> > > 2) 2 packet processing threads (for load balancing)
> > > 3) kni thread (which also runs on a separate core).
> > This is kernel thread, right? Is it bind to any specific core?
> > Is it possible that this thread shares the core with 2nd
> > thread when enabled?
> > >
> > > the rx thread receives packets and clones them and
> transmit a copy
> > to the
> > > kni and the other packet is sent to the packet
> processing unit
> > (hashing
> > > over 2 threads).
> > > the receive traffic rate is 100Mbps.
> > > When working with single packet processing thread I am
> able to get
> > all the
> > > 100Mbps towards the kni with no drops.
> > > but when I activate my application with 2 packet processing
> > threads I start
> > > facing drops towards the kni.
> > > the way I see it the only difference now is that I have
> > threads
> > > which handles an mbuf and frees it once processing is
> > > Can anyone assist with this case please?
> > >
> > > Thanks!
> > >
More information about the dev