TLDR: If your router is idle and you see a load average > 0.00, check if odhcp6c
is running dhcpv6.script
every 3 seconds. If so, configure ra_holdoff
to 30, the old pre-18.06 default. This will reduce the idle load average.
Details
If your router is idle and the uptime
command shows a load average much bigger than 0.00, like, 0.10 or 0.20, especially on an older router, run ps | grep [o]dhcp6c
every second in a shell. If you see TWO instances of odhcp6c
every 3 seconds (one instance is normal, the other instance is about to run dhcpv6.script
), it may mean that your ISP is sending an IPv6 DHCP RA Update message every 3 seconds, which odhcp6c
deals with by running dhcpv6.script
every 3 seconds, which consumes some CPU load. This is explained in this related issue on Gluon.
I think this started occuring after a change to odhcp6c to make it more standards compliant and to address this issue.
If you want to reduce your idle CPU load by processing IPv6 DHCP RA Updates less frequently and you don't mind being less standards compliant, you can configure the ra_holdoff option to 30, the old pre-18.06 value. According to this post, you can configure that by running:
uci set network.client.ra_holdoff=30
uci commit network
reboot
Or, edit /etc/config/network
directly and run /etc/init.d/network restart
.
Once I made this change, my idle load went back to 0.00 or very close to 0.00.