免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: duanius
打印 上一主题 下一主题

有谁对网卡DMA有所了解 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2008-03-19 23:08 |只看该作者
原帖由 terryfe 于 2008-3-18 18:05 发表

没时间再去看solaris中断处理的代码,不过Linux下多核系统下硬中断触发并且在同一个核中处理软中断的方式是目前的最大瓶颈,其他核完全得不到利用.
目前解决方案貌似只能依赖这块网卡了

先没认真看,现在觉得不对哦。
只是说网卡中断全部给一个CPU导致CPU负荷重,效率低,没有说把soft_irq也在这个CPU上处理吧。
比如一个千兆网卡,用中断方式,当网卡中断过多时,kernel会启动ksoft_irq内核线程来处理网络中断的后半部,但没有规定这个内核线程由接收中断的核执行,其它核一样可以执行啊

论坛徽章:
0
52 [报告]
发表于 2008-03-19 23:25 |只看该作者
原帖由 zx_wing 于 2008-3-19 23:08 发表

先没认真看,现在觉得不对哦。
只是说网卡中断全部给一个CPU导致CPU负荷重,效率低,没有说把soft_irq也在这个CPU上处理吧。
比如一个千兆网卡,用中断方式,当网卡中断过多时,kernel会启动ksoft_irq内核线 ...

no
软中断队列是绑定CPU的

论坛徽章:
0
53 [报告]
发表于 2008-03-20 10:56 |只看该作者
原帖由 terryfe 于 2008-3-19 22:31 发表
今晚临下班的时候intel送来卡了.....真壮观
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7      
  0:         64          0          0          0     ...



每个卡17个中断,8rx+8tx+1lsc

不过你的CPU个数太少,理想的情况应该根据CPU个数设置你的中断数.

不然也是浪费.

论坛徽章:
0
54 [报告]
发表于 2008-03-20 11:09 |只看该作者
原帖由 Solaris12 于 2008-3-20 10:56 发表



每个卡17个中断,8rx+8tx+1lsc

不过你的CPU个数太少,理想的情况应该根据CPU个数设置你的中断数.

不然也是浪费.

已经改过了
现在拿不到更多核的了....x86架构目前只能搞到4X4,想试试128核的T2也没机会啊>.<

论坛徽章:
0
55 [报告]
发表于 2008-03-20 12:57 |只看该作者
原帖由 terryfe 于 2008-3-19 23:25 发表

no
软中断队列是绑定CPU的

哦,对的,我忘了softirq的pending bitmap用的是一个per cpu的数据,这样只能是绑定cpu执行的。
多谢指出

论坛徽章:
0
56 [报告]
发表于 2008-03-20 13:28 |只看该作者
原帖由 terryfe 于 2008-3-20 11:09 发表

已经改过了
现在拿不到更多核的了....x86架构目前只能搞到4X4,想试试128核的T2也没机会啊>.



最好能驱动能做动态检测, 查一下CPU的数目,然后在决定注册多少个中断.

论坛徽章:
0
57 [报告]
发表于 2008-03-20 18:03 |只看该作者
原帖由 Solaris12 于 2008-3-20 13:28 发表



最好能驱动能做动态检测, 查一下CPU的数目,然后在决定注册多少个中断.

ixgbe可以直接modprobe ixgbe RSS=x,x来指定队列个数

论坛徽章:
0
58 [报告]
发表于 2008-03-21 08:02 |只看该作者
原帖由 terryfe 于 2008-3-20 18:03 发表

ixgbe可以直接modprobe ixgbe RSS=x,x来指定队列个数


但这个x需要在配置文件设置或者有默认值吧.

我的意思是, 这个x的值最好等于CPU的数目+1,而CPU的数目最好是由程序自己检测出来.

论坛徽章:
0
59 [报告]
发表于 2008-03-21 09:37 |只看该作者
原帖由 Solaris12 于 2008-3-21 08:02 发表


但这个x需要在配置文件设置或者有默认值吧.

我的意思是, 这个x的值最好等于CPU的数目+1,而CPU的数目最好是由程序自己检测出来.

现在的问题是,默认情况下x=CPU数
而RxTx队列是分开的,我又插了2块网卡,对于8核系统来说,这样总队列(中断)数就是32了=.=....

论坛徽章:
0
60 [报告]
发表于 2008-03-23 09:16 |只看该作者
你好,我最近正在做类似的工作:在两块网卡之间跳过协议栈直接收发数据,使用的是E1000网卡,希望多多讨论
我的mail: hongxing777@gmail.com

山东大学的那篇论文完全能否共享一下?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP