systemd-udev가 CPU를 페깅하는 이유는 무엇입니까?


15

4 코어 노트북의 코어 중 하나가 멈 췄고 온도가 매우 높다는 것을 알았습니다. 나는 이것을 다음에서 발견했다 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 드라이브를 수동으로 마운트하지 않았습니다.

Bratchley의 제안에 따라, 여기에 strace를하다systemd-udevID 359와 과정.


2
기회를 strace사용하여 strace -fvvp 359무언가에 지속적으로 반복 될 수 있습니다 . 의미있는 것을 고를 수 있습니다. 아마도 버그 일 수도 있지만 버그에 대한 데이터를 수집 할 수 있다면 여전히 좋은 버그 리포트를 만들 수 있습니다.
Bratchley

1
@Bratchley : 감사합니다. 여기에 strace가 있습니다. 나는 그것을 읽는 법을 배우기 위해 지금 인터넷 검색을하고 있지만 어떤 조언도 감사하겠습니다.
dotancohen

1
그것은 반복되는 것처럼 보이지 않습니다. 많은 파일을 읽고 modprobe설정하기 위해 -ing 하는 것처럼 보입니다 . 정말 무작위로 된 것입니다. 메시지 나 dmesg명령에 아무것도 인쇄합니까 ?
Bratchley

1
내가 확인해야 dmesg그냥 두 세 시간 전 대한 기계를 재설정. 루핑이 없음을 확인해 주셔서 대단히 감사합니다. 나는 strace를 살펴 보았지만 읽는 데 정통하지는 않았지만 CPU가 급등 할 때 항상 가장 먼저 생각하는 무한 루프를 찾을 수 없었습니다.
dotancohen

2
"udevadm monitor"를 실행할 때 표시되는 것이 있습니까?
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무료 CPU 사이클을 즐기십시오 :)


재부팅이 필요했습니다. systemd-udevd를 여러 번 다시 시작하려고 시도했지만 항상 CPU를 즉시 다시 페그합니다.
네이트 글렌

이것을 주석 처리하면 해결되지 않았습니다. 내 문제는 엔비디아 드라이버와 관련이 있다고 생각합니다. @wayfactory, unix.stackexchange.com/a/442324/134153의 게시물을 참조하십시오 .
Dan H

9

udevadm monitorCPU를 풀링하는 드라이버를 찾는 데 사용하십시오 .


확인. 장치를 찾은 것 같습니다. 지금 무엇?
norok2

이 의견은 제가이 사실을 이해하도록 도와줍니다. 나는 몰랐다 udevadm monitor. 감사합니다!
Dan H

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 드라이버는 활성화되어 있지만 BIOS에서 nvidia가 비활성화되어 있기 때문입니다.


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

나를 위해 이것은 반창고입니다 : ~ 30 분을 기다리면 udevd의 CPU 사용량이 백업 된 것 같습니다.
Dan H

1

커널에 systemd-udevs 100 % CPU 사용을 유발하는 버그가 있습니다.

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

이것은 나를 위해 잘 작동합니다.


0

Linux Mint 17.3 Rosa에서 동일한 문제가 발생했습니다.

내 PC가 유휴 상태 일 때 해결하려면 :

  • 터미널을 엽니 다.
  • SU로 로그인하십시오.
  • top명령을 사용 하고의 PID를 참조하십시오 systemd.
  • 죽여.

CPU가 다시 정상으로 돌아가고 RAM 사용량이 낮아졌습니다. 물론 내 데스크탑은 여전히 ​​안정적입니다. 그 작업 후에 데스크탑을 정상적으로 사용할 수 있습니다.


나는 항상 systemd은 항상 PID 1 생각 0pointer.de/blog/projects/systemd.html
aventurin

0

Hyper-V 에서 실행되는 CentOS의 일부 설치에서 이것이 문제임을 발견했습니다 . VM 설정에서 Integration Services를 끄면 문제가 해결 된 것으로 보입니다. 특히 시간 동기화 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.