kubernetes DPDK polling-mode threads isolation from kubelet and system processes

36 Views Asked by At

I have a pipeline-model-based DPDK application running in a kubernetes POD with many threads running in polling mode (at 100% CPU).

I want to have the best performances as possible for this application. To check the performances, I check the DPDK rte_eth_stats imissed counter, it corresponds to a network card drop counter at the input of the application (RX).

I use the k8s Guaranteed QoS mode with CPU/RAM resource requests = limits, and static scheduling in kubelet.

In the application configuration, the assignment of threads to CPU is done manually using the linux kernel process number.

The challenge I have is that a cpu is assigned to e.g. kubelet but I don't know which one, the application is started and it either conflicts with the cpu where kueblet is running, or kubelet is running on the second thread of a physical core I want to assign to the DPDK polling mode threads. The consequence is that there are packet drops when it happens.

I would like to use a specific cpu for kubelet so that it does not interfere with my application. How can I do it?

I found a reservedSystemCPUs kubelet parameter. I assigned some CPUs explicitly in this parameter, (static list), but kubelet is still scheduled on cpus conflicting with my application.

Thank you

0

There are 0 best solutions below