首頁 > 軟體

RedHat Linux 系統相關調優引數註解

2020-06-16 17:18:23

一、前言

優化策略沒有一招仙的,所以需要根據實際情況進行調整

下面主要針對RedHat 進行效能優化介紹

  • Linux Proc檔案系統,通過對Proc檔案系統進行調整,達到效能優化的目的
  • Linux效能診斷工具,介紹如何使用Linux自帶的診斷工具進行效能診斷

核心的 shmall 和 shmmax 引數:

SHMMAX= 設定了最大的記憶體segment的大小 ------>這個設定的比SGA_MAX_SIZE大比較好。

SHMMIN= 最小的記憶體segment的大小 

SHMMNI= 整個系統的記憶體segment的總個數 

SHMSEG= 每個進程可以使用的記憶體segment的最大個數

設定信號燈( semphore )的引數:

SEMMSL= 每個semphore set裡面的semphore數量 -----> 這個設定大於你的process的個數吧,否則你不得不分多個semphore set,好像有process+n之說。

SEMMNI= 整個系統的semphore set總數

SEMMNS=整個系統的semphore總數

shmall 是全部允許使用的共用記憶體大小,shmmax 是單個段允許使用的大小。這兩個可以設定為記憶體的 90%。例如 16G 記憶體,16*1024*1024*1024*90% = 15461882265,shmall 的大小為 15461882265/4k(getconf PAGESIZE可得到) = 3774873。

修改 /etc/sysctl.conf

 kernel.shmmax=15461882265

 kernel.shmall=3774873

 kernel.msgmax=65535

 kernel.msgmnb=65535

 執行 sudo sysctl -p

可以使用 ipcs -l 看結果。ipcs -u 可以看到實際使用的情況

二、/proc/sys/kernel/優化

1)、/proc/sys/kernel/ctrl-alt-del

該檔案有一個二進位制值,該值控制系統在接收到ctrl+alt+delete按鍵組合時如何反應。這兩個值分別是:

零(0)值,表示捕獲ctrl+alt+delete,並將其送至 init 程式;這將允許系統可以安全地關閉和重新啟動,就好象輸入shutdown命令一樣。

壹(1)值,表示不捕獲ctrl+alt+delete,將執行非正常的關閉,就好象直接關閉電源一樣。

預設設定:0

建議設定:1,防止意外按下ctrl+alt+delete導致系統非正常重新啟動。

2)、/proc/sys/kernel/msgmax

該檔案指定了從一個進程傳送到另一個進程的訊息的最大長度(bytes)。進程間的訊息傳遞是在核心的記憶體中進行的,不會交換到磁碟上,所以如果增加該值,則將增加作業系統所使用的記憶體數量。

預設設定:8192

3)、/proc/sys/kernel/msgmnb

該檔案指定一個訊息佇列的最大長度(bytes)。

預設設定:16384

4)、/proc/sys/kernel/msgmni

該檔案指定訊息佇列標識的最大數目,即系統範圍內最大多少個訊息佇列。

預設設定:16

5)、/proc/sys/kernel/panic

該檔案表示如果發生“核心嚴重錯誤(kernel panic)”,則核心在重新引導之前等待的時間(以秒為單位)。

零(0)秒,表示在發生核心嚴重錯誤時將禁止自動重新引導。

預設設定:0

6)、/proc/sys/kernel/shmall

該檔案表示在任何給定時刻,系統上可以使用的共用記憶體的總量(bytes)。

預設設定:2097152

7)、/proc/sys/kernel/shmmax

該檔案表示核心所允許的最大共用記憶體段的大小(bytes)。

預設設定:33554432

建議設定:實體記憶體 * 50%

實際可用最大共用記憶體段大小=shmmax * 98%,其中大約2%用於共用記憶體結構。

可以通過設定shmmax,然後執行ipcs -l來驗證。

8)、/proc/sys/kernel/shmmni

該檔案表示用於整個系統的共用記憶體段的最大數目(個)。

預設設定:4096

9)、/proc/sys/kernel/threads-max

該檔案表示核心所能使用的執行緒的最大數目。

預設設定:2048

10)、/proc/sys/kernel/sem

該檔案用於控制核心號誌,號誌是System VIPC用於進程間通訊的方法。

建議設定:250 32000 100 128

第一列,表示每個信號集中的最大號誌數目。

第二列,表示系統範圍內的最大號誌總數目。

第三列,表示每個信號發生時的最大系統運算元目。

第四列,表示系統範圍內的最大信號集總數目。

所以,(第一列)*(第四列)=(第二列)

以上設定,可以通過執行ipcs -l來驗證。

三、/proc/sys/vm/優化

1)、/proc/sys/vm/block_dump

該檔案表示是否開啟Block Debug模式,用於記錄所有的讀寫及Dirty Block寫回動作。

預設設定:0,禁用Block Debug模式

2)、/proc/sys/vm/dirty_background_ratio

該檔案表示臟資料到達系統整體記憶體的百分比,此時觸發pdflush進程把臟資料寫回磁碟。

預設設定:10

3)、/proc/sys/vm/dirty_expire_centisecs

該檔案表示如果臟資料在記憶體中駐留時間超過該值,pdflush進程在下一次將把這些資料寫回磁碟。

預設設定:3000(1/100秒)

4)、/proc/sys/vm/dirty_ratio

該檔案表示如果進程產生的臟資料到達系統整體記憶體的百分比,此時進程自行把臟資料寫回磁碟。

預設設定:40

5)、/proc/sys/vm/dirty_writeback_centisecs

該檔案表示pdflush進程週期性間隔多久把臟資料寫回磁碟。

預設設定:500(1/100秒)

6)、/proc/sys/vm/vfs_cache_pressure

該檔案表示核心回收用於directory和inode cache記憶體的傾向;預設值100表示核心將根據pagecache和swapcache,把directory和inode cache保持在一個合理的百分比;降低該值低於100,將導致核心傾向於保留directory和inode cache;增加該值超過100,將導致核心傾向於回收directory和inode cache。

預設設定:100

7)、/proc/sys/vm/min_free_kbytes

該檔案表示強制Linux VM最低保留多少空閒記憶體(Kbytes)。

預設設定:724(512M實體記憶體)

8)、/proc/sys/vm/nr_pdflush_threads

該檔案表示當前正在執行的pdflush進程數量,在I/O負載高的情況下,核心會自動增加更多的pdflush進程。

預設設定:2(唯讀)

9)、/proc/sys/vm/overcommit_memory

該檔案指定了核心針對記憶體分配的策略,其值可以是0、1、2。

0, 表示核心將檢查是否有足夠的可用記憶體供應用進程使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用進程。

1, 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。

2, 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體(參照overcommit_ratio)。

預設設定:0

10)、/proc/sys/vm/overcommit_ratio

該檔案表示,如果overcommit_memory=2,可以過載記憶體的百分比,通過以下公式來計算系統整體可用記憶體。系統可分配記憶體=交換空間+實體記憶體*overcommit_ratio/100

預設設定:50(%)

11)、/proc/sys/vm/page-cluster

該檔案表示在寫一次到swap區的時候寫入的頁面數量,0表示1頁,1表示2頁,2表示4頁。

預設設定:3(2的3次方,8頁)

12)、/proc/sys/vm/swapiness

該檔案表示系統進行交換行為的程度,數值(0-100)越高,越可能發生磁碟交換。

預設設定:60

13)、legacy_va_layout

該檔案表示是否使用最新的32位元共用記憶體mmap()系統呼叫,Linux支援的共用記憶體分配方式包括mmap(),Posix,System VIPC。

0, 使用最新32位元mmap()系統呼叫。

1, 使用2.4核心提供的系統呼叫。

預設設定:0

14)、nr_hugepages

該檔案表示系統保留的hugetlb頁數。

15)、hugetlb_shm_group

該檔案表示允許使用hugetlb頁建立System VIPC共用記憶體段的系統組ID。

四、/proc/sys/fs/優化

1)、/proc/sys/fs/file-max

該檔案指定了可以分配的檔案控制代碼的最大數目。如果使用者得到的錯誤訊息宣告由於開啟

檔案數已經達到了最大值,從而他們不能開啟更多檔案,則可能需要增加該值。

預設設定:4096

建議設定:65536

2)、/proc/sys/fs/file-nr

該檔案與 file-max 相關,它有三個值:

已分配檔案控制代碼的數目

已使用檔案控制代碼的數目

檔案控制代碼的最大數目

該檔案是唯讀的,僅用於顯示資訊。

五、/proc/sys/net/core/優化

該目錄下的組態檔主要用來控制核心和網路層之間的互動行為。

1)、/proc/sys/net/core/message_burst

寫新的警告訊息所需的時間(以 1/10 秒為單位);在這個時間內系統接收到的其它警告訊息會被丟棄。這用於防止某些企圖用訊息“淹沒”系統的人所使用的拒絕服務(Denial of Service)攻擊。

預設設定:50(5秒)

2)、/proc/sys/net/core/message_cost

該檔案表示寫每個警告訊息相關的成本值。該值越大,越有可能忽略警告訊息。

預設設定:5

3)、/proc/sys/net/core/netdev_max_backlog

該檔案表示在每個網路介面接收封包的速率比核心處理這些包的速率快時,允許送到佇列的封包的最大數目。

預設設定:300

4)、/proc/sys/net/core/optmem_max

該檔案表示每個通訊端所允許的最大緩衝區的大小。

預設設定:10240

5)、/proc/sys/net/core/rmem_default

該檔案指定了接收通訊端緩衝區大小的預設值(以位元組為單位)。

預設設定:110592

6)、/proc/sys/net/core/rmem_max

該檔案指定了接收通訊端緩衝區大小的最大值(以位元組為單位)。

預設設定:131071

7)、/proc/sys/net/core/wmem_default

該檔案指定了傳送通訊端緩衝區大小的預設值(以位元組為單位)。

預設設定:110592

8)、/proc/sys/net/core/wmem_max

該檔案指定了傳送通訊端緩衝區大小的最大值(以位元組為單位)。

預設設定:131071

六、/proc/sys/net/ipv4/優化

1) 、/proc/sys/net/ipv4/ip_forward

該檔案表示是否開啟IP轉發。

0,禁止

1,轉發

預設設定:0

2)、/proc/sys/net/ipv4/ip_default_ttl

該檔案表示一個資料包的生存週期(Time To Live),即最多經過多少路由器。

預設設定:64

??加該值會降低系統效能

3)、/proc/sys/net/ipv4/ip_no_pmtu_disc

該檔案表示在全域性範圍內關閉路徑MTU探測功能。

預設設定:0

4)、/proc/sys/net/ipv4/route/min_pmtu

該檔案表示最小路徑MTU的大小。

預設設定:552

5)、/proc/sys/net/ipv4/route/mtu_expires

該檔案表示PMTU資訊快取多長時間(秒)。

預設設定:600(秒)

6)、/proc/sys/net/ipv4/route/min_adv_mss

該檔案表示最小的MSS(Maximum Segment Size)大小,取決於第一跳的路由器MTU。

預設設定:256(bytes)

6.1 IP Fragmentation

1)、/proc/sys/net/ipv4/ipfrag_low_thresh/proc/sys/net/ipv4/ipfrag_low_thresh

兩個檔案分別表示用於重組IP分段的記憶體分配最低值和最高值,一旦達到最高記憶體分配值,其它分段將被丟棄,直到達到最低記憶體分配值。

預設設定:196608(ipfrag_low_thresh)

262144(ipfrag_high_thresh)

2)、/proc/sys/net/ipv4/ipfrag_time

該檔案表示一個IP分段在記憶體中保留多少秒。

預設設定:30(秒)

6.2 INET Peer Storage

1)、/proc/sys/net/ipv4/inet_peer_threshold

INET對端記憶體某個合適值,當超過該閥值條目將被丟棄。該閥值同樣決定生存時間以及廢物收集通過的時間間隔。條目越多,存活期越低,GC 間隔越短。

預設設定:65664

2)、/proc/sys/net/ipv4/inet_peer_minttl

條目的最低存活期。在重組端必須要有足夠的碎片(fragment)存活期。這個最低存活期必須保證緩衝池容積是否少於 inet_peer_threshold。該值以 jiffies為

單位測量。

預設設定:120

3)、/proc/sys/net/ipv4/inet_peer_maxttl

條目的最大存活期。在此期限到達之後,如果緩衝池沒有耗盡壓力的話(例如:緩衝池中的條目數目非常少),不使用的條目將會超時。該值以 jiffies為單位測量。

預設設定:600

4)、/proc/sys/net/ipv4/inet_peer_gc_mintime

廢物收集(GC)通過的最短間隔。這個間隔會影響到緩衝池中記憶體的高壓力。 該值以 jiffies為單位測量

預設設定:10

5)、/proc/sys/net/ipv4/inet_peer_gc_maxtime

廢物收集(GC)通過的最大間隔,這個間隔會影響到緩衝池中記憶體的低壓力。 該值

以 jiffies為單位測量。

預設設定:120

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2017-03/142169p2.htm


IT145.com E-mail:sddin#qq.com