You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04.5 LTS下dbus-daemon与systemd-udevd因home分区(dm-2)持续高CPU占用的问题咨询

Ubuntu 20.04.5 LTS下dbus-daemon与systemd-udevd因home分区(dm-2)持续高CPU占用的问题咨询

大家好,我目前在用Ubuntu 20.04.5 LTS,桌面环境是gnome-classic(老习惯改不了😅)。

之前刚登录系统的时候,dbus-daemon会占用几分钟的高CPU,但之后都会降到正常水平。不过最近这两天,dbus-daemon和systemd-udevd一直占着50%左右的CPU,完全降不下来,导致笔记本风扇一直转个不停,实在头疼。

我试着运行了dbus-monitor --system,结果看到消息疯狂刷屏,截取其中一段如下:

signal time=1676894325.355898 sender=org.freedesktop.DBus -> destination=:1.245 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired

string ":1.245"

signal time=1676894325.365912 sender=:1.1 -> destination=(null destination) serial=4880989 path=/org/freedesktop/systemd1/unit/sys_2ddevices_2dvirtual_2dblock_2ddm_5cx2d2_2edevice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged

string "org.freedesktop.systemd1.Device"

array [

dict entry(

string "SysFSPath"

variant             string "/sys/devices/virtual/block/dm-2"

)

]

array [

]

signal time=1676894325.366042 sender=:1.1 -> destination=(null destination) serial=4880990 path=/org/freedesktop/systemd1/unit/sys_2ddevices_2dvirtual_2dblock_2ddm_5cx2d2_2edevice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged

string "org.freedesktop.systemd1.Unit"

array [

dict entry(

string "ActiveState"

variant             string "active"

)

dict entry(

string "SubState"

variant             string "plugged"

)

dict entry(

string "StateChangeTimestamp"

variant             uint64 1676892339266329

)

dict entry(

string "StateChangeTimestampMonotonic"

variant             uint64 19734942

)

dict entry(

string "InactiveExitTimestamp"

variant             uint64 1676892339266329

)

dict entry(

string "InactiveExitTimestampMonotonic"

variant             uint64 19734942

)

dict entry(

string "ActiveEnterTimestamp"

variant             uint64 1676892339266329

)

dict entry(

string "ActiveEnterTimestampMonotonic"

variant             uint64 19734942

)

dict entry(

string "ActiveExitTimestamp"

variant             uint64 0

)

dict entry(

string "ActiveExitTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "InactiveEnterTimestamp"

variant             uint64 0

)

dict entry(

string "InactiveEnterTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "Job"

variant             struct {

uint32 0

object path "/"

}

)

dict entry(

string "ConditionResult"

variant             boolean false

)

dict entry(

string "AssertResult"

variant             boolean false

)

dict entry(

string "ConditionTimestamp"

variant             uint64 0

)

dict entry(

string "ConditionTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "AssertTimestamp"

variant             uint64 0

)

dict entry(

string "AssertTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "InvocationID"

variant             array of bytes [

4c 6f ff 28 3e 58 4e 6e 81 82 b3 1c 0c 83 82 3b

]

)

]

array [

string "Conditions"

string "Asserts"

]

signal time=1676894325.366191 sender=:1.1 -> destination=(null destination) serial=4880991 path=/org/freedesktop/systemd1/unit/dev_2ddm_5cx2d2_2edevice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged

string "org.freedesktop.systemd1.Device"

array [

dict entry(

string "SysFSPath"

variant             string "/sys/devices/virtual/block/dm-2"

)

]

array [

]

signal time=1676894325.366431 sender=:1.1 -> destination=(null destination) serial=4880992 path=/org/freedesktop/systemd1/unit/dev_2ddm_5cx2d2_2edevice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged

string "org.freedesktop.systemd1.Unit"

array [

dict entry(

string "ActiveState"

variant             string "active"

)

dict entry(

string "SubState"

variant             string "plugged"

)

dict entry(

string "StateChangeTimestamp"

variant             uint64 1676892339266328

)

dict entry(

string "StateChangeTimestampMonotonic"

variant             uint64 19734941

)

dict entry(

string "InactiveExitTimestamp"

variant             uint64 1676892339266328

)

dict entry(

string "InactiveExitTimestampMonotonic"

variant             uint64 19734941

)

dict entry(

string "ActiveEnterTimestamp"

variant             uint64 1676892339266328

)

dict entry(

string "ActiveEnterTimestampMonotonic"

variant             uint64 19734941

)

dict entry(

string "ActiveExitTimestamp"

variant             uint64 0

)

dict entry(

string "ActiveExitTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "InactiveEnterTimestamp"

variant             uint64 0

)

dict entry(

string "InactiveEnterTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "Job"

variant             struct {

uint32 0

object path "/"

}

)

dict entry(

string "ConditionResult"

variant             boolean false

)

dict entry(

string "AssertResult"

variant             boolean false

)

dict entry(

string "ConditionTimestamp"

variant             uint64 0

)

dict entry(

string "ConditionTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "AssertTimestamp"

variant             uint64 0

)

dict entry(

string "AssertTimestampMonotonic"

variant             uint64 0

)

dict entry(

string "InvocationID"

variant             array of bytes [

0c b8 d1 90 42 3e 45 b6 88 f3 71 6e 66 1e 83 c5

]

)

]

array [

string "Conditions"

string "Asserts"

]

同时运行udevadm monitor也看到类似的高频变更消息,刷屏速度稍慢一点,示例如下:

KERNEL[2188.932041] change   /devices/virtual/block/dm-2 (block)

UDEV  [2188.940914] change   /devices/virtual/block/dm-2 (block)

KERNEL[2188.945441] change   /devices/virtual/block/dm-2 (block)

UDEV  [2188.957689] change   /devices/virtual/block/dm-2 (block)

KERNEL[2188.961225] change   /devices/virtual/block/dm-2 (block)

UDEV  [2188.969813] change   /devices/virtual/block/dm-2 (block)

KERNEL[2188.974779] change   /devices/virtual/block/dm-2 (block)

我查了一下dm-2的信息,它对应的是我的home分区:

~$ ls -l /dev/mapper/

total 0

crw------- 1 root root 10, 236 Feb 20 11:25 control

lrwxrwxrwx 1 root root       7 Feb 20 12:02 home -> ../dm-2

lrwxrwxrwx 1 root root       7 Feb 20 11:25 sda3_crypt -> ../dm-0

lrwxrwxrwx 1 root root       7 Feb 20 11:25 swap -> ../dm-1

由于我对dbus和udev的了解有限,搜了一圈后找到一个临时解决办法:创建/etc/udev/rules.d/90-fixdm.rules文件(注:原内容里写的rulesd是笔误,正确路径为rules.d),内容如下:

ACTION=="add|change", KERNEL=="dm-*", OPTIONS:="nowatch"

这个方法确实立刻见效,那两个进程的CPU占用马上降了下来,风扇也停了。但第二天启动笔记本的时候,却卡在了"waiting for /dev/mapper/swap"的环节,完全进不去系统。我只能用Ubuntu Live U盘启动,删掉了这个规则文件,系统才恢复正常,但高CPU占用的问题又回来了。

现在想请教大家,最近可能是什么变化导致了这个问题?有没有什么既能解决高CPU占用,又不会影响系统启动的办法?

谢谢!

备注:内容来源于stack exchange,提问作者dfluff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:07:41