任务如何在挂起时“拒绝冻结”?

任务如何在挂起时“拒绝冻结”?

昨天,当我关闭笔记本电脑时,它没有立即进入待机模式。根据日志,它正在尝试,但任务拒绝冻结:

Freezing of tasks failed after 20.005 seconds (1 tasks refusing to freeze, wq_busy=0):

这种情况持续了几个小时,直到系统真正暂停。充满syslog了像这样的消息这个问题,因为systemd一直在尝试。

怎么会发生这种事呢?为什么调度程序不能停止调度该应用程序?然后它就被有效地冻结了?我读到有多个STOP命令,其中一个很好地询问,其中一个强制冻结。为什么systemd不使用这个或者为什么这在这里不起作用?

答案1

任务冻结有详细记录在内核文档中

用户空间进程无法拒绝冻结;它们确实会被冻结,但内核和进程之间的信号是由信号处理代码自动处理的(冻结使用假信号)。

如果您看到“任务拒绝冻结”消息,则意味着内核线程拒绝冻结,通常是因为它正在执行无法设置检查点的操作。然而,必须等待几个小时才能让内核挂起是不正常的。日志消息中的堆栈跟踪将有助于了解出了什么问题。

相关内容