免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1513 | 回复: 2

[中断] 关于linux内核设计与实现上面的问题 [复制链接]

论坛徽章:
0
发表于 2015-04-14 19:29 |显示全部楼层
请教一个问题:
在看linux内核设计与实现时,在工作队列部分有说:linux的内核开发者们非常反对创建新的内核线程。
为什么反对穿件新的内核线程?

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
发表于 2015-04-15 18:46 |显示全部楼层
个人觉得这是一个设计选择问题,每个内核线程只处理一种任务 vs.  一个内核线程(keventd)处理不同类型的任务。

前者的优点是此类任务独享自己的队列,在普通work很多(即keventd的队列比较满)的情况下,可以得到更快的调度。
缺点是,如果任务种类多了,每个都开自己的thread,那thread之间的调度(任务切换开销/优先级等)就是问题。

而workqueue的实现里,来自不同模块的各种work task在相同per cpu队列上排队,不同的任务一视同仁,不能真实的反映任务之间的轻重缓急。
貌似新版本的内核对此做了改进,还可以根据任务量动态的调节event线程的数量。

从API的角度看,当然是workqueue更简洁了。

论坛徽章:
0
发表于 2015-04-16 21:40 |显示全部楼层
回复 2# nswcfd
多谢了

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP