挂起:任务冻结 20 秒后失败

Hem*_*lig 5 suspend 20.04

很多时候,当我尝试暂停 Ubuntu 20.04 时,它会失败并显示错误消息:

Freezing of tasks failed after 20.005 seconds (1 task refusing to freeze, wq_busy=1)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多技巧来了解更多信息,但我就是找不到它的来源。这始终是我们的两项任务之一。

我尝试使用命令

sudo PM_DEBUG=true pm-suspend
Run Code Online (Sandbox Code Playgroud)

但它的输出又长又混乱,我无法从中读取任何信息。输出可以在该 Pastebin 中找到。尽管我将其缩短为正确的时间戳,但它的信息太多: https: //pastebin.com/Sx8WMHie

系统日志的输出如下: https: //pastebin.com/KdJ8G1QP

有没有人可以帮助我找到问题或告诉我我真正在寻找什么?这已经持续了好几个月了,我只是没有任何线索。它出现的时候纯粹是随机的,但我认为有 20% 的人会暂停

Ato*_*her 4

在进入挂起状态(或休眠状态)之前,用户空间进程和(某些)内核线程会被冻结。如果冻结失败,则可能是由于用户空间进程或内核线程冻结失败。

要冻结用户空间进程,内核会向其发送一个信号,该信号会自动处理,并且一旦收到,就不能被忽略。然而,如果进程处于不间断睡眠状态(例如,等待由于设备不可用而无法完成的I/O),则它将不会立即接收信号。如果此延迟持续时间超过 20 秒(=默认冻结超时,请参阅/sys/power/pm_freeze_timeout(以毫秒为单位)),冻结将失败。

如果它是一个拒绝冻结的内核线程,则很可能是一个有故障的设备驱动程序,但如果不查看日志就很难判断。

NFS、CIFS 和 FUSE 等历来因引发此类问题而闻名。

具体回到你的案例,你dmesg应该有一些关于哪些任务未能冻结的详细信息,你可以从那里开始。您的 Pastebin 现已过期,但盲目猜测可能是 CIFS/SMB - 例如,您是否使用它们中的任何一个来访问 Windows 共享?

这里解释了内核中任务的冻结,希望有所帮助:https://www.kernel.org/doc/html/latest/power/freezing-of-tasks.html