ทำไม systemd-udev pegging CPU ของฉัน?


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ต้องใช้ค้อนทุบ CPU นี่คือระบบ 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 ของที่นี่คือ straceของsystemd-udevกระบวนการที่มี ID 359


2
คุณอาจstraceใช้strace -fvvp 359โอกาสที่จะวนซ้ำอย่างต่อเนื่อง คุณอาจเลือกบางอย่างที่มีความหมาย อาจเป็นข้อผิดพลาด แต่ก็อาจทำให้รายงานบั๊กดีได้หากคุณสามารถรวบรวมข้อมูลได้
Bratchley

1
@Bratchley: ขอขอบคุณคุณที่นี่เป็น strace ตอนนี้ฉันกำลังเรียนรู้วิธีอ่านมัน แต่ฉันจะได้รับคำแนะนำใด ๆ
dotancohen

1
ดูเหมือนว่ามันจะวนไปวนมาดูเหมือนว่าจะอ่านในไฟล์หลาย ๆ ไฟล์และmodprobeตั้งค่าเพื่อให้มันติดตั้งได้ เพียงแค่สิ่งต่าง ๆ แบบสุ่มจริงๆ มันพิมพ์อะไรไปยังข้อความหรือdmesgคำสั่งหรือไม่?
Bratchley

1
ฉันควรจะตรวจสอบdmesgฉันเพิ่งรีเซ็ตเครื่องประมาณสองหรือสามชั่วโมงที่ผ่านมา ขอบคุณมากสำหรับการยืนยันว่าไม่มีการวนซ้ำ ฉันพยายามข้าม strace และแม้ว่าฉันจะไม่เชี่ยวชาญในการอ่านพวกเขาฉันไม่พบลูปที่ไม่มีที่สิ้นสุดซึ่งเป็นสิ่งแรกที่ฉันนึกถึงเสมอเมื่อ CPU spikes
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 หลายครั้ง แต่มันจะตรึงซีพียูอีกครั้งทันที
Nate Glenn

ความเห็นนี้ไม่ได้แก้ปัญหาสำหรับฉัน ฉันคิดว่าปัญหาของฉันเกี่ยวข้องกับไดรเวอร์ 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 เพื่อแก้ไขปัญหา
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 ก็ถูกสำรองไว้
Dan H

1

มีข้อผิดพลาดในเคอร์เนลที่ทำให้เกิดการใช้งานระบบ 100% CPU

ดังนั้นการแก้ไขคือการรีบูทระบบกด Shift ค้างไว้ระหว่างการโหลด Grub จากนั้นเลือกเคอร์เนลเก่าที่แสดงในรายการ bootloader

มันใช้ได้ดีสำหรับฉัน


0

ฉันมีปัญหาเดียวกันกับ Linux Mint 17.3 Rosa

เพื่อแก้ปัญหาเมื่อไม่ได้ใช้งานพีซี:

  • ฉันเปิดสถานี
  • เข้าสู่ระบบเป็น SU
  • การใช้topคำสั่งและดู PID systemdของ
  • ฆ่ามัน

CPU กลับสู่ปกติและการใช้ RAM ต่ำ แน่นอนว่าเดสก์ท็อปของฉันยังคงมีเสถียรภาพ ฉันสามารถใช้เดสก์ท็อปของฉันได้ตามปกติหลังจากการดำเนินการนั้น


ฉันคิดเสมอว่า systemd เป็น PID เสมอ 1 0pointer.de/blog/projects/systemd.html
aventurin

0

ฉันได้พบปัญหานี้เป็นปัญหาเกี่ยวกับการติดตั้งบางส่วนของ CentOS ทำงานบนHyper-V การปิดบริการการรวมในการตั้งค่า VM ดูเหมือนจะแก้ไขได้แล้ว โดยเฉพาะการประสานเวลา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.