Chinaunix

标题: 把软中断完全放到内核线程里 [打印本页]

作者: mordorw    时间: 2013-02-22 08:51
标题: 把软中断完全放到内核线程里
中断完成后立即调度软中断内核线程
这样做好处是显然的, 内核其它部分也可以给软中断线程发消息
有没有坏处呢
作者: stephen_du    时间: 2013-02-22 09:44
mordorw 发表于 2013-02-22 08:51
中断完成后立即调度软中断内核线程
这样做好处是显然的, 内核其它部分也可以给软中断线程发消息
有没有坏 ...


你的这个说法实际上是将“软中断”完全线程化,
这个做法会增加原来“软中断中做的事情”的延迟!因为thread毕竟是需要调度的,
既然调度必然有延迟,这个延迟可能造成很多事情无法及时处理。
作者: mordorw    时间: 2013-02-22 11:51
stephen_du 发表于 2013-02-22 09:44
你的这个说法实际上是将“软中断”完全线程化,
这个做法会增加原来“软中断中做的事情”的延迟!因为 ...



Linux内核对实时性要求没那么高吧,比实时性怎么也比不过人砖业的实时系统。

至少部分的像网络报文可以这样吧
作者: stephen_du    时间: 2013-02-22 12:17
回复 3# mordorw

linux是一个可定制性很高的系统,对实时性要求不低。
linux有个机制,当同一个中断高频率发生就会将该中断处理移到一个中断线程里处理。linux允许你将自己的中断线程化而不在softirq里面处理


   
作者: smalloc    时间: 2013-03-07 09:46
你可以选择不用软中断啊
作者: amarant    时间: 2013-03-07 22:15
我觉得smalloc说的很有道理,同时存在软中断和内核线程,就是区别在处理的优先级上。
作者: chishanmingshen    时间: 2013-03-07 22:56
也就是说延迟长短的差别!是吧?
作者: 瀚海书香    时间: 2013-03-08 09:15
回复 1# mordorw
现在内核网络部分就再朝着这个方向发展吧,尤其是10G的驱动,都是将软中断线程化。至少对于网络接收数据包这种情形,貌似没有太大的坏处

   
作者: 灌水菜鸟    时间: 2013-03-08 09:47
现在的趋势就是越来越灵活,同时尽量的将其代价减小。中断线程化就是例证,代价是显而易见的,多了n个调度单位,上下文切换无论如何逃不掉吧?好处也是很明显的,你的实时进程可以得到更快更稳定的响应速度以及执行时间上的保证。但是同时也会有一定的风险:如果你的实时进程优先级很高,而执行时间不是很稳定或者干脆长时间运行,阻塞了全部线程化了的软硬中断,后果就难说了。
作者: smalloc    时间: 2013-03-08 10:15
回复 8# 瀚海书香


    10G数据量很大啊。线程化主要还是依托多核多处理器吧
作者: chishanmingshen    时间: 2013-03-08 10:51
有道理

bsd很早就是中断线程化了

回复 9# 灌水菜鸟


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2