Symptom
An IOSXE router running IOSXE 16.4 or newer version will show high CPU in the ucode_pkt_PPE0 process even when sitting idle.
Router#show process cpu platform sorted
CPU utilization for five seconds: 0%, one minute: 0%, five minutes: 0%
Core 0: CPU utilization for five seconds: 1%, one minute: 1%, five minutes: 1%
Core 1: CPU utilization for five seconds: 8%, one minute: 3%, five minutes: 5%
Core 2: CPU utilization for five seconds: 2%, one minute: 2%, five minutes: 2%
Core 3: CPU utilization for five seconds: 14%, one minute: 12%, five minutes: 41%
Pid PPid 5Sec 1Min 5Min Status Size Name
--------------------------------------------------------------------------------
27810 26721 65% 62% 61% S 1117265920 ucode_pkt_PPE0
Conditions
This have been observed on CSR1000v, Catalyst 8000v, Catalyst 8500L and other IOSXE routers with software-based dataplane, also on C9800-L series wireless controllers.
Workaround
In order to look at the dataplane utilization the recommended output to use is "show platform hardware qfp active datapath utilization".
Alternatively the "show platform hardware qfp active datapath infrastructure sw-cio" output could be used.
On a C9800-L, use "show platform hardware chassis active qfp datapath utilization".
Please note that it shows the utilization since the last time the command was run, so it's recommended to run it multiple times to get an accurate picture of utilization.
Further Problem Description
This is expected behavior with IOS-XE release 16.4 and higher. To improve packet throughput and reduce packet latency and jitter, the data plane more aggressively polls for new packets in later releases which raises CPU utilization even at low packet rates.