0

もちろん時間がかかる重い仕事をするカーネルモジュールを開発しています。問題は、モジュールが 20 秒以上 CPU を使用し、その結果として softlockup_threshold のバグが発生することです。

私の質問は、これを回避する方法はありますか? つまり、しきい値を改ざんできますか? または、スケジューリングを強制して、後で作業を続行できますか? (タイマーを0に設定するため)。

事前にありがとう、パノス

4

2 に答える 2

3

新しいカーネルでは、/proc/sys/kernel/watchdog_thresh を調整できます (古いカーネルは /proc/sys/kernel/softlockup_thresh を使用していると思います)。しかし、これは推奨されません。20 秒間のブロックは、コードに何らかの問題があることを意味するためです。たとえば、cond_resched() を呼び出して、CPU を解放する必要があります。

于 2012-11-14T02:12:52.490 に答える
1

しばらくの間、CPU を明け渡すことを試みることができます。それが許容できる場合は、調べる必要があります。カーネルでのスリープschedule()に関する素晴らしい記事がここにあります。

于 2012-11-13T20:46:11.630 に答える