Page MenuHomeVyOS Platform

vyos-netlinkd causes high CPU usage
Closed, ResolvedPublicBUG

Description

Hello,

After upgrading to 2026.04.10-0031-rolling, I started seeing a constantly running python process consuming around 6 - 50% CPU, even when the system is idle.

Problem
The process continuously executes:

/bin/cli-shell-api --show-active-only showConfig interfaces
This happens in a loop and does not stop.

Debugging
I attached strace to the process and observed repeated executions:

strace: Process 6134 attached

strace: Process 16362 attached
[pid 16362] execve("/bin/cli-shell-api", ["/bin/cli-shell-api", "--show-active-only", "showConfig", "interfaces"], ...) = 0
[pid 16362] +++ exited with 0 +++
--- SIGCHLD ...

strace: Process 16363 attached
[pid 16363] execve("/bin/cli-shell-api", ["/bin/cli-shell-api", "--show-active-only", "showConfig", "interfaces"], ...) = 0
[pid 16363] +++ exited with 0 +++
--- SIGCHLD ...

... repeats continuously

It looks like something is polling interface configuration in a tight loop.

Configuration note
This is a very minimal setup — I am only using BGP (no complex services or additional features configured).

Expected behavior
The system should not continuously call cli-shell-api when there are no configuration changes, and CPU usage should remain low.

Actual behavior
A python process continuously spawns cli-shell-api, causing constant CPU load (~6 - 50%).

Regression
After rolling back to 2026.04.01-0034-rolling, the issue is no longer reproducible:

CPU usage returns to normal

Looping behavior disappears

Conclusion
This appears to be a regression introduced in 2026.04.10-0031-rolling, possibly related to a component repeatedly querying interface configuration.

Details

Version
2026.04.10-0031-rolling
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)
Forum thread
https://forum.vyos.io/t/high-cpu-usage-on-2026-04-10-0031-rolling/17396/1

Event Timeline

According to @jestabro

This would appear to be due to vyos-netlinkd calling op_mode_config_dict more than is necessary: it can be called only when it may be applicable (below); I should have caught this in review (d'oh)

Viacheslav changed the task status from Open to Needs testing.Apr 13 2026, 1:32 PM
Viacheslav triaged this task as High priority.
c-po moved this task from Backlog - Bug to Completed on the VyOS Rolling board.