Mengapa systemd-udev mengelompokkan CPU saya?

15

Saya perhatikan bahwa salah satu inti pada laptop empat-inti dipatok, dan suhu sangat tinggi. Saya menemukan ini di 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

Mengapa mungkin systemd-udevmemalu CPU? Ini adalah sistem 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: Saya perhatikan bahwa selain CPU yang dipatok, ada masalah tambahan. Perangkat USB yang baru terhubung, seperti perangkat penyimpanan massal USB atau keyboard, akan muncul lsusbtetapi tidak dapat digunakan. Perangkat penyimpanan massal tidak terpasang secara otomatis, dan keyboard USB tidak berfungsi. Saya belum mencoba memasang drive USB secara manual.

Sesuai saran Bratchley, berikut adalah langkah systemd-udevproses dengan ID 359.

dotancohen
sumber
2
Anda mungkin stracemenggunakan strace -fvvp 359kemungkinan itu terus menerus pada sesuatu. Anda mungkin bisa memilih sesuatu yang bermakna. Ini mungkin bug tetapi masih bisa membuat laporan bug yang baik jika Anda dapat mengumpulkan data tentangnya.
Bratchley
1
@Bratchley: Terima kasih, ini dia strace . Saya mencari di Google sekarang untuk belajar cara membacanya, tetapi saran apa pun akan dihargai.
dotancohen
1
Yah itu tidak terlihat seperti perulangan. Sepertinya membaca dalam banyak file dan modprobe-ing untuk mengaturnya. Benar-benar banyak hal acak. Apakah itu mencetak sesuatu ke pesan atau ke dmesgperintah?
Bratchley
1
Seharusnya saya memeriksa dmesg, saya baru mereset mesin sekitar dua atau tiga jam yang lalu. Terima kasih banyak untuk memastikan bahwa tidak ada perulangan. Saya mencoba memeriksa strace dan meskipun saya tidak berpengalaman dalam membacanya, saya tidak dapat menemukan loop tak terbatas yang selalu menjadi hal pertama yang saya pikirkan ketika CPU berduri.
dotancohen
2
Apakah ada yang ditampilkan saat Anda menjalankan "monitor udevadm"?
V13

Jawaban:

16

Sepertinya libmtp menemukan perangkat, tetapi tidak dapat memutuskan sambungan dengan benar dan memeriksa terus-menerus. Ini terjadi dengan perangkat tertentu dan dapat dinonaktifkan dengan mengedit /lib/udev/rules.d/69-libmtp.rules

Cari beberapa baris yang terlihat seperti ini (di akhir 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"

Komentari baris kedua dengan meletakkan # sebelum ENV, sehingga terlihat seperti:

#ENV{ID_MTP.... 

Nyalakan kembali komputer Anda atau jalankan sudo systemctl restart systemd-udevddan nikmati siklus CPU gratis Anda :)

eLobato
sumber
Reboot penting bagi saya. Saya mencoba me-restart systemd-udevd beberapa kali, tetapi akan selalu mematok cpu lagi dengan segera.
Nate Glenn
8

Gunakan udevadm monitoruntuk mencari tahu driver mana yang mengumpulkan cpu.

wayfactory
sumber
BAIK. Saya rasa saya menemukan perangkat. Apa sekarang?
norok2
4

Penyebab lain:

  1. Driver nvidia yang diinstal 396
  2. Mulai ulang dengan layar kosong
  3. Menonaktifkan nvidia di bios
  4. Sistem bekerja dengan Intel, tetapi setelah beberapa kali tidur / melanjutkan saya mendapatkan ini dari udevadm monitor(garis acak tetapi mengulangi semua yang sama tanpa batas):

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

Saya tidak yakin tetapi saya berharap ini disebabkan oleh fakta bahwa driver nvidia aktif tetapi nvidia dinonaktifkan di BIOS.

dmatej
sumber
1
Saya mengalami masalah yang sama. driver Nvidia yang telah dihapus instalasinya.
TC Zhang
2

Solusi yang diusulkan oleh eLobato tidak berhasil untuk saya.

Dengan gejala yang sama dijelaskan, saya menemukan utas ini: /ubuntu/1073185/after-upgrade-from-ubuntu-16-to-18-04-systemd-udevd-uses-100-cpu

yang memecahkan masalah bagi saya. Saya ulangi solusi di bawah ini untuk kelengkapan, tetapi semua kredit masuk ke jawaban asli oleh brunom4ciel.


Coba jika berhenti dan memulai proses menyelesaikan masalah tanpa efek samping yang tidak diinginkan:

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

Jika ini berhasil tanamkan dalam skrip /etc/init.d/systemd-udevd-solv.shdengan:

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

dan tempel:

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

Kemudian ubah izin untuk dieksekusi saat login

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

Ada bug di kernel yang menyebabkan penggunaan sistemd-udevs 100% CPU.

Jadi, penyelesaiannya adalah me-reboot sistem, tekan dan tahan Shift selama memuat Grub. Kemudian pilih kernel lama yang tercantum dalam daftar bootloader.

Ini berfungsi baik untuk saya.

Yolt
sumber
0

Saya memiliki masalah yang sama pada Linux Mint 17.3 Rosa.

Untuk mengatasinya, ketika PC saya idle:

  • Saya membuka terminal.
  • Masuk sebagai SU.
  • Gunakan topperintah dan lihat PID dari systemd.
  • Bunuh itu.

CPU kembali normal dan penggunaan RAM rendah. Tentu saja desktop saya masih stabil. Saya dapat menggunakan desktop saya secara normal setelah operasi itu.

Ryo Adi Suwito
sumber
Saya selalu berpikir bahwa systemd selalu PID 1 0pointer.de/blog/projects/systemd.html
aventurin
0

Saya telah menemukan ini adalah masalah pada beberapa instalasi CentOS yang berjalan di Hyper-V . Mematikan Layanan Integrasi dalam pengaturan VM tampaknya telah menyelesaikannya. Sinkronisasi waktu khusus .

Yanzzee
sumber