我对 Linux 还比较陌生,正在为机器人应用程序安装和运行实时内核。我使用的是 Ubuntu 14.04,使用内核 3.14.3 和 3.14.3-rt5 实时补丁。也使用 x86-64。
已知错误是,当启用惰性抢占时,整个系统在某些负载下会崩溃。这种情况已经发生过几次了。我的问题是:
如何禁用惰性抢占?
我读到要添加NO_PREEMPT_LAZY
到的末尾/sys/kernel/debug/sched_features
,但是当我尝试这样做(使用~$ sudo vim /sys/kernel/debug/sched_features
)时,在尝试保存并退出(:wq
)时出现以下错误:
"/sys/kernel/debug/sched_features"
"/sys/kernel/debug/sched_features" E667: Fsync failed
WARNING: Original file may be lost or damaged
don't quit the editor until the file is successfully written!
Press ENTER or type command to continue
如果有人能帮助我绕过 vimFsync failed
或者以其他方式禁用延迟抢占,我将不胜感激。
答案1
看起来你得到了你的大部分答案都在别处. 因此在编辑文件/系统/, 具体来说调试文件系统,这不起作用,因为它是一个伪文件系统。最好的方法是将 >> 回显到文件并以 root 身份执行,因为你正在直接与内核对话。我无法判断实现 sched_features 的代码是否接受该值。调度程序安静复杂的。