zoukankan      html  css  js  c++  java
  • AIX网络性能优化简介

    在AIX 中,网络性能的优化可从以下几方面进行:

    网络内存(network memory)的调整

    socket 缓冲区 (socket buffer) 的调整

    网络接口(network interface)参数的调整

    网络适配器 (network adapter) 上发送/接收队列的调整

    名字解析(name resolution) 的查找顺序。

    1.网络内存的调整

    AIX中参数 thewall 的值限定了系统中最多有多少物理内存可被网络缓冲区使用。但在AIX5L中 thewall 的值是无法修改的,是在系统启动时就确定的:

    32-位核心 – thewall 取值为 1/2 物理内存 与 1GB 中的最小值,即最大为1GB。

    64-位核心 – thewall 取值为 1/2 物理内存 与 65GB 中的最小值,即最大为65GB。

    如果 netstat –m  命令结果显示缺少mbuf --- “rewuests for mbufs denied” 的值非0 。

    # netstat -m

    2434 mbufs in use:

    2432 mbuf cluster pages in use

    10336 Kbytes allocated to mbufs

    0 requests for mbufs denied

    0 calls to protocol drain routines

    0 sockets not created because sockthresh was reached

    Kernel malloc statistics:

    ******* CPU 0 *******

    By size  inuse   calls failed delayed free hiwat freed

    32         172   426280     0     0        84  1440    0

    64          84   2418        0     0        44   720    0

    128        103   881463     0     0       313   360   17

    。。。

     使用下述方法之一调整网络内存:

    a.       如果是32位核心,并且内存小于2GB,增大系统内存。

    b.       如果是64位核心,并且内存小于65GB,增大系统内存。

    c.       如果可能,将32位核心改成64位核心,增大系统内存。

    d.       检查socket 的发送/接收缓存区的大小,以确定是否可将其减小。

    e.       是否有mbuf的泄漏现象。

    2. socket 缓冲区 (socket buffer) 的调整

    TCP  Socket 的发送缓冲区(send buffer)是用于暂时存放应用的数据的区域。缓冲区的大小是由 no 参数 tcp_sendspace 来定义的,在用户应用中使用系统调用 setsockopt() 可以覆盖此参数的定义。为了保证使网络的吞吐量的平稳,常规将tcp_sendspace 值设成MTU的 10倍以上 。

    使用 netstat –i 可以查出每一网络接口的MTU 值:

     $ netstat -i

    Name  Mtu   Network     Address            Ipkts      Ierrs    Opkts   Oerrs  Coll

    en0   1500    link#2      0.2.55.4f.4.bf        378329     0     411094    0    0

    en0   1500    9.181.48.64  atstrs              378329     0     411094    0    0

    lo0   16896   link#1                         375205     0   375243      0     0

    lo0   16896   127         loopback           375205     0   375243      0     0

    lo0   16896 :   :1                            375205     0   375243      0     0

    Tcp scoket的接收缓冲区(receive buffer)是用于接收来自于网络上的数据的区域,收到数据包后要给发送方回送确认信息(ACK),同时告诉发送方本地的接收缓冲区中还有多少空间,若没有足够的空间存放新数据,则发送方就暂停发送新数据,直到接收方能再接收为止。接收缓冲区的大小由tcp_recvspace 设定,常规将tcp_recvspace 值设成MTU的 10倍以上 。可根据应用的需要来调整此参数。

    对于socket buffer 还有 udp_sendspace, udp_recvspace 这两个参数,用于UDP协议。由于没有流量控制功能,udp_recvspace 太小会引起数据包的丢失。

    系统中 tcp_sendspace, tcp_recvspace 的缺省值是 16384, udp_sendspace 是 9216, udp_recvspace 是41600。

    注意: 系统中全部scoket 所用的内存不能大于 sb_max 所设定的值。

    查看当前tcp_sendspace 和 tcp_revcspace 的值:

    $ no –o tcp_sendspace

    $ no –o tcp_revcspace

    设置 socket buffer 的值, 直到下次重启:

    $no –o tcp_sendspace=32768

    $no –o tcp_recvspace=32768

    设置 socket buffer 的值, 下次重启仍有效:

    $no –r –o tcp_sendspace=32768

    $no –r –o tcp_recvspace=32768

    3.网络接口(network interface)参数的调整

    在AIX5以前,网络参数的定义在整个系统范围内有效,所有网络接口使用统一的定义,无法为特定的网络接口单独设定值。

    在AIX5 中 TCP socket 的 发送/接收缓冲区的尺寸、rfc1323(调整窗口值)、tcp_mssdflt(调整 maximum transmission size)和tcp_nodelay (是否立刻转发数据包)网络参数可在网络接口上进行定义。 在接口上定义的值覆盖系统上统一定义的值,应用中setsockopt() 系统调用设定的值也能覆盖系统的统一定义。

    在为特定的网络接口调整参数时,要将 isno (Interface Specific Network Options) 设为1:

    #no –r –o isno=1

    a. 若只是临时修改,可用 ifconfig 命令:

    #ifconfig en0 ip_lable tcp_recvspace 65536 tcp_sendspace 65536.

    b. 使用chdev 命令来修改参数,如:

    #chdev –l en0 –a tcp_recvspace=65536 –a tcp_space=65536 

    会修改ODM中的内容,所以在重新开机后参数也会生效。

    4.网络适配器 (network adapter) 发送/接收队列的调整

    如果适配器的传输队列不够大的话,在netstat –v 的结果中 “S/W Transmit Queue Overflow” 的值为非0。

    如果接收资源不足,则“Packets Dropped” 或 “Out of Rcv Buffers” 或 “ No Resource Errors” 就会出现非0的值。

    使用 chdev 或 smit 来调整相应队列的值,如:

    # chdev -l entx -a tx_que_sz=16384 

    5. 名字解析(name resolution) 的查找顺序

    在AIX中缺省名字解析的顺序是DNS àNIS à/etc/hosts。

    可以使用 /etc/netsvc.conf文件或 NSORDER环境变量来改变缺省的名字解析顺序,以提高名字解析的速度,若/etc/netsvc.conf文件和 NSORDER环境变量同时存在,则NSORDER起作用。

    使用变量 NSORDER 改变解析顺序,用如下方法定义:

    export NSORDER= local,nis,bind

    使用/etc/netsvc.conf 文件,在文件中加入:

    hosts=local,bind,nis

  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/51linux/p/4042341.html
Copyright © 2011-2022 走看看