Почему systemd-udev привязывает мой процессор?

15

Я заметил, что одно из ядер четырехъядерного ноутбука подключено, и температура очень высокая. Я нашел это в 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

Почему может systemd-udevстучать процессор? Это система 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

РЕДАКТИРОВАТЬ: я заметил, что помимо привязки процессора, есть еще одна проблема. Недавно подключенные USB-устройства, такие как запоминающее USB-устройство большой емкости или клавиатура, будут отображаться, lsusbно не могут использоваться. Запоминающее устройство не монтируется автоматически, а клавиатура USB не работает. Я не пытался вручную подключить USB-накопитель.

По предложению Bratchley, в вот Трассирование из systemd-udevпроцесса с идентификатором 359.

dotancohen
источник
2
Вы можете straceиспользовать его, strace -fvvp 359скорее всего, постоянно что-то зацикливаясь. Вы могли бы выбрать что-то значимое. Это, вероятно, ошибка, но она все равно может послужить хорошим отчетом об ошибке, если вы сможете собрать данные о ней.
Bratchley
1
@Bratchley: Спасибо, вот и все . Я сейчас гуглю, чтобы научиться читать, но любой совет будет признателен.
Dotancohen
1
Ну, это не похоже на то, что это зацикливание. Кажется, что он читает кучу файлов и modprobe-ing, чтобы их настроить. Просто куча случайных вещей на самом деле. Печатает ли он что-нибудь в сообщениях или dmesgкоманде?
Братчли
1
Я должен был проверить dmesg, я просто перезагрузил машину около двух или трех часов назад. Большое спасибо за подтверждение того, что зацикливания нет. Я попытался пройти через трассу и, хотя я не разбираюсь в их чтении, я не смог найти какой-либо бесконечный цикл, который всегда является первым, о чем я думаю, когда процессор нагружается.
dotancohen
2
Показывается ли что-нибудь, когда вы запускаете "udevadm monitor"?
V13

Ответы:

16

Похоже, libmtp нашел устройство, но не может правильно отключить его и постоянно проверяет его. Это происходит с определенными устройствами и может быть отключено путем редактирования /lib/udev/rules.d/69-libmtp.rules

Посмотрите на пару строк, которые выглядят так (в конце файла):

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

Прокомментируйте вторую строку, поставив # перед ENV, чтобы она выглядела следующим образом:

#ENV{ID_MTP.... 

Перезагрузите компьютер или запустите sudo systemctl restart systemd-udevdи наслаждайтесь бесплатными циклами процессора :)

eLobato
источник
Перезагрузка была необходима для меня. Я несколько раз пытался перезапустить systemd-udevd, но он всегда сразу же снова привязал процессор.
Нейт Гленн
8

Используйте, udevadm monitorчтобы узнать, какой драйвер объединяет ресурсы процессора.

wayfactory
источник
OK. Я думаю, что нашел устройство. Что теперь?
norok2
4

Другая причина:

  1. Установлен драйвер nvidia 396
  2. Перезапустить с пустым экраном
  3. Инвалид нвидиа в биосе
  4. Система работает с Intel, но после нескольких снов / возобновлений я получил это udevadm monitor(случайные строки, но повторяющиеся все время до бесконечности):

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

Я не уверен, но я ожидаю, что это связано с тем, что драйвер nvidia активен, но nvidia отключена в BIOS.

dmatej
источник
1
Я столкнулся с той же проблемой. Удаленные драйверы Nvidia решили проблему.
TC Zhang
2

Решение, предложенное eLobato, не сработало для меня.

С теми же описанными симптомами я нашел эту ветку: /ubuntu/1073185/after-upgrade-from-ubuntu-16-to-18-04-systemd-udevd-uses-100-cpu

это решило проблему для меня. Я повторяю решение ниже для полноты, но все кредиты идут на оригинальный ответ brunom4ciel.


Попробуйте, если остановка и запуск процессов решают проблему без нежелательных побочных эффектов:

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

Если это работает, вставьте его в скрипт под /etc/init.d/systemd-udevd-solv.sh:

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

и вставьте:

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

Затем измените разрешение на выполнение при входе

sudo chmod a+x /etc/init.d/systemd-udevd-solv.sh
SEF
источник
1

В ядре есть ошибка, из-за которой systemd-udevs использует процессор на 100%.

Итак, обходной путь заключается в перезагрузке системы, нажмите и удерживайте Shift во время загрузки Grub. Затем выберите старое ядро, указанное в списке загрузчиков.

Это прекрасно работает для меня.

Yolt
источник
0

У меня была такая же проблема на Linux Mint 17.3 Rosa.

Чтобы решить эту проблему, когда мой компьютер простаивает:

  • Я открываю терминал.
  • Войти как SU.
  • Используйте topкоманду и посмотрите PID of systemd.
  • Убей это.

Процессор вернулся в нормальное состояние и использование оперативной памяти стало низким. Конечно мой рабочий стол все еще стабилен. Я могу нормально использовать свой рабочий стол после этой операции.

Рио Ади Сувито
источник
Я всегда думал, что systemd это всегда PID 1 0pointer.de/blog/projects/systemd.html
aventurin
0

Я обнаружил, что это проблема на некоторых установках CentOS, работающих на Hyper-V . Отключение служб Integration Services в настройках виртуальной машины, похоже, разрешило его. В частности, синхронизация времени .

Yanzzee
источник