Чому 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

EDIT: Я помічаю, що крім прив’язаного процесора, є додаткова проблема. Нещодавно підключені USB-пристрої, такі як USB-накопичувач або клавіатура, відображатимуться, lsusbале є непридатними. Пристрій масового зберігання не монтується автоматично, а клавіатура USB не працює. Я не намагався вручну встановити USB-накопичувач.

За пропозицією Bratchley, в ось Трасування з systemd-udevпроцесу з ідентифікатором 359.


2
Можливо, straceце, мабуть, це те strace -fvvp 359, що він постійно циркулює на чомусь. Можливо, ви зможете вибрати щось значиме. Це, мабуть, помилка, але вона все-таки може створити хороший звіт про помилку, якщо ви зможете збирати дані про неї.
Братчлі

1
@Bratchley: Дякую, ось ця проблема . Зараз я гуглю, щоб навчитися його читати, але будь-які поради були б вдячні.
dotancohen

1
Добре, це не схоже, що це циклічно. Здається, він читає в купі файлів і modprobe-ing, щоб налаштувати їх. Просто купа випадкових речей насправді. Чи друкує що-небудь на повідомлення чи в dmesgкоманду?
Братчлі

1
Я повинен був перевірити dmesg, я просто скинув машину близько двох-трьох годин тому. Дуже дякую за те, що підтвердили, що циклу немає. Я спробував подолати прогалину, і хоча я не вмію їх читати, я не міг знайти жодного нескінченного циклу, який завжди є першим, про що я думаю, коли шини процесора.
dotancohen

2
Чи є щось, що відображається під час запуску "монитора udevadm"?
V13

Відповіді:


17

Схоже, 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і насолоджуйтесь безкоштовними циклами процесора :)


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

Коментувати це не вирішило для мене. Я думаю, що моя проблема пов'язана з драйвером nvidia. Дивіться допис від @wayfactory, unix.stackexchange.com/a/442324/134153 .
Dan H

9

Використовуйте, udevadm monitorщоб дізнатися, який драйвер об'єднує процесор.


ДОБРЕ. Я думаю, що я знайшов пристрій. Що тепер?
norok2

Цей коментар допомагає мені підняти це на землю. Я про це не знав udevadm monitor. Дякую!
Dan H

4

Ще одна причина:

  1. Встановлений драйвер nvidia 396
  2. Перезапустіть з порожнього екрана
  3. Інвалідні nvidia у біосах
  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.


1
Я зіткнувся з тією ж проблемою. видалені драйвери Nvidia вирішили проблему.
ТЦ Чжан

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

Для мене це лише допомога в діапазоні: здається, що якщо я зачекаю ~ 30 хвилин, використання CPU udevd буде резервне копіювання.
Dan H

1

У ядрі є помилка, яка спричиняє 100% використання процесора systemd-udevs.

Отже, робота навколо полягає у перезавантаженні системи, натисканні та утримуванні Shift під час завантаження Grub. Потім виберіть старе ядро, вказане у списку завантажувача.

Це добре працює для мене.


0

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

Щоб вирішити це, коли мій ПК не працює:

  • Я відкриваю термінал.
  • Увійти як SU.
  • Скористайтесь topкомандою та перегляньте PID від systemd.
  • Вбий це.

Повернення нормального процесора до норми, а використання оперативної пам'яті знизилося. Звичайно, мій робочий стіл все ще стабільний. Я можу нормально використовувати свій робочий стіл після цієї операції.


Я завжди думав , що Systemd завжди PID 1 0pointer.de/blog/projects/systemd.html
Aventurin

0

Я виявив, що це проблема в деяких установках CentOS, що працюють на Hyper-V . Відключення інтеграційних служб у налаштуваннях VM, схоже, вирішило це. Зокрема синхронізація часу .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.