我开发了一个内核模块,它工作繁重,当然需要时间。 问题是模块使用CPU的时间超过20秒 结果是引发了softlockup_threshold的BUG。
我的问题是,有没有办法绕过这个?即它能篡改门槛吗? 或者它可以强制安排并在以后继续工作吗? (为了将计时器设置为0)。
提前谢谢你, 帕诺斯
答案 0 :(得分:3)
使用新内核,你可以调整/ proc / sys / kernel / watchdog_thresh(旧的内核使用/ proc / sys / kernel / softlockup_thresh,我认为)。但是不鼓励这样做,因为阻塞20秒意味着你的代码有问题,你应该产生CPU,例如通过调用cond_resched()。
答案 1 :(得分:1)
你可以尝试让CPU产生一段时间,如果这是可以接受的,那么你应该看看schedule()
这里有一篇关于Sleeping in the Kernel的好文章