systemd-udevが私のCPUを使用しているのはなぜですか?

systemd-udevが私のCPUを使用しているのはなぜですか?

私のクアッドコアノートブックのコアの1つが固定され、非常に熱く動作することがわかりました。私はこれを以下で見つけました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を台無しにするのですか?これは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

編集する:固定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の前に#を追加して2行目をコメントアウトすると、次のようになります。

#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キーを押すことです。次に、ブートローダリストにリストされている古いカーネルを選択します。

これは私にとってうまくいきます。

関連情報