所有的TCP/IP調優參數都位於/proc/sys/net/目錄. 例如, 下面是最重要的一些調優參數, 後面是它們的意義:
1. /proc/sys/net/core/rmem_max — 最大的TCP資料接收緩衝
2. /proc/sys/net/core/wmem_max — 最大的TCP資料發送緩衝
3. /proc/sys/net/ipv4/tcp_timestamps — 時間戳在(請參考RFC 1323)TCP的包頭增加12個位元組
4. /proc/sys/net/ipv4/tcp_sack — 有選擇的應答
5. /proc/sys/net/ipv4/tcp_window_scaling — 支援更大的TCP視窗. 如果TCP視窗最大超過65535(64K), 必須設定該數值為1
6. rmem_default — 預設的接收視窗大小
7. rmem_max — 接收視窗的最大大小
8. wmem_default — 預設的傳送視窗大小
9. wmem_max — 發送視窗的最大大小
/proc目錄下的所有內容都是暫時性的, 所以重啟動系統後任何修改都會遺失.
建議在系統啟動時自動修改TCP/IP參數:
把下面程式碼增加到/etc/rc.local檔, 然後儲存檔案, 系統重新引導的時候會自動修改下面的TCP/IP參數:
echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
TCP/IP參數都是自解釋的, TCP視窗大小設定為256960, 禁止TCP的時間戳(取消在每個資料包的頭中增加12位元組), 支援更大的TCP視窗和TCP有選擇的回應。
上面數值的設定是根據互連網連接和最大頻寬/延遲率來決定.
註: 上面實例中的數值可以實際應用, 但它只包含了一部分參數.
另外一個方法: 使用/etc/sysctl.conf 在系統啟動時將參數配置成您設定的值:
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
-------------------------------------------------- --------------
/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/ss/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/net/ipv4
所有IPv4 和IPv6 的參數都被記錄在核心原始碼文件中。請參閱檔案/usr/src/linux/Documentation/networking/ip-sysctl.txt。
/proc/sys/net/ipv6
同IPv4。
/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。