Introduction
This document describes the reasons why a high CPU usage is expected for the Catalyst 9800 if it concerns the dataplane.
Components used
Background information
The 9800-CL and 9800-L do not have a hardware dataplane forwarding chip, unlike the 9800-40 and 9800-80. Therefore the dataplane is emulated by a software process (that runs on the CPU).
A particularity of this software emulated dataplane is that the dataplane process is nearly always using a CPU core at 100%, because its only job is to constantly poll the network interface to see if a packet has arrived, even when there is little to no network traffic.
Symptoms
The Catalyst 9800 can sometimes display a high CPU utilization on given CPU cores. It is very important to identify if it is really a high CPU software problem or a dataplane symptom you can ignore.
The 9800 web UI homepage has a CPU trend widget which shows you the utilization of each CPU core. That widget also shows you what the CPU core is dedicated to.
In this example, you can see a 9800-CL medium OVA (not high throughput) deployed which has 4 control plane core and 2 data planes cores.
In this case, if core 4 and 5 show high utilization, you can ignore it.
CPU utilization widget on 9800 web UI
In the CLI, the command show platform software cpu alloc shows you the role assigned to each CPU core (as shown in the previous web UI widget).
The command show process cpu platform sorted shows you the CPU utilization of each core and the top processes.
The process ucode_pkt_PPE0 is the software process which emulates the dataplane and therefore that process can be ignored from the list of processes that contribute to CPU utilization.
The 9800-L assigns statically the last 5 CPU cores to the dataplane. It is typically only core 7 which shows a high utilization (and it is expected) due to the ucode_pkt_PPE0 process that runs on it.
Here is an example of a small 9800-CL OVA where core 2 and 3 are dedicated to the dataplane.
The process ucode_pkt_PPE0 shows very high utilization but this is normal and expected even when little network traffic is taking place.
myc9800-CL#show processes cpu platform sorted
CPU utilization for five seconds: 4%, one minute: 5%, five minutes: 6%
Core 0: CPU utilization for five seconds: 2%, one minute: 2%, five minutes: 1%
Core 1: CPU utilization for five seconds: 2%, one minute: 2%, five minutes: 2%
Core 2: CPU utilization for five seconds: 2%, one minute: 1%, five minutes: 2%
Core 3: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99%
Pid PPid 5Sec 1Min 5Min Status Size Name
--------------------------------------------------------------------------------
20268 19784 99% 99% 99% S 271872 ucode_pkt_PPE0
28292 8568 1% 1% 1% S 1087088 linux_iosd-imag
19801 19314 1% 1% 1% S 250064 fman_fp_image
32539 32538 0% 0% 0% S 1692 inet_gethost
32538 31946 0% 0% 0% S 364 inet_gethost
32507 29493 0% 0% 0% S 5592 confd-startup.s
How to verify the dataplane utilization
You possibly wonder how to verify if the Catalyst 9800 is overwhelmed with network traffic if the dataplane CPU utilization is always high. There are specific widgets and CLI commands for this.
In the Web UI, go to Monitor->System->CPU utilization. On the right you have Datapath utilization.
The most important metric is PP in the form of a percentage. In this example, the datapath is 99.56% idle and is therefore logically 0.44% busy with the process of network packets, which is very low.
PP stands for Packet Processed, RX depicts time spent receiving traffic and TM time spent transmitting traffic. Idle is basically the opposite of PP (100% - PP), that is the time the dataplane spends waiting for something to do.
Datapath utilization
The equivalent CLI command of this dashboard is :
show platform hardware chassis active qfp datapath utilization sum