[vSRX] High CPU utilization in Linux Guest OS for lcore process

  [KB34451] Show Article Properties


Summary:

This article explains why high CPU utilization may be seen in the Juniper Linux Guest OS for the lcore process, and indicates whether any action is necessary.

 

Symptoms:

On the vSRX M and XL flavors on a KVM (kernel-based virtual machine), you may see high CPU utilization in the Linux Guest OS for the lcore process.

When you log in to the underlying hypervisor from the vSRX shell by using the following command, you see the following:

ssh -JU __juniper_private4__ 192.168.1.1

root@localhost:~#
root@localhost:~# top -H

top - 10:48:59 up 7 days, 18:51,  1 user,  load average: 4.53, 4.47, 4.43
Tasks: 162 total,   8 running, 154 sleeping,   0 stopped,   0 zombie
Cpu(s): 85.7%us,  1.6%sy,  0.0%ni, 12.7%id,  0.0%wa,  0.1%hi,  0.0%si,  0.0%st
Mem:   8175980k total,  8125232k used,    50748k free,    70804k buffers
Swap:    15620k total,      504k used,    15116k free,   148964k cached

PID  USER   PR   NI  VIRT  RES   SHR S   %CPU  %MEM   TIME+       COMMAND                                                                                                                                                                   

3214 root   20   0   7943m 245m  101m R  98    3.1    11200:47    lcore-slave-1                                                                                                                                                            
3215 root   20   0   7943m 245m  101m R  98    3.1    11200:48    lcore-slave-2                                                                                                                                                             
3216 root   20   0   7943m 245m  101m R  98    3.1    11200:47    lcore-slave-3                                                                                                                                                            
3217 root   20   0   7943m 245m  101m R  98    3.1    11200:47    lcore-slave-4                                                                                                                                                            
2464 root   20   0   3493m 1.3g  2244 S  29    16.5   2893:26 kvm                                                                                                                                                                       
2462 root   20   0   3493m 1.3g  2244 R  8     16.5   873:26.99 kvm                                                                                                                                                                       
3133 root   20   0   7943m 245m  101m S  2      3.1   127:02.65 srxpfe   

 

Cause:

The lcore process is used by the Data Plane Development Kit (DPDK) mechanism in vSRX and consists of libraries to accelerate packet processing workloads.

DPDK is supposed to poll certain ports for incoming packets in an infinite loop, pinned to a certain logical core. Due to this kind of polling model, the Linux OS faces a challenge while measuring effective core utilization. As a result, the CPU time on the core where the polling loop is running is always close to 100%. This is expected behavior.

For the vSRX-S flavor, this process has a nano-sleep mechanism when there is no traffic. Therefore, the effects on the S flavor may not be significant.

 

Solution:

This is expected behavior because of the DPDK polling loop on the core. No action is required in this case.

 

Related Links: