8.09.2008

Mac sysctl.cong 網路參數調整

在您Mac的系統上開啟終端機,請先確認/etc/rc這個檔案裡有個關於sysctl.conf的關鍵script,

這個檔案有可能不是單純sysctl.conf這個檔名,我的系統就叫sysctl-macosxserver.conf,

所以如果您在以下是使用/etc/sysctl.conf來編輯參數的話,要先確定這個檔案喔。


之前我曾經提過Rwin的話題,因為之前我的iBook曾經無聊被我玩掛了,所以這次重新做了一次設定,把這次調整的一些注意事項記下來:


在Mobile01曾經有人提到將 net.inet.tcp.delayed_ack=0,預設值為3,

不過我電腦老了,安裝的軟體也多了,為了讓他有正常一些的效能,我將其設為1,

這個值主要意思是:tcp在交握時會傳送一個ack值來取得應答,而這個值代表著應答的延遲時間

數值越高,應答等待時間也就越長,在網路情況良好的時候,請降低這個值,如果網路情況有點差,這個值大一點反而好,請注意。

所以我設定為:net.inet.tcp.delayed_ack=1


再來就是 kern.ipc.maxsockbuf=262144,這是預設

這個值代表著系統所能開啟socket的最大數量,這個我保持預設,原因是因為我發現這個值設定太大,反而會因為硬體效能的限制導致系統效能低落。


預設:

net.inet.tcp.recvspace=32768

net.inet.tcp.sendspace=32768

改為:

net.inet.tcp.recvspace=128480

net.inet.tcp.sendspace=32768

這兩個值是個關鍵,recvspace代表著接收的緩衝區大小,sendspace代表傳送的

講白話一點,一個是下載,一個是上傳,understand?

有一點要注意這兩個值相加不可大於maxsockbuff,也就是上一項,不然會造成無限迴圈導致開關機不正常,這點也是mobile01的JK.Chang所發現的,

而且這兩個值是有固定的優化數值的喔,多設少設都會影響速度,一般的設定數值為:

513920 (MSS x 44 * scale factor of 8)

256960 (MSS x 44 * scale factor of 4)

128480 (MSS x 44 * scale factor of 2)

64240 (MSS x 44)


會最後兩個值是設定UDP跟RAW的,

net.inet.udp.recvspace=42080 

net.inet.raw.recvspace=8192


上面講了一堆設定參數,現在要來講該怎麼實做了,

首先在你的finder上開啟工具程式,再開啟終端機,

會看到類似命令提示字元的視窗。

第一種設定方法,請key入下列紅字指令,

cd /etc  這是讓你移到/底下的etc目錄

sudo touch sysctl.conf  這是讓你建立一個sysctl.conf的檔案,因為我有下sudo,

所以你會看到按下enter後會有個password:的訊息,請輸入你電腦的密碼,他不會有星號

所以不用害怕,打完按enter就對了。

sudo vi sysctl.conf  這是讓你用vi編輯sysctl.conf這個檔案,

進去後請先按i,進入編輯模式,結束編輯模式按esc就可以了,

在結束編輯模式的情況下:打上

:q! 不存檔強制離開

:q  不存檔離開

:wq 存檔離開

:w  存檔



在編輯模式下,輸入的內容為

net.inet.tcp.delayed_ack=1

net.inet.tcp.sendspace=32768

net.inet.tcp.recvspace=128480

net.inet.udp.recvspace=42080

net.inet.raw.recvspace=8192

這樣以後你要變更數值,只要改這個檔案就行囉,如果要恢復預設,刪掉這個檔案,重開機後參數生效。



或是你可以採用第二種設定方法:在終端機下輸入這五行,每一行都要按enter喔,參數馬上生效。

sudo sysctl -w net.inet.tcp.delayed_ack=1

sudo sysctl -w net.inet.tcp.sendspace=32768

sudo sysctl -w net.inet.tcp.recvspace=128480

sudo sysctl -w net.inet.udp.recvspace=42080

sudo sysctl -w net.inet.raw.recvspace=8192


設定完之後我到speedguide測試的參數為:


« SpeedGuide.net TCP Analyzer Results »  Tested on: 08.08.2008 13:35  

IP address: 203.204.xxx.xx    

TCP options string: 020405b4010303010101080a2e32942d0000000004020000  

MSS: 1460  

MTU: 1500  

TCP Window: 128872 (NOT multiple of MSS)  

RWIN Scaling: 1  

Unscaled RWIN : 64436 

Reccomended RWINs: 64240, 128480, 256960, 513920  

BDP limit (200ms): 5155kbps (644KBytes/s) BDP limit (500ms): 2062kbps (258KBytes/s)  

MTU Discovery: ON  TTL: 45  Timestamps: ON  SACKs: ON  

IP ToS: 00000000 (0) 

以上環境為Mac OS X Tiger 10.4.11

在此也說明了我之前的一些觀念錯誤,RWIN值可不是大就好,針對電腦效能與網路環境來做調整,才是最好的。

沒有留言:

張貼留言