Warum peggt systemd-udev meine CPU?


15

Mir ist aufgefallen, dass einer der Kerne eines Vierkern-Laptops festgeklemmt ist und die Temperatur sehr hoch ist. Ich fand das in top:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  359 root      20   0  188684 147228   1552 R  99.4  5.0 111:19.91 systemd-udevd
20011 root      20   0  188320 147604   2076 S  11.0  5.0   0:00.33 systemd-udevd
11053 dotanco+  20   0 3030036 918672  49608 S   9.6 31.2 280:40.65 firefox
 3468 dotanco+  20   0 3612776 136740  43484 S   1.7  4.6  57:02.52 plasma-desktop
20006 root      20   0       0      0      0 Z   1.0  0.0   0:00.37 systemd-udevd

Warum könnte systemd-udevdie CPU hämmern? Dies ist ein Kubuntu 14.10 System:

$ uname -a
Linux loathe 3.16.0-44-generic #59-Ubuntu SMP Tue Jul 7 02:07:39 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/issue
Ubuntu 14.10 \n \l

BEARBEITEN: Ich bemerke, dass zusätzlich zu der anhängenden CPU ein zusätzliches Problem vorliegt. Neu angeschlossene USB-Geräte, z. B. ein USB-Massenspeichergerät oder eine Tastatur, werden in angezeigt lsusb, sind jedoch unbrauchbar. Das Massenspeichergerät wird nicht automatisch gemountet und die USB-Tastatur funktioniert nicht. Ich habe nicht versucht, das USB-Laufwerk manuell zu mounten.

Nach Bratchleys Vorschlag sehen Sie hier den systemd-udevAblauf mit der ID 359.


2
Sie könnten stracedie strace -fvvp 359Chance nutzen, dass es sich ständig um eine Schleife handelt. Sie könnten in der Lage sein, etwas Sinnvolles herauszusuchen. Es ist wahrscheinlich ein Fehler, aber es kann trotzdem zu einem guten Fehlerbericht führen, wenn Sie Daten darüber sammeln können.
Bratchley

1
@Bratchley: Danke, hier ist die Strace . Ich google jetzt, um zu lernen, wie man es liest, aber jeder Rat wäre dankbar.
Dotancohen

1
Nun, es sieht nicht so aus, als ob es sich um eine Schleife handelt. Es scheint, als würde eine Reihe von Dateien und -en gelesen modprobe, um sie einzurichten. Eigentlich nur ein paar zufällige Sachen. Gibt es irgendetwas für Nachrichten oder für den dmesgBefehl aus?
Bratchley

1
Ich hätte nachsehen sollen dmesg, dass ich die Maschine vor ungefähr zwei oder drei Stunden zurückgesetzt habe. Vielen Dank für die Bestätigung, dass keine Schleife vorhanden ist. Ich habe versucht, über die Runden zu kommen, und obwohl ich nicht in der Lage bin, sie zu lesen, konnte ich keine Endlosschleife finden, was immer das erste ist, an das ich denke, wenn die CPU ansteigt.
Dotancohen

2
Wird beim Ausführen von "udevadm monitor" etwas angezeigt?
V13

Antworten:


15

Wie es aussieht, hat libmtp ein Gerät gefunden, kann es jedoch nicht ordnungsgemäß trennen und sucht ständig danach. Dies geschieht auf bestimmten Geräten und kann durch Bearbeiten von /lib/udev/rules.d/69-libmtp.rules deaktiviert werden

Suchen Sie nach ein paar Zeilen, die wie folgt aussehen (am Ende der Datei):

# Autoprobe vendor-specific, communication and PTP devices 
ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceCl     ass}=="00|02|06|ef|ff", PROGRAM="/usr/lib/udev/mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="li     bmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

Kommentieren Sie die zweite Zeile, indem Sie ein # vor ENV setzen, so dass es so aussieht:

#ENV{ID_MTP.... 

Starten Sie Ihren Computer neu oder starten Sie ihn sudo systemctl restart systemd-udevdund genießen Sie Ihre freien CPU-Zyklen :)


Neustart war für mich notwendig. Ich habe mehrmals versucht, systemd-udevd neu zu starten, aber es hat die CPU immer sofort wieder angekoppelt.
Nate Glenn

8

Verwenden udevadm monitorSie diese Option, um herauszufinden, welcher Treiber die CPU bündelt.


IN ORDNUNG. Ich glaube, ich habe das Gerät gefunden. Was jetzt?
norok2

4

Ein weiterer Grund:

  1. Installierter nvidia-Treiber 396
  2. Mit leerem Bildschirm neu starten
  3. Behinderte NVIDIA im BIOS
  4. Das System funktioniert mit Intel, aber nach mehreren Einschlaf- / Wiederaufnahmevorgängen habe ich Folgendes erhalten udevadm monitor(zufällige Zeilen, die sich jedoch unbegrenzt wiederholen):

    ...
    KERNEL[10072.040174] remove   /module/nvidia (module)
    UDEV  [10072.062670] add      /module/nvidia (module)
    UDEV  [10072.063617] add      /kernel/slab/:A-0000256/cgroup/filp(40652:nvidia-persistenced.service) (cgroup)
    UDEV  [10072.076901] remove   /module/nvidia (module)
    UDEV  [10072.109365] add      /kernel/slab/:aA-0000192/cgroup/dentry(40652:nvidia-persistenced.service) (cgroup)
    KERNEL[10072.138225] add      /module/nvidia (module)
    KERNEL[10072.139241] add      /kernel/slab/:0012288 (slab)
    KERNEL[10072.139651] remove   /kernel/slab/:0012288 (slab)
    ...
    

Ich bin nicht sicher, aber ich gehe davon aus, dass dies auf die Tatsache zurückzuführen ist, dass der NVIDIA-Treiber aktiv ist, NVIDIA jedoch im BIOS deaktiviert ist.


1
Ich bin auf dasselbe Problem gestoßen. Deinstallierte Nvidia-Treiber haben das Problem behoben.
TC Zhang

2

Die von eLobato vorgeschlagene Lösung hat bei mir nicht funktioniert.

Mit den gleichen beschriebenen Symptomen fand ich diesen Thread: /ubuntu/1073185/after-upgrade-from-ubuntu-16-to-18-04-systemd-udevd-uses-100-cpu

das löste das Problem für mich. Der Vollständigkeit halber wiederhole ich die folgende Lösung, aber alle Credits gehen an die ursprüngliche Antwort von brunom4ciel.


Versuchen Sie, ob das Anhalten und Starten der Prozesse das Problem ohne unerwünschte Nebenwirkungen löst:

sudo systemctl stop systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket

sleep 5

sudo systemctl start systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket

Wenn dies funktioniert, binde es in ein Skript unter /etc/init.d/systemd-udevd-solv.shmit:

sudo vim /etc/init.d/systemd-udevd-solv.sh

und einfügen:

#!/bin/sh

sudo systemctl stop systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket

sleep 5

sudo systemctl start systemd-udevd systemd-udevd-kernel.socket systemd-udevd-control.socket

Ändern Sie dann die Berechtigung, die beim Anmelden ausgeführt werden soll

sudo chmod a+x /etc/init.d/systemd-udevd-solv.sh

1

Es gibt einen Fehler im Kernel, der zu einer 100% igen CPU-Auslastung von systemd-udevs führt.

Die Lösung besteht darin, das System neu zu starten und beim Laden von Grub die Umschalttaste gedrückt zu halten. Wählen Sie dann den älteren Kernel aus, der in der Bootloader-Liste aufgeführt ist.

Das funktioniert gut für mich.


0

Ich hatte das gleiche Problem unter Linux Mint 17.3 Rosa.

So lösen Sie das Problem, wenn sich mein PC im Leerlauf befindet:

  • Ich öffne das Terminal.
  • Melden Sie sich als SU an.
  • Verwenden Sie den topBefehl und sehen Sie die PID von systemd.
  • Töte es.

CPU wieder normal und RAM-Auslastung ging niedrig. Natürlich ist mein Desktop immer noch stabil. Nach diesem Vorgang kann ich meinen Desktop normal verwenden.


Ich dachte immer, dass systemd immer PID 1 ist 0pointer.de/blog/projects/systemd.html
aventurin

0

Ich habe festgestellt, dass dies ein Problem bei einigen Installationen von CentOS ist, die unter Hyper-V ausgeführt werden . Das Deaktivieren von Integration Services in den VM-Einstellungen scheint behoben zu sein. Speziell Zeitsynchronisation .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.