Linux TCP/IP調優參數 /proc/sys/net/目錄


所有的TCP/IP調優參數都位於/proc/sys/net/目錄。
例如, 下面是最重要的一些調優參數,后面是它們的含義:


/proc/sys/net/core/rmem_default

"110592"

定義默認的接收窗口大小;對於更大的 BDP 來說,這個大小也應該更大。

/proc/sys/net/core/rmem_max

"110592"

定義接收窗口的最大大小;對於更大的 BDP 來說,這個大小也應該更大。

/proc/sys/net/core/wmem_default

"110592"

定義默認的發送窗口大小;對於更大的 BDP 來說,這個大小也應該更大。

/proc/sys/net/core/wmem_max

"110592"

定義發送窗口的最大大小;對於更大的 BDP 來說,這個大小也應該更大。

/proc/sys/net/ipv4/tcp_window_scaling

"1"

啟用 RFC 1323 定義的  window scaling;要支持超過 64KB 的窗口,必須啟用該值。

/proc/sys/net/ipv4/tcp_sack

"1"

啟用有選擇的應答(Selective Acknowledgment),這可以通過有選擇地應答亂序接收到的報文來提高性能(這樣可以讓發送者只發送丟失的報文段);(對於廣域網通信來說)這個選項應該啟用,但是這會增加對 CPU 的占用。

/proc/sys/net/ipv4/tcp_fack

"1"

啟用轉發應答(Forward Acknowledgment),這可以進行有選擇應答(SACK)從而減少擁塞情況的發生;這個選項也應該啟用。

/proc/sys/net/ipv4/tcp_timestamps

"1"

以一種比重發超時更精確的方法(請參閱 RFC 1323)來啟用對 RTT 的計算;為了實現更好的性能應該啟用這個選項。

/proc/sys/net/ipv4/tcp_mem

"24576 32768 49152"

確定 TCP 棧應該如何反映內存使用;每個值的單位都是內存頁(通常是 4KB)。第一個值是內存使用的下限。第二個值是內存壓力模式開始對緩沖區使用應用壓力的上限。第三個值是內存上限。在這個層次上可以將報文丟棄,從而減少對內存的使用。對於較大的 BDP 可以增大這些值(但是要記住,其單位是內存頁,而不是字節)。

/proc/sys/net/ipv4/tcp_wmem

"4096 16384 131072"

為自動調優定義每個 socket 使用的內存。第一個值是為 socket 的發送緩沖區分配的最少字節數。第二個值是默認值(該值會被  wmem_default 覆蓋),緩沖區在系統負載不重的情況下可以增長到這個值。第三個值是發送緩沖區空間的最大字節數(該值會被 wmem_max 覆蓋)。

/proc/sys/net/ipv4/tcp_rmem

"4096 87380 174760"

與 tcp_wmem 類似,不過它表示的是為自動調優所使用的接收緩沖區的值。

/proc/sys/net/ipv4/tcp_low_latency

"0"

允許 TCP/IP 棧適應在高吞吐量情況下低延時的情況;這個選項應該禁用。

/proc/sys/net/ipv4/tcp_westwood

"0"

啟用發送者端的擁塞控制算法,它可以維護對吞吐量的評估,並試圖對帶寬的整體利用情況進行優化;對於 WAN 通信來說應該啟用這個選項。

/proc/sys/net/ipv4/tcp_bic

"1"

為快速長距離網絡啟用 Binary Increase Congestion;這樣可以更好地利用以 GB 速度進行操作的鏈接;對於 WAN 通信應該啟用這個選項。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/proc/sys/net/ipv4/icmp_destunreach_rate 、icmp_echoreply_rate、 icmp_paramprob_rate、icmp_timeexeed_rate
#設置發送和回應的最大icmp包的速率,最好不要為0;
#icmp_echo_ignore_all和icmp_echo_ignore_broadcasts
#設置內核不應答icmp echo包,或指定的廣播,值為0是允許回應,值為1是禁止;
  
/proc/sys/net/ipv4/ip_default_ttl
#設置IP包的缺省生存時間(TTL),增加它的值能減少系統開銷;
  
/proc/sys/net/ipv4/ip_forward
#設置接口是否可以轉發包,缺省為0,設置為1時允許網絡進行包轉發;
  
/proc/sys/net/ipv4/ip_local_port_range
#當本地需要端口時指定TCP或UDP端口范圍。第一數為低端口,第二個數為高端口;
  
/proc/sys/net/ipv4/tcp_syn_retries
#提供限制在建立連接時重新發送回應的SYN包的次數;
  
/proc/sys/net/ipv4/tcp_retries1
#設置回應連入重送的次數,缺省為3;
  
/proc/sys/net/ipv4/tcp_retries2
#設置允許重送的TCP包的次數,缺省為15。
  
/proc/sys/fs/super-max
#該文件指定超級塊處理程序的最大數目。掛裝的任何文件系統需要使用超級塊,所以如果掛裝了大量文件系統,則可能會用盡超級塊處理程序。
#缺省設置:256
  
/proc/sys/fs/super-nr
#該文件顯示當前已分配超級塊的數目。該文件是只讀的,僅用於顯示信息。
  
/proc/sys/kernel
/proc/sys/kernel/acct
#該文件有三個可配置值,根據包含日志的文件系統上可用空間的數量(以百分比表示),這些值控制何時開始進行進程記帳:
#如果可用空間低於這個百分比值,則停止進程記帳
#如果可用空間高於這個百分比值,則開始進程記帳
#檢查上面兩個值的頻率(以秒為單位)
#要更改這個文件的某個值,應該回送用空格分隔開的一串數字。
#缺省設置:2 4 30
#如果包含日志的文件系統上只有少於 2% 的可用空間,則這些值會使記帳停止,如果有 4% 或更多可用空間,則再次啟動記帳。每 30 秒做一次檢查。
  
/proc/sys/kernel/ctrl-alt-del
#該文件有一個二進制值,該值控制系統在接收到 ctrl+alt+delete 按鍵組合時如何反應。這兩個值表示:
#零(0)值表示捕獲 ctrl+alt+delete,並將其送至 init 程序。這將允許系統可以完美地關閉和重啟,就好象您輸入 shutdown 命令一樣。
#壹(1)值表示不捕獲 ctrl+alt+delete,將執行非干凈的關閉,就好象直接關閉電源一樣。
#缺省設置:0
  
/proc/sys/kernel/domainname
#該文件允許您配置網絡域名。它沒有缺省值,也許已經設置了域名,也許沒有設置。
  
/proc/sys/kernel/hostname
#該文件允許您配置網絡主機名。它沒有缺省值,也許已經設置了主機名,也許沒有設置。
  
/proc/sys/kernel/msgmax
#該文件指定了從一個進程發送到另一個進程的消息的最大長度。進程間的消息傳遞是在內核的內存中進行,不會交換到磁盤上,所以如果增加該值,則將增加操作系統所使用的內存數量。
#缺省設置:8192
  
/proc/sys/kernel/msgmnb
#該文件指定在一個消息隊列中最大的字節數。
#缺省設置:16384
  
/proc/sys/kernel/msgmni
#該文件指定消息隊列標識的最大數目。
#缺省設置:16
  
/proc/sys/kernel/panic
#該文件表示如果發生“內核嚴重錯誤(kernel panic)”,則內核在重新引導之前等待的時間(以秒為單位)。零(0)秒設置在發生內核嚴重錯誤時將禁止重新引導。
#缺省設置:0
  
/proc/sys/kernel/printk
#該文件有四個數字值,它們根據日志記錄消息的重要性,定義將其發送到何處。關於不同日志級別的更多信息,請閱讀 syslog(2) 聯機幫助頁。該文件的四個值為:
#控制台日志級別:優先級高於該值的消息將被打印至控制台
#缺省的消息日志級別:將用該優先級來打印沒有優先級的消息
#最低的控制台日志級別:控制台日志級別可被設置的最小值(最高優先級)
#缺省的控制台日志級別:控制台日志級別的缺省值
#缺省設置:6 4 1 7
  
/proc/sys/kernel/shmall
#該文件是在任何給定時刻系統上可以使用的共享內存的總量(以字節為單位)。
#缺省設置:2097152
  
/proc/sys/kernel/shmax
#該文件指定內核所允許的最大共享內存段的大小(以字節為單位)。
#缺省設置:33554432
  
/proc/sys/kernel/shmmni
#該文件表示用於整個系統共享內存段的最大數目。
#缺省設置:4096
  
/proc/sys/kernel/sysrq
#如果該文件指定的值為非零,則激活 System Request Key。
#缺省設置:0
  
/proc/sys/kernel/threads-max
#該文件指定內核所能使用的線程的最大數目。
#缺省設置:2048
  
/proc/sys/net
/proc/sys/net/core/message_burst
#寫新的警告消息所需的時間(以 1/10 秒為單位);在這個時間內所接收到的其它警告消息會被丟棄。這用於防止某些企圖用消息“淹沒”您系統的人所使用的拒絕服務(Denial of Service)攻擊。
#缺省設置:50(5 秒)
  
/proc/sys/net/core/message_cost
#該文件存有與每個警告消息相關的成本值。該值越大,越有可能忽略警告消息。
#缺省設置:5
  
/proc/sys/net/core/netdev_max_backlog
#該文件指定了,在接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
#缺省設置:300
  
/proc/sys/net/core/optmem_max
#該文件指定了每個套接字所允許的最大緩沖區的大小。
  
/proc/sys/net/core/rmem_default
#該文件指定了接收套接字緩沖區大小的缺省值(以字節為單位)。
  
/proc/sys/net/core/rmem_max
#該文件指定了接收套接字緩沖區大小的最大值(以字節為單位)。
  
/proc/sys/net/core/wmem_default
#該文件指定了發送套接字緩沖區大小的缺省值(以字節為單位)。
  
/proc/sys/net/core/wmem_max
#該文件指定了發送套接字緩沖區大小的最大值(以字節為單位)。
  
/proc/sys/vm
/proc/sys/vm/buffermem
#該文件控制用於緩沖區內存的整個系統內存的數量(以百分比表示)。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
#用於緩沖區的內存的最低百分比
#如果發生所剩系統內存不多,而且系統內存正在減少這種情況,系統將試圖維護緩沖區內存的數量。
#用於緩沖區的內存的最高百分比
#缺省設置:2 10 60
  
/proc/sys/vm/freepages
#該文件控制系統如何應對各種級別的可用內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
#如果系統中可用頁面的數目達到了最低限制,則只允許內核分配一些內存。
#如果系統中可用頁面的數目低於這一限制,則內核將以較積極的方式啟動交換,以釋放內存,從而維持系統性能。
#內核將試圖保持這個數量的系統內存可用。低於這個值將啟動內核交換。
#缺省設置:512 768 1024
  
/proc/sys/vm/kswapd
#該文件控制允許內核如何交換內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值:
#內核試圖一次釋放的最大頁面數目。如果想增加內存交換過程中的帶寬,則需要增加該值。
#內核在每次交換中試圖釋放頁面的最少次數。
#內核在一次交換中所寫頁面的數目。這對系統性能影響最大。這個值越大,交換的數據越多,花在磁盤尋道上的時間越少。然而,這個值太大會因“淹沒”請求隊列而反過來影響系統性能。
#缺省設置:512 32 8
  
/proc/sys/vm/pagecache
#該文件與 /proc/sys/vm/buffermem 的工作內容一樣,但它是針對文件的內存映射和一般高速緩存。
#使內核設置具有持久性
#這里提供了一個方便的實用程序,用於更改 /proc/sys 目錄下的任何內核參數。它使您可以更改運行中的內核(類似於上面用到的 echo 和重定向方法),但它還有一個在系統引導時執行的配置文件。這使您可以更改運行中的內核,並將這些更改添加到配置文件,以便於在系統重新引導之后,這些更改仍然生效。
  
#該實用程序稱為 sysctl,在 sysctl(8) 的聯機幫助頁中,對這個實用程序進行了完整的文檔說明。
#sysctl 的配置文件是 /etc/sysctl.conf,可以編輯該文件,並在 sysctl.conf(8) 下記錄了該文件。
#sysctl 將 /proc/sys 下的文件視為可以更改的單個變量。
#所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 為例,它表示系統中所允許的文件句柄的最大數目,這個文件被表示成 fs.file-max。
#這個示例揭示了 sysctl 表示法中的一些奇妙事情。由於 sysctl 只能更改 /proc/sys 目錄下的變量,並且人們始終認為變量是在這個目錄下,因此省略了變量名的那一部分(/proc/sys)。另一個要說明的更改是,將目錄分隔符(正斜杠 /)換成了英文中的句號(點 .)。
#將 /proc/sys 中的文件轉換成 sysctl 中的變量有兩個簡單的規則:
#去掉前面部分 /proc/sys。
#將文件名中的正斜杠變為點。
#這兩條規則使您能將 /proc/sys 中的任一文件名轉換成 sysctl 中的任一變量名。一般文件到變量的轉換為:
/proc/sys/dir/file --> dir . file
dir1.dir2. file --> /proc/sys/dir1/dir2/file
#可以使用命令 sysctl -a 查看所有可以更改的變量和其當前設置。
#用 sysctl 還可以更改變量,它所做的工作與上面所用的 echo 方法完全一樣。其表示法為:
#sysctl -w dir.file="value"
#還是用 file-max 作為示例,使用下面兩種方法中的一種將該值更改為 16384。





免責聲明!

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



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