免费注册 查看新帖 |

Chinaunix

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

网卡丢包的问题 [复制链接]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
11 [报告]
发表于 2010-07-28 10:33 |只看该作者
一般是miss error的原因,只有增大缓冲,比如,增加网卡buffer,放大内核的backlog等措施来处理……

九贱兄,如果说缓冲固定了。那么我提高发包速率,按理说网卡接收到的速度应该是不变了啊。但是实际情况是,提高发包速率后,网卡的接收包的速率还是提高了。

论坛徽章:
0
12 [报告]
发表于 2010-07-28 10:50 |只看该作者
回复 10# 独孤九贱


   您说的是netdev_max_backlog吗?这个是在netif_rx中会被调用.采用napi的网卡好像调整这个参数没用吧?

论坛徽章:
0
13 [报告]
发表于 2010-07-28 10:53 |只看该作者
九贱兄,如果说缓冲固定了。那么我提高发包速率,按理说网卡接收到的速度应该是不变了啊。但是实际情况是 ...
Godbach 发表于 2010-07-28 10:33


你先看你的网卡有没有进一步的统计信息了来,我的情况不一定适合你的情况的。

PS:楼上的,napi模式下,一样的。

论坛徽章:
0
14 [报告]
发表于 2010-07-28 10:55 |只看该作者
回复 13# 独孤九贱


    能给出代码的出处吗?谢谢!

论坛徽章:
0
15 [报告]
发表于 2010-07-28 11:08 |只看该作者
回复 13# 独孤九贱


    刚才搜了一下代码,只有从netif_rx中找到netdev_max_backlog的比较.而napi不走netif_rx的.

我不知道这样讲对不对,请您赐教.谢谢了!

论坛徽章:
0
16 [报告]
发表于 2010-07-28 14:09 |只看该作者
本帖最后由 独孤九贱 于 2010-07-28 14:10 编辑
回复  独孤九贱


    刚才搜了一下代码,只有从netif_rx中找到netdev_max_backlog的比较.而napi不走net ...
buzzle 发表于 2010-07-28 11:08



客气了……
对于napi的网卡来讲,每个网卡都有“配额”,也就是说,在一次接收当中,最多允许接收多少个包,就得把控制权交给其它网卡,否则其它网卡就没有接收数据包的机会了,如果此网卡的数据一直源源不断的话。在2.6.12中,有如下代码:
  1. static void net_rx_action(struct softirq_action *h)
  2. {
  3.         struct softnet_data *queue = &__get_cpu_var(softnet_data);
  4.         unsigned long start_time = jiffies;
  5.         int budget = netdev_max_backlog;

  6.        
  7.         local_irq_disable();

  8.         while (!list_empty(&queue->poll_list)) {
  9.                 struct net_device *dev;

  10.                 if (budget <= 0 || jiffies - start_time > 1)
  11.                         goto softnet_break;

  12.                 local_irq_enable();

  13.                 dev = list_entry(queue->poll_list.next,
  14.                                  struct net_device, poll_list);
  15.                 netpoll_poll_lock(dev);

  16.                 if (dev->quota <= 0 || dev->poll(dev, &budget)) {
复制代码
其中,budget就是配额,它是从
int budget = netdev_max_backlog;

其实对于中断方式来讲,内核已经通过一个“伪设备”在队列层将它抽像为poll方式的一部份了。
中得到的。

论坛徽章:
0
17 [报告]
发表于 2010-07-28 15:01 |只看该作者
回复 16# 独孤九贱


    哦,我的系统用的是2.6.32的内核.
   
   对应的是
  1. int budget = netdev_budget
复制代码
所以应该调整的是/proc/sys/net/core/netdev_budget
谢谢您的提示。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
18 [报告]
发表于 2010-07-29 13:22 |只看该作者
以下是测试发包率为100kpps和200kpps时网卡接收和丢弃的数据包的速率。
Recv         Drop
48963        51050
98195        101822

还测试了其他的发包速率,基本上就是发包速率提高了,Recv和Drop的都提高,而且比例还一致。

论坛徽章:
0
19 [报告]
发表于 2010-07-29 13:37 |只看该作者
那通过率是否也相应提高了呢?还是维持不变?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
20 [报告]
发表于 2010-07-29 13:41 |只看该作者
据我统计,通过率基本上是不变的。
从上面这两组数据也说明了通过率基本上是稳定的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP