免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3984 | 回复: 8
打印 上一主题 下一主题

skb->nh.iph->saddr导致性能下降 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-26 15:48 |只看该作者 |倒序浏览
最近在做一个二层接入的小设备,今天发现新版本的性能从60M降为50M,通过查code,发现是下面这句导致的:
    return skb->nh.iph->saddr;
如果改为
  return skb->nh.iph;
性能就能达到60M.
另外,我的box的内存很小(只有6M).
本版高手如云,希望大家给个思路.

[ 本帖最后由 happy_flying 于 2008-6-26 16:00 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-06-26 16:10 |只看该作者
6M 是数量,单位是什么?Bps 还是 bps

论坛徽章:
0
3 [报告]
发表于 2008-06-26 16:15 |只看该作者
sorry,没说清楚,内存是6MByte.
# cat /proc/meminfo
        total:    used:    free:  shared: buffers:  cached:
Mem:   6684672  6402048   282624        0   733184  1650688
Swap:        0        0        0
MemTotal:         6528 kB

论坛徽章:
0
4 [报告]
发表于 2008-06-26 16:19 |只看该作者
1.你是怎么发现的?
2.
导致的:
    return skb->nh.iph->saddr;
如果改为
  return skb->nh.iph;

信息太少?

论坛徽章:
0
5 [报告]
发表于 2008-06-26 16:36 |只看该作者
该设备是一个二层转发设备,可以理解成一个bridge,新版本只增加了一个feature,就是在fdb表里添加一项:该MAC对应的IP地址.由于新加的code不多,所以我就逐行注释,每注释掉一行就测一次性能,发现注释掉下面这行后性能就能到60M了.
return skb->nh.iph->saddr;
后来就打开这行注释,改写这行,只要不访问saddr就没有问题.
我怀疑有可能是因为skb结构体本身和skb的data数据区不在同一个页面上导致的.只访问skb结构体本身所在的那个页面
性能正常,一访问skb data所在的那个页面性能就下降了,难道和cache有关?

论坛徽章:
0
6 [报告]
发表于 2008-06-26 16:48 |只看该作者
肯定不会被交换
不过即便是没有cache,多访问一次内存也不至于导致这么多性能下降
再全一点?

论坛徽章:
0
7 [报告]
发表于 2008-06-26 17:58 |只看该作者
有时候在某个地方随便加点废代码,性能就能提3、4M,所以跟cache肯定有关系,但这次差10M我认为就不仅仅是cache的问题了,觉得和内存太小有关系.

论坛徽章:
0
8 [报告]
发表于 2008-06-27 14:10 |只看该作者
有可能,你没有监视过内存的使用吗,以及其他影响系统性能的参数?
vmstat 1

论坛徽章:
0
9 [报告]
发表于 2008-06-27 14:28 |只看该作者
原帖由 qtdszws 于 2008-6-27 14:10 发表
有可能,你没有监视过内存的使用吗,以及其他影响系统性能的参数?
vmstat 1


内存小通常是导致什么问题,就是在哪块代码的地方?
比如一个千兆网卡收到的包有可能要缓冲太久导致没有内存(猜的,事实是总是丢包),尽管内存很大
一共6M的内存,加几个进程占用一些,加上内核本身,加上一些空闲的却不能收回的内存
会不会是dev_alloc_skb分配失败,因为是中断上下文
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP