免费注册 查看新帖 |

Chinaunix

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

[网络子系统] 如何降低softirq的cpu使用率 [复制链接]

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
发表于 2013-04-12 10:09 |显示全部楼层
众所周知,在网络负载很重的时候,cpu容易全部被softirq占用。比如运行网络吞吐量测试工具等场景。
问题是,如何在这种状况下能保证用户应用程序能够正常运行?如何能够降低cpu的使用率?
如果不开内核抢占如何?开内核抢占又如何?谢谢!

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
发表于 2013-04-12 14:49 |显示全部楼层
木有人谈谈看法么?是不是要加个悬赏。。。。。。

论坛徽章:
0
发表于 2013-04-12 21:03 |显示全部楼层
你具体是啥情况,多核每个CPU上的softirq负载都高?还是就个别的CPU上高。 前者的话 感觉你需要换个强劲的CPU。 后面的话 看看能试试irqbalance。但是这个貌似weibo上霸爷有个测试。貌似说没用。
http://blog.yufeng.info/archives/2422

论坛徽章:
0
发表于 2013-04-13 07:10 |显示全部楼层
可以考虑负载均衡方面和考虑网络数据包使用dma方式(在第二次数据处理阶段)。

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
发表于 2013-04-13 11:02 |显示全部楼层
回复 3# xs3c

谢谢关注!场景为单核cpu + 硬件加速模块。不过因为要做一些复杂的协议处理,无法完全做cpu offload。在网络负载很重的时候,系统响应非常慢,影响到一些业务流。
   

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
发表于 2013-04-13 11:03 |显示全部楼层
回复 4# 鬼鬼一哈
可以详细讲讲么?谢谢关注!


   

论坛徽章:
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
发表于 2013-04-13 12:33 |显示全部楼层
回复 1# daniel_11
众所周知,在网络负载很重的时候,cpu容易全部被softirq占用。比如运行网络吞吐量测试工具等场景。
问题是,如何在这种状况下能保证用户应用程序能够正常运行?如何能够降低cpu的使用率?
如果不开内核抢占如何?开内核抢占又如何?谢谢!


其实这是一个设计原则的问题。内核在这方面的原则就是,软中断处理的优先级高于用户态应用程序。

可以将网络软中断放到一个CPU上处理,应用程序使用其他的CPU
   

论坛徽章:
0
发表于 2013-04-13 14:20 |显示全部楼层
瀚海书香 发表于 2013-04-13 12:33
回复 1# daniel_11

楼主的场景是单核CPU,所以核隔离做不到,我觉得是不是可以:
1. 在网卡驱动中做流控,主动丢包
2. 修改内核中断处理流程,在硬中断处理完后不处理软中断,全部交给软中断线程处理,并且将软中断线程的优先级调低
3. 打开内核抢占,设置业务进程的优先级为实时进程
不过这样会导致包处理的延时增大,中断实时性得不到保证

论坛徽章:
0
发表于 2013-04-13 22:14 |显示全部楼层
回复 8# junnyg


    楼主的场景是单核CPU,所以核隔离做不到,我觉得是不是可以:
1. 在网卡驱动中做流控,主动丢包

主动丢包,这样太暴力了吧。

2. 修改内核中断处理流程,在硬中断处理完后不处理软中断,全部交给软中断线程处理,并且将软中断线程的优先级调低

如果想增强业务程序的响应的话。LZ可以看看试着强制中断线程化。这样除了时钟中断 大部分中断都作为线程。再可以修改应用程序为sched_fifo。提高优先级。

3. 打开内核抢占,设置业务进程的优先级为实时进程
不过这样会导致包处理的延时增大,中断实时性得不到保证

LZ的情况,真应该换更强的CPU 或者换至少支持off load的网卡。然后再看看效果。

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
发表于 2013-04-14 19:15 |显示全部楼层
回复 9# junior1108

现实的情况是无法更换更强的cpu了,我个人也觉得要求有点过分,但大家都懂得。。。
确实有考虑做主动流控,但目前主要针对udp,tcp没做。无法较好解决问题。
没有强制做中断线程化。
已经有做优先级调整,有一点效果。。。
对于内核抢占,还是比较犹豫,毕竟要牺牲性能,担心不好交代啊。
谢谢关注!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP