免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: noted2011

[进程管理] 唤醒进程(wake_up_process)到进程真正执行延迟较大 [复制链接]

论坛徽章:
0
发表于 2014-02-14 15:37 |显示全部楼层
kkddkkdd11 发表于 2014-02-14 15:19
现在 很多高端网卡 就是走的 软中断 napi轮询
然后可以配合 mmap 自己解析协议
并没有 非要走int80 这 ...


网络这块,我们用的Freescale 硬件DPAA通道,采取的是NAPI。
我们这个产品关键是整个时序的控制,有CPU,DSP,FPGA,RF协作配合,严格有序地完成整个业务,对实时性要求较高。这里所说的协议栈不是指我们平时所说的TCP/IP协议栈,而是LTE协议栈。你的建议在某些应用场景,是适用的。在此,谢谢!但是,对目前这个问题是不适用的。

论坛徽章:
0
发表于 2014-02-14 17:10 |显示全部楼层
noted2011 发表于 2014-02-14 15:37
网络这块,我们用的Freescale 硬件DPAA通道,采取的是NAPI。
我们这个产品关键是整个时序的控制,有CP ...


这么复杂的确没玩过 :)
你看看 rtlinux
改改 HZ 重新编译内核
这类 能否 有所提升

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-02-14 17:27 |显示全部楼层
noted2011 发表于 2014-02-14 13:44
1ms的硬中断是FPGA产生的,经过cpld透传给CPU的外部中断。RT补丁的中断线程化打上了,除了三个在core 0 ...

调度算法用的cfq,看换种适合rt的算法试试(具体算法名忘了~~)

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-02-14 17:28 |显示全部楼层
哦,还有个关键的,内核抢占不知是否配置了?

论坛徽章:
0
发表于 2014-02-14 17:54 |显示全部楼层
wake_up_process中会调用check_preempt_curr_rt检查是否能抢占当前任务,如果可以抢占,任务在其他核的,会发送reschedule IPI中断通知切换,本核的则在中断返回时发生切换;
理论上如果要唤醒的进程A是core 0上优先级最高的进程,调用wake_up_process到A得到执行的时延就是定时器中断执行返回的时间(或者IPI中断返回)+schedule切换时间+A系统调用返回用户态时间,
不应该达到800us这么大呀,是不是:
1. core 0上有其他频繁的中断,如网卡中断,导致定时器中断被频繁抢占?是不是可以考虑对core 0做中断隔离,只保留系统的tick中断等
2. core 0上有其他同样高优先级的实时线程?
或者如果对实时性要求很高,是不是可以考虑:
1. 使用LWT模型,在用户态做调度?
2. 隔离核给A线程独占?

论坛徽章:
0
发表于 2014-02-15 17:43 |显示全部楼层
进程A绑定到core1,中断绑定到core0?笔误?

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2014-02-15 19:29 |显示全部楼层
本帖最后由 mordorwww 于 2014-02-15 19:31 编辑
junnyg 发表于 2014-02-14 17:54
wake_up_process中会调用check_preempt_curr_rt检查是否能抢占当前任务,如果可以抢占,任务在其他核的,会 ...



很有道理,我觉得先想办法把中断的因素排除掉,另外

使用LWT模型,在用户态做调度?这个是什么意思?

论坛徽章:
0
发表于 2014-02-16 12:02 |显示全部楼层
Dsheng 发表于 2014-02-15 17:43
进程A绑定到core1,中断绑定到core0?笔误?


不是笔误,1ms中断在core 0上,进程A在core 1上。

论坛徽章:
0
发表于 2014-02-16 12:26 |显示全部楼层
humjb_1983 发表于 2014-02-14 17:27
调度算法用的cfq,看换种适合rt的算法试试(具体算法名忘了~~)


在linux 2.6.34.12版本中,普通进程采用的是完全公平调度算法CFS,也就是你说的CFQ(Completely Fair Queuing),实时进程可以采用SCHED_FIFO 和SCHED_RR调度策略。进程A是一个实时进程,采用的是SCHED_FIFO调度策略。

论坛徽章:
0
发表于 2014-02-16 12:44 |显示全部楼层
humjb_1983 发表于 2014-02-14 17:28
哦,还有个关键的,内核抢占不知是否配置了?

这个是配置的了,是完全抢占。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP