Neulich beobachtete ich, wie auf einem Raspberry Pi 3B die CPU ständig durch den Prozess kworker zu ~10% ausgelastet wurde.
Ursache
Die Ursache war bei diesem Gerät, dass der RPi* ohne SD-Karte lief, da er von einem USB-Laufwerk bootete. Da es vom Kartenleser zum SoC keine Rückmeldung gibt, ob eine SD-Karte gesteckt ist oder nicht, verursacht das Polling inklusive den Timeouts und Fehlermeldungen eine hohe Last.
Lösung
Die Lösung besteht in diesem Fall darin, beim Booten zu sagen, dass nur noch einmal nach einer Karte geschaut werden soll. Dazu wird die Datei /boot/config.txt
um einen Eintrag ergänzt:
dtparam=sd_poll_once
Nach einem Reboot ist die CPU-Last wieder normal.