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.
Viacheslav | |
Nov 1 2023, 2:53 PM |
F3884382: systemd-udevd.jpeg | |
Nov 1 2023, 2:53 PM |
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.
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