• <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
            亚洲精品国产成人99久久| 久久久久亚洲av无码专区| 久久99久久无码毛片一区二区| 色综合久久综精品| yy6080久久| 99re久久精品国产首页2020| 久久精品三级视频| 久久综合噜噜激激的五月天| 久久青青草原精品国产软件| 欧美喷潮久久久XXXXx| 日本精品久久久久中文字幕| 久久久无码精品亚洲日韩蜜臀浪潮| 久久久精品人妻一区二区三区四| 久久99精品国产麻豆婷婷| 成人久久免费网站| 精品欧美一区二区三区久久久| 亚洲精品无码久久久久久| 久久精品无码一区二区日韩AV| 亚洲精品高清国产一线久久 | 久久天天躁狠狠躁夜夜2020老熟妇| 囯产精品久久久久久久久蜜桃 | 99国产精品久久久久久久成人热| 狠狠色丁香婷婷综合久久来来去| 久久亚洲美女精品国产精品| 日韩电影久久久被窝网| 99久久国产综合精品成人影院 | 久久亚洲AV成人无码电影| 久久精品桃花综合| 久久激情五月丁香伊人| 国产免费福利体检区久久| 国产午夜久久影院| 国产精品久久久久国产A级| 国产激情久久久久久熟女老人| 婷婷久久综合| 久久青青草视频| 思思久久99热只有频精品66| 思思久久99热免费精品6| 午夜精品久久久久久影视777 | 久久久亚洲欧洲日产国码二区| 97视频久久久| 久久亚洲精品成人av无码网站|