免费注册 查看新帖 |

Chinaunix

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

动态优化 GNU/Linux TCP/IP 栈 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-08 18:16 |只看该作者 |倒序浏览
动态优化 GNU/Linux TCP/IP 栈
       看/proc/sys/net/ipv4/ipfrag_high_thresh和/proc/sys/net/ipv4/ipfrag_low_thresh了解系统可以处理的包的数目
  标准的 GNU/Linux 发行版试图对各种部署情况都进行优化。这意味着标准的发行版可能并没有对您的环境进行特殊的优化。
解决方案
  GNU/Linux 提供了很多可调节的内核参数,您可以使用这些参数为您自己的用途对操作系统进行动态配置。下面我们来了解一下影响 socket 性能的一些更重要的选项。
  在 /proc 虚拟文件系统中存在一些可调节的内核参数。这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 cat 工具进行读取,或使用 echo 命令进行修改。清单 3 展示了如何查询或启用一个可调节的参数(在这种情况中,可以在 TCP/IP 栈中启用 IP 转发)。
  清单 3. 调优:在 TCP/IP 栈中启用 IP 转发

[root@camus]# cat /proc/sys/net/ipv4/ip_forward
0
[root@camus]# echo "1" > /poc/sys/net/ipv4/ip_forward
[root@camus]# cat /proc/sys/net/ipv4/ip_forward
1
[root@camus]#

   表 1 给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能。
表 1. TCP/IP 栈性能使用的可调节内核参数 可调节的参数 默认值 选项说明
/proc/sys/net/core/rmem_default   "110592"   定义默认的接收窗口大小;对于更大的 BDP 来说,这个大小也应该更大。
  /proc/sys/net/core/rmem_max   "110592"   定义接收窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大。
  /proc/sys/net/core/wmem_default   "110592"   定义默认的发送窗口大小;对于更大的 BDP 来说,这个大小也应该更大。
  /proc/sys/net/core/wmem_max   "110592"   定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大。
  /proc/sys/net/ipv4/tcp_window_scaling      "1"   启用 RFC 1323 定义的 window scaling;要支持超过 64KB 的窗口,必须启用该值。
  /proc/sys/net/ipv4/tcp_sack   "1"   启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。
  /proc/sys/net/ipv4/tcp_fack   "1"   启用转发应答(Forward Acknowledgment),这可以进行有选择应答(SACK)从而减少拥塞情况的发生;这个选项也应该启用。
  /proc/sys/net/ipv4/tcp_timestamps   "1"   以一种比重发超时更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。
  /proc/sys/net/ipv4/tcp_mem   "24576 32768 49152"   确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)。第一个值是内存使用的下限。第二个值是内存压力模式开始对缓冲区使用应用压力的上限。第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)。
  /proc/sys/net/ipv4/tcp_wmem   "4096 16384 131072"   为自动调优定义每个 socket 使用的内存。第一个值是为 socket 的发送缓冲区分配的最少字节数。第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)。
  /proc/sys/net/ipv4/tcp_rmem   "4096 87380 174760"   与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值。
  /proc/sys/net/ipv4/tcp_low_latency   "0"   允许 TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项应该禁用。
  /proc/sys/net/ipv4/tcp_westwood   "0"   启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化;对于 WAN 通信来说应该启用这个选项。
  /proc/sys/net/ipv4/tcp_bic   "1"   为快速长距离网络启用 Binary Increase Congestion;这样可以更好地利用以 GB 速度进行操作的链接;对于 WAN 通信应该启用这个选项。

[[i] 本帖最后由 wheel 于 2006-3-8 18:38 编辑 [/i]]

论坛徽章:
0
2 [报告]
发表于 2006-03-08 18:46 |只看该作者
/etc/export 加上no_acl可以快些

/etc/fstab加
rsize=8192,wsize=8192,timeo=14,intr,tcp
可以加大nfs的联结数对吗?

论坛徽章:
0
3 [报告]
发表于 2006-03-09 10:10 |只看该作者
曾经请教过samuel前辈,说在工程应用上NFS的性能非常糟糕,甚至在主机上开一个tcp服务器传送文件都比NFS方式的共享文件的方式好。他不建议使用这个东西:)

论坛徽章:
0
4 [报告]
发表于 2006-03-09 10:30 |只看该作者
原帖由 wheel 于 2006-3-8 18:46 发表
/etc/export 加上no_acl可以快些

/etc/fstab加
rsize=8192,wsize=8192,timeo=14,intr,tcp
可以加大nfs的联结数对吗?


不行吧? rsize 和 wsize只是设定数据块读写的大小。 timeo只是一个定时器, intr只是对客户端有用, tcp只能指定mount的协商方法。

nfs连接数不知道指的是哪一个,
一个server nfs export目录最多只能有1024个client同时mount,
系统一共支持的nfs export 目录数好像没有限制。

客户端同时mount的nfs 好像只受fd数限制。

论坛徽章:
0
5 [报告]
发表于 2006-03-16 19:19 |只看该作者
rpmbuild --rebuild --target=x86_64 /root/kernel-2.6.9-11.EL.src.rpm
改  RPCNFSDCOUNT=为更大的数
再/etc/sysctl.conf里加
vm.swappiness=99
#vm.swap_token_timeout=33
vm.vfs_cache_pressure=150
net.ipv4.conf.eth0.proxy_arp=0
sunrpc.udp_slot_table_entries=32
#fs.aio-max-size=1048576
#nfs run RPCNFSDCOUNT=99 more
net.core.rmem_default=6488064
net.core.rmem_max=12976128
测了下好了些。。
  1.修改/usr/src/linux/include/linux/posix_types.h
  设置fd_set支持的最大数量
  #define __FD_SETSIZE 1024 ---> 65536
  
  2.修改/usr/src/linux/include/linux/fs.h
  设置最大打开文件数量(TCP连接数量)
  #define INR_OPEN 1024 ---> 65536
  #define NR_FILE 8192 ---> 65536
  #define NR_RESERVED_FILES 10 ---> 128
  
  3.修改/usr/src/linux/include/net/tcp.h
  设置TIMEOUT的时间为1秒
  #define TCP_TIMEWAIT_LEN (60*HZ) 60 ---> 1*HZ
  设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上也是减少重试时间
  #define TCP_SYNACK_RETRIES 5 ---> 3

[ 本帖最后由 wheel 于 2006-3-22 11:53 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP