什么是“金丝雀线”,为什么会饿死?


14

以下内容偶尔会出现在/var/log/syslog

rtkit-daemon[1145]: The canary thread is apparently starving. Taking action.
rtkit-daemon[1145]: Demoting known real-time threads.
rtkit-daemon[1145]: Successfully demoted thread 1431 of process 1368 (n/a).
rtkit-daemon[1145]: Successfully demoted thread 1430 of process 1368 (n/a).
rtkit-daemon[1145]: Successfully demoted thread 1368 of process 1368 (n/a).
rtkit-daemon[1145]: Demoted 3 threads.

这里发生了什么?


kern.log中有关ACPI的任何错误?如果是这样:输入BIOS并检查是否ACPI power save options将其设置为Extended。将其更改为Normal
Rinzwind

Answers:


24

这里使用的“金丝雀”一词最初来自煤矿。煤矿工人使用金丝雀来检测危险气体(如果随身携带的金丝雀死亡,他们知道他们必须尽快走出竖井/矿井)。因此,“金丝雀”一词现在经常用于您用来获得(早期)关于危险情况的警告的任何内容。

在这种情况下,似乎 “ rtkit”启动了一个“正常”线程来测试获得“实时”优先级的线程是否正在“饿死”其他线程(和进程),其中“饿死”意味着它们获得的处理器时间太少。这是一项安全措施,可确保有权访问实时优先级的进程/线程不会占用过多的CPU时间,以至于其他任务不再有效。

因此,显然某些从rtkit获得实时优先级的线程的行为异常,并且试图垄断CPU,rtkit借助其“ canary线程”检测到了这一点,因此rtkit取消了实时优先级。


-3

这是缓冲区溢出

维基百科缓冲区溢出金丝雀

我不能从您发布的日志中分辨出问题所在,可以检查或粘贴这些消息下方的日志条目吗?过程1368是什么?

sudo ps -p 1368

2
这与缓冲区溢出无关,但是“ canary”一词的使用也源自煤矿工人的canary。
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.