[問題] 如何使thread擁有高priority卻不影響wifi

作者: wtchen (沒有存在感的人)   2015-10-10 01:51:31
是這樣的,我正在想辦法解決RPI裡thread中的usleep不夠準的問題
(usleep 3000 -> 有時候會變6000多)
我看bcm2835 lib的說明有建議說把thread設成MAX priority
可以避免thread被swap
像這樣:
struct sched_param sp;
memset(&sp, 0, sizeof(sp));
sp.sched_priority = sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(0, SCHED_FIFO, &sp);
mlockall(MCL_CURRENT | MCL_FUTURE);
我嘗試了以後,發現無線網路會因此頓頓的(因為我用ssh連)
看來是因為priority被搶走了以至於response time 太長
請問我要如何設才能讓thread比無線網路相關thread的優先權小(但相對來說還是高)?
Thanks.
作者: whyso (www)   2015-10-14 00:39:00
SCHED_FIFO會導致系統可能一直在執行你的thread,要適時的做sleep.. 其他還有優先權較低的SCHED_RR.timer不準也有可能是你沒使用high resolution timer的關係.

Links booklink

Contact Us: admin [ a t ] ucptt.com