[dpdk-users] KNI Threads/Cores

Cliff Burdick shaklee3 at gmail.com
Wed Jun 8 18:30:27 CEST 2016

Hi, I have an application with two sockets where each core I'm planning to
transmit and receive a fairly large amount of traffic per core. Each core
right now handles a single queue of either TX or RX of a given port. Across
all the cores, I may be processing up to 12 ports. I also need to handle
things like ARP and ping, so I'm going to add in the KNI driver to handle
that. Since the amount of traffic I'm expecting that I'll need to forward
to Linux is very small, it seems like I should be able to dedicate one
lcore per socket to handle this functionality and have the dataplane cores
pass the traffic off to this core using rte_kni_tx_burst().

My question is, first of all, is this possible? It seems like I can
configure the KNI driver to start in "single thread" mode. From that point,
I want to initialize one KNI device for each port, and have each kernel
lcore on each processor handle that traffic. I believe if I call
rte_kni_alloc with core_id set to the kernel lcore for each device, then in
the end I'll have something like 6 KNI devices on socket one being handled
by lcore 0, and 6 KNI devices on socket 2 being handled by lcore 31 as an
example. Then my threads that are handling the dataplane tx/rx can simply
be passed a pointer to their respective rte_kni device. Does this sound

Also, the sample says the core affinity needs to be set using taskset. Is
that already taken care of with conf.core_id in rte_kni_alloc or do I still
need to set it?


More information about the users mailing list