2011年12月28日 星期三

Linux操作系統參數意義

所有的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/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/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

沒有留言: