2012-11-13 20 views
0

我開發了一個內核模塊,它做了一個沉重的工作,這當然需要時間。 問題在於模塊使用CPU的時間超過20秒,而 則導致softlockup_threshold的BUG提升。旁路softlockup_threshold

我的問題是,有沒有辦法繞過這個?即是否可以篡改門檻? 或者它能強制安排並在以後繼續工作嗎? (爲了將定時器設置爲0)。

謝謝你在前進, 帕諾斯

+1

卸載辛勤工作到用戶過程中,通過一個特殊的設備談話的內核模塊。你真的應該不會做大量計算內核中的! –

+0

我不能:(我是暴力破解內核的虛擬機,以檢測隱藏kenrel模塊,它在內核空間中完成。 – Panos

+0

你儘量準確地產生了一陣 – iabdalkader

回答

1

你可以嘗試讓出CPU一會兒,如果這是可以接受的,那麼你應該看看schedule()這裏有一個偉大的文章有關Sleeping in the Kernel

+0

謝謝!如果不是?因爲即我希望我的模塊再次成爲計劃外和非中斷? 感謝FO的幫助下, 帕諾斯 – Panos

+1

@Panos對不起,正確的調用是'時間表()''SCHED_YIELD()'是系統調用,我還添加了一個鏈接到答案,你應該去看看。 – iabdalkader

3

隨着新內核,你可以調整/ proc/sys/kernel/watchdog_thresh(我認爲舊的內核使用/ proc/sys/kernel/softlockup_thresh)。但是,這並不鼓勵,因爲堵持續20秒意味着有一些問題,你的代碼,你應該得到的CPU,例如通過調用cond_resched()。