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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM