我开发了一个内核模块,它完成了一项繁重的工作,这当然需要时间。问题是该模块占用CPU的时间超过20秒,因此引发了softlockup_threshold的错误。
我的问题是,有什么方法可以绕过它吗?也就是说,它可以篡改阈值吗?或者,它是否可以强制调度并在以后继续其工作?(以便将计时器设置为0)。
先谢谢你,帕诺斯
发布于 2012-11-14 04:46:12
你可以试着放弃一段时间的CPU,如果这是可以接受的,那么你应该看看schedule()这里有一篇关于Sleeping in the Kernel的很棒的文章
发布于 2012-11-14 10:12:52
使用新内核,您可以调优/proc/sys/kernel/watchdog_thresh (我认为较旧的内核使用/proc/sys/kernel/softlockup_thresh )。但是不鼓励这样做,因为阻塞20秒意味着你的代码有问题,你应该释放CPU,例如通过调用cond_resched()。
https://stackoverflow.com/questions/13368226
复制相似问题