免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2800 | 回复: 10

[硬件及驱动] 关于工作队列的一个问题 [复制链接]

论坛徽章:
1
摩羯座
日期:2014-05-07 11:21:33
发表于 2014-09-03 10:52 |显示全部楼层

请教大神们一个问题:

          网络tx/rx驱动采用的是工作队列,有两个现象:ping 内网延时较大(只接了一台主机),8ms左右;跑流量(大量转发报文)时,top 下显示sys占用较高;
当驱动设置成tasklet 模式后,上面两个现象就没了。

           我查了下资料,工作队列优先级要低点。但是两者的差别有这么大吗?而且在很简单的环境下ping延时那么大,sys占用高又是什么导致的呢?



谢谢!

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 2014-09-03 21:28 |显示全部楼层
一个是软中断,一个是内核态线程,能比吗?软中断实时性肯定比内核态线程要高呀。同时,TOP也会把它们统计到不同的时间里头。

论坛徽章:
1
摩羯座
日期:2014-05-07 11:21:33
发表于 2014-09-03 22:32 |显示全部楼层
回复 2# Tinnal


    谢谢您的回答,但是在一个很简单的环境下,就一台主机ping这个设备的延时都是几ms,我不是很理解呀,这个时候也没有很多的软中断来抢占
工作队列。。这个sys可能计算到工作队列里面去呢??还有对sys也不清楚,到底表示什么呢,能否给小弟科普一下


感谢!

论坛徽章:
30
黑曼巴
日期:2019-04-11 12:11:0215-16赛季CBA联赛之八一
日期:2019-06-11 14:31:1915-16赛季CBA联赛之八一
日期:2019-08-06 09:37:182016科比退役纪念章
日期:2020-04-26 09:09:56黑曼巴
日期:2020-12-23 10:47:1015-16赛季CBA联赛之吉林
日期:2021-04-02 13:50:272016科比退役纪念章
日期:2022-08-01 15:03:15黑曼巴
日期:2023-10-07 16:19:58黑曼巴
日期:2018-09-12 13:34:41CU十四周年纪念徽章
日期:2018-06-19 21:17:58洛杉矶湖人
日期:2015-03-02 16:07:282022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32
发表于 2014-09-03 22:45 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 2014-09-03 23:06 |显示全部楼层
回复 3# wan3610425

1. Linux的调度周期为毫秒级很正常。
2. 你要区分时延和吞吐量这两个量,你选择工作队列,就得接受时延。但如果你代码写得可以,吞吐量是不会变的。

3. 其它问题,请百度,这句话我说了几百次,学Linux要靠自己!


   

论坛徽章:
1
摩羯座
日期:2014-05-07 11:21:33
发表于 2014-09-04 08:29 |显示全部楼层
回复 4# angeltears

原厂给的驱动可以设置,,不同的芯片可能不一样,具体我也不清楚。
   

论坛徽章:
1
摩羯座
日期:2014-05-07 11:21:33
发表于 2014-09-04 08:32 |显示全部楼层
回复 5# Tinnal

谢谢,我再查查资料。。小弟哪有能力写这样的代码喽,,某芯片厂商给的驱动可以这样设置,我需要把这里面的原因弄清楚
   

论坛徽章:
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-09-04 08:53 |显示全部楼层
工作队列是普通优先级的内核线程,tasklet是软中断。所以,工作队列的调度延时取决于时钟中断频率和系统负荷。
sys是指进程在内核态运行的CPU时间比率,想要知道这个时候具体在干什么的话,可以:
1、top看占用率高的进程,然后cat /proc/<pid>/stack看堆栈
2、用perf top看看。

论坛徽章:
0
发表于 2014-09-06 14:04 |显示全部楼层
一般linux网卡收发(NAPI)是在softirq做的,只有少数事件(如错误清理)才会调度workQ;FreeBSD收发用的是内河线程,只是这种线程优先级很高
可见两种做法都可以

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2014-09-10 09:24 |显示全部楼层
回复 1# wan3610425
网络tx/rx驱动采用的是工作队列,有两个现象:ping 内网延时较大(只接了一台主机),8ms左右;跑流量(大量转发报文)时,top 下显示sys占用较高;
当驱动设置成tasklet 模式后,上面两个现象就没了。

           我查了下资料,工作队列优先级要低点。但是两者的差别有这么大吗?而且在很简单的环境下ping延时那么大,sys占用高又是什么导致的呢?


tasklet是通过软中断实现的,而工作队列是内核线程实现,所以tasklet的优先级要高于工作队列。

但是如果使用tasklet,频繁的数据包到达,可能会导致其他实时任务的实时性受到影响。

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP