systemd-udev가 내 CPU를 사용하는 이유는 무엇입니까?

systemd-udev가 내 CPU를 사용하는 이유는 무엇입니까?

내 쿼드 코어 노트북의 코어 중 하나가 고정되어 매우 뜨겁게 작동하는 것을 발견했습니다. 나는 이것을 다음에서 찾았습니다 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-udevCPU를 망치나요? 이것은 쿠분투 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

편집하다:고정된 CPU 외에 또 다른 문제가 있다는 것을 알아냈습니다. 새로 연결된 USB 장치(예: USB 대용량 저장 장치 또는 키보드)는 표시되지만 lsusb사용할 수는 없습니다. 대용량 저장 장치가 자동으로 마운트되지 않으며 USB 키보드를 사용할 수 없습니다. USB 드라이브를 수동으로 마운트하려고 시도하지 않았습니다.

Blatchley의 제안에 따르면,이건 스트레이스야ID가 359인 프로세스 systemd-udev.

답변1

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무료 CPU 사이클을 즐겨보세요 :)

답변2

udevadm monitorCPU를 공유하는 드라이버를 찾는 데 사용됩니다 .

답변3

eLobato가 제안한 솔루션이 저에게 적합하지 않았습니다.

설명된 것과 동일한 증상으로 다음 스레드를 발견했습니다. https://askubuntu.com/questions/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

답변4

systemd-udev의 CPU 사용량이 100%가 되는 버그가 커널에 있습니다.

따라서 해결 방법은 시스템을 재부팅하고 Grub이 로드되는 동안 Shift 키를 누르는 것입니다. 그런 다음 부트로더 목록에 나열된 이전 커널을 선택합니다.

이것은 나에게 잘 작동합니다.

관련 정보