• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            AIX網絡性能優化簡介

            Posted on 2009-02-03 13:48 Prayer 閱讀(398) 評論(0)  編輯 收藏 引用 所屬分類: SOCKET
            在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 。
            [b]# netstat -m[/b]
            [b]2434 mbufs in use:[/b]
            [b]2432 mbuf cluster pages in use[/b]
            [b]10336 Kbytes allocated to mbufs[/b]
            [b]0 requests for mbufs denied[/b]
            [b]0 calls to protocol drain routines[/b]
            [b]0 sockets not created because sockthresh was reached[/b]
            [b]Kernel malloc statistics:[/b]
            [b]******* CPU 0 *******[/b]
            [b]By size  inuse   calls failed delayed free hiwat freed[/b]
            [b]32         172   426280     0     0        84  1440    0[/b]
            [b]64          84   2418        0     0        44   720    0[/b]
            [b]128        103   881463     0     0       313   360   17[/b]
            。。。
            使用下述方法之一調整網絡內存:
            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[b] [/b]
            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
            亚洲国产成人久久综合一| 久久久www免费人成精品| 精品久久久久久中文字幕| 青青草原综合久久| 国产A级毛片久久久精品毛片| 久久精品一本到99热免费| 国产综合成人久久大片91| 亚洲午夜福利精品久久| 国内精品伊人久久久久av一坑| 久久久WWW成人| 国产精品美女久久久久| 久久综合视频网| 久久电影网| 精品久久人妻av中文字幕| 亚洲午夜无码AV毛片久久| 亚洲国产精品久久| 亚洲AV无码久久精品成人| 久久久久久亚洲精品不卡| 久久精品国产99国产精偷 | 久久天天躁夜夜躁狠狠| 99久久国产综合精品网成人影院| 人人妻久久人人澡人人爽人人精品| 麻豆精品久久久一区二区| 精品无码久久久久久尤物| 久久午夜免费视频| 久久99热这里只频精品6| 久久久久亚洲精品男人的天堂| 久久精品国产精品青草| aaa级精品久久久国产片| 亚洲精品无码久久一线| 色偷偷久久一区二区三区| 一级做a爰片久久毛片毛片| 久久久久香蕉视频| 亚洲欧美成人久久综合中文网| 久久人人爽人爽人人爽av| 四虎国产精品成人免费久久| 久久亚洲精品国产亚洲老地址 | 国产激情久久久久影院小草| 超级碰久久免费公开视频| 国内精品欧美久久精品| 合区精品久久久中文字幕一区|