免费注册 查看新帖 |

Chinaunix

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

linux内核最多可缓存多少个数据包? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-06 16:59 |只看该作者 |倒序浏览
自己写的TC模块用来对多用户多优先级进行流量限制。但是当缓存队列大小涨到500的时候就会有一个较长的中断时间。原因是个别用户占据了大部分的缓存队列资源。其他用户的网络包就直接丢包了。
      请问500个数据包缓冲这个参数在哪里设置,怎么改大?

论坛徽章:
0
2 [报告]
发表于 2010-01-06 22:01 |只看该作者
队列的大小是网卡的缓存队列。

一般设置为100就行了。

不过我不知道如何修改。我一般都是直接该驱动

论坛徽章:
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
3 [报告]
发表于 2010-01-06 22:01 |只看该作者
ifconfig可以显出tx_queue_len,应该就是设置缓冲的包数目

[ 本帖最后由 Godbach 于 2010-1-7 10:35 编辑 ]

论坛徽章:
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
4 [报告]
发表于 2010-01-07 10:35 |只看该作者
执行ifconfig eth0结果如下:
eth0      ......

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:10276041 errors:0 dropped:0 overruns:0 frame:0

          TX packets:243211 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:989598588 (943.7 MiB)  TX bytes:177000884 (168.8 MiB)

          Interrupt:10 Base address:0x2024


其中有txqueuelen就是发送队列的长度,看一下ifconfig的命令,是可以设置txqueuelen的。

论坛徽章:
0
5 [报告]
发表于 2010-01-10 21:52 |只看该作者
原帖由 Godbach 于 2010-1-7 10:35 发表
执行ifconfig eth0结果如下:


其中有txqueuelen就是发送队列的长度,看一下ifconfig的命令,是可以设置txqueuelen的。

学习

论坛徽章:
0
6 [报告]
发表于 2010-01-12 14:36 |只看该作者
原帖由 Godbach 于 2010-1-6 22:01 发表
ifconfig可以显出tx_queue_len,应该就是设置缓冲的包数目


这是网络接口的发送缓冲容量。缺省为1000字节。可以这样修改:
echo 2000 > /sys/class/net/eth0/tx_queue_len

以下是内核分配给每个网络接口的接收缓冲容量:
/proc/sys/net/core/netdev_max_backlog
该文件指定了,每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。缺省设置:300。

除此之外,网卡芯片上也集成有rx,tx两路缓冲,容量一般为256字节。具体可用 ethtool -g ethX 查看。并用 ethtool -G ethX rx|tx  N 来修改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP