Perché systemd-udev sta agganciando la mia CPU?


15

Ho notato che uno dei core di un laptop a quattro core è ancorato e la temperatura è molto alta. Ho trovato questo 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

Perché potrebbe systemd-udevmartellare la CPU? Questo è un sistema Kubuntu 14.10:

$ 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

EDIT: noto che oltre alla CPU pegged, c'è un ulteriore problema. I dispositivi USB appena collegati, come un dispositivo di archiviazione di massa USB o una tastiera, verranno visualizzati lsusbma sono inutilizzabili. Il dispositivo di archiviazione di massa non è montato automaticamente e la tastiera USB non funziona. Non ho provato a montare manualmente l'unità USB.

Come da suggerimento di Bratchley, ecco la sequenza del systemd-udevprocesso con ID 359.


2
Potresti straceusare le strace -fvvp 359possibilità se si sta ripetendo continuamente su qualcosa. Potresti essere in grado di scegliere qualcosa di significativo. Probabilmente è un bug, ma potrebbe comunque essere utile per una buona segnalazione di bug se è possibile raccogliere dati al riguardo.
Bratchley,

1
@Bratchley: grazie, ecco la traccia . Sto cercando su Google come imparare a leggerlo, ma ogni consiglio sarebbe apprezzato.
dotancohen,

1
Beh, non sembra che sia in loop. Sembra che stia leggendo in un mucchio di file e modprobe-ing per farli configurare. Solo un mucchio di cose casuali davvero. Stampa qualcosa sui messaggi o sul dmesgcomando?
Bratchley,

1
Avrei dovuto controllare dmesg, ho appena ripristinato la macchina circa due o tre ore fa. Grazie mille per aver confermato che non esiste un loop. Ho provato ad andare oltre la striscia e anche se non sono esperto nel leggerli, non sono riuscito a trovare alcun ciclo infinito che è sempre la prima cosa a cui penso quando picchi di CPU.
dotancohen,

2
Viene visualizzato qualcosa quando si esegue "udevadm monitor"?
V13,

Risposte:


16

Sembra che libmtp abbia trovato un dispositivo, ma non è in grado di disconnetterlo correttamente e lo controlla costantemente. Succede con alcuni dispositivi e può essere disabilitato modificando /lib/udev/rules.d/69-libmtp.rules

Cerca un paio di righe che assomigliano a questo (alla fine del file):

# 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"

Commenta la seconda riga inserendo un # prima di ENV, in modo che assomigli a:

#ENV{ID_MTP.... 

Riavvia il computer o esegui sudo systemctl restart systemd-udevde goditi i tuoi cicli CPU gratuiti :)


Il riavvio è stato necessario per me. Ho provato a riavviare systemd-udevd diverse volte, ma avrebbe sempre reindirizzato immediatamente la cpu.
Nate Glenn,

8

Utilizzare udevadm monitorper scoprire quale driver sta mettendo in comune la CPU.


OK. Penso di aver trovato il dispositivo. E adesso?
norok2

4

Un'altra causa:

  1. Driver nvidia 396 installato
  2. Riavvia con schermo vuoto
  3. NVIDIA disabilitata nel bios
  4. Il sistema funziona con Intel, ma dopo diversi sleep / resume ho ottenuto questo da udevadm monitor(linee casuali ma ripetendo lo stesso indefinitamente):

    ...
    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)
    ...
    

Non sono sicuro ma mi aspetto che ciò sia causato dal fatto che il driver nvidia è attivo ma nvidia è disabilitato nel BIOS.


1
Ho riscontrato lo stesso problema. i driver Nvidia disinstallati hanno risolto il problema.
TC Zhang,

2

La soluzione proposta da eLobato non ha funzionato per me.

Con gli stessi sintomi descritti, ho trovato questo thread: /ubuntu/1073185/after-upgrade-from-ubuntu-16-to-18-04-systemd-udevd-uses-100-cpu

che ha risolto il problema per me. Ripeto la soluzione qui sotto per completezza, ma tutti i crediti vanno alla risposta originale di brunom4ciel.


Prova se interrompere e avviare i processi risolve il problema senza effetti collaterali indesiderati:

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

Se funziona, incorporalo in uno script /etc/init.d/systemd-udevd-solv.shcon:

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

e incolla:

#!/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

Quindi modificare l'autorizzazione da eseguire al login

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

1

C'è un bug nel kernel che causa un utilizzo della CPU del 100% da systemd-udevs.

Quindi, aggirare il problema è riavviare il sistema, tenere premuto Shift durante il caricamento di Grub. Quindi selezionare il kernel più vecchio elencato nell'elenco del bootloader.

Questo lavoro va bene per me.


0

Ho avuto lo stesso problema su Linux Mint 17.3 Rosa.

Per risolverlo, quando il mio PC è inattivo:

  • Apro il terminale.
  • Accedi come SU.
  • Utilizzare il topcomando e vedere PID di systemd.
  • Uccidilo.

La CPU torna alla normalità e l'utilizzo della RAM si è ridotto. Ovviamente il mio desktop è ancora stabile. Posso usare il mio desktop normalmente dopo quell'operazione.


Ho sempre pensato che systemd fosse sempre PID 1 0pointer.de/blog/projects/systemd.html
aventurin,

0

Ho scoperto che questo è un problema su alcune installazioni di CentOS in esecuzione su Hyper-V . La disattivazione di Integration Services nelle impostazioni della VM sembra averlo risolto. In particolare sincronizzazione dell'ora .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.