Page MenuHomeVyOS Platform

Systemd-udevd high CPU utilization for multiple dynamic ppp/l2tp/ipoe interfaces
Closed, ResolvedPublicBUG

Description

Systemd-udevd high CPU utilization for multiple dynamic interface like ppp/l2tp/ipoe
The issue after starting hundreds PPP sessions.

/lib/systemd/systemd-udevd got 100% CPU utilization.

systemd-udevd.jpeg (133×1 px, 96 KB)

Details

Difficulty level
Unknown (require assessment)
Version
1.4-20231029
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Unspecified (please specify)

Event Timeline

vyos@r4:~$ sudo udevadm monitor
KERNEL[717.626843] remove   /devices/virtual/net/ppp3466/queues/rx-0 (queues)
KERNEL[717.626859] remove   /devices/virtual/net/ppp3466/queues/tx-0 (queues)
KERNEL[717.626903] remove   /devices/virtual/net/ppp3466 (net)
KERNEL[717.635679] remove   /devices/virtual/net/ppp3468/queues/rx-0 (queues)
KERNEL[717.635695] remove   /devices/virtual/net/ppp3468/queues/tx-0 (queues)
KERNEL[717.635769] remove   /devices/virtual/net/ppp3468 (net)
KERNEL[717.636144] remove   /devices/virtual/net/ppp3469/queues/rx-0 (queues)
KERNEL[717.636155] remove   /devices/virtual/net/ppp3469/queues/tx-0 (queues)
KERNEL[717.636181] remove   /devices/virtual/net/ppp3469 (net)
KERNEL[717.636536] remove   /devices/virtual/net/ppp3458/queues/rx-0 (queues)
KERNEL[717.636548] remove   /devices/virtual/net/ppp3458/queues/tx-0 (queues)
KERNEL[717.636614] remove   /devices/virtual/net/ppp3458 (net)
KERNEL[717.648940] remove   /devices/virtual/net/ppp3470/queues/rx-0 (queues)
KERNEL[717.648965] remove   /devices/virtual/net/ppp3470/queues/tx-0 (queues)
KERNEL[717.649018] remove   /devices/virtual/net/ppp3470 (net)
KERNEL[717.662658] remove   /devices/virtual/net/ppp3473/queues/rx-0 (queues)
KERNEL[717.662694] remove   /devices/virtual/net/ppp3473/queues/tx-0 (queues)
KERNEL[717.662705] remove   /devices/virtual/net/ppp3473 (net)
KERNEL[717.663198] remove   /devices/virtual/net/ppp3471/queues/rx-0 (queues)
KERNEL[717.663211] remove   /devices/virtual/net/ppp3471/queues/tx-0 (queues)
KERNEL[717.663255] remove   /devices/virtual/net/ppp3471 (net)
KERNEL[717.663423] remove   /devices/virtual/net/ppp3472/queues/rx-0 (queues)
KERNEL[717.663436] remove   /devices/virtual/net/ppp3472/queues/tx-0 (queues)
KERNEL[717.663465] remove   /devices/virtual/net/ppp3472 (net)
^C

To fix it

sudo nano -c /lib/udev/rules.d/99-systemd.rules

Find sysctl line

# Apply sysctl variables to network devices (and only to those) as they appear.
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name"

Replace to:

# Apply sysctl variables to network devices (and only to those) as they appear.
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo|ppp*|ipoe*", RUN+="/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name"

Shouldnt dummy* and some others be excluded aswell?

# Apply sysctl variables to network devices (and only to those) as they appear. Exclude: lo, dummy*, ppp*, ipoe*, l2tp*, pptp* and sstp*.
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo|dummy*|ppp*|ipoe*|l2tp*|pptp*|sstp*", RUN+="/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name"

+1 for the other "virtual interfaces like lo, dummy, sstp. If such an interface is created - vyos.ifconfig library sets (or should set) all the appropriate sysctl stuff

Viacheslav changed the task status from Open to In progress.Nov 4 2023, 11:49 AM
Viacheslav claimed this task.

In that PR, shouldnt also ifb* be included?

Viacheslav changed the task status from In progress to Needs testing.Nov 7 2023, 7:41 PM
Viacheslav moved this task from Need Triage to Finished on the VyOS 1.5 Circinus board.
Viacheslav moved this task from Need Triage to Finished on the VyOS 1.4 Sagitta board.