【Linux】kernel.shmmax和shmall設定

恩強Boy發表於2020-08-12

1.  kernel.shmmax

是核心引數中最重要的引數之一,用於定義單個共享記憶體段的最大值。設定應該足夠大,能在一個共享記憶體段下容納下整個的SGA , 設定的過低可能會導致需要建立多個共享記憶體段,這樣可能導致系統效能的下降。至於導致系統下降的主要原因為在例項啟動以及 ServerProcess 建立的時候,多個小的共享記憶體段可能會導致當時輕微的系統效能的降低 ( 在啟動的時候需要去建立多個虛擬地址段,在程式建立的時候要讓程式對多個段進行“識別”,會有一些影響 ) ,但是其他時候都不會有影響。

官方建議值:

32 linux 系統:可取最大值為 4GB 4294967296bytes -1byte ,即 4294967295 。建議值為多於記憶體的一半,所以如果是 32 為系統,一般可取值為 4294967295 32 位系統對 SGA 大小有限制,所以 SGA 肯定可以包含在單個共享記憶體段中。

64 linux 系統:可取的最大值為實體記憶體值 -1byte ,建議值為多於實體記憶體的一半,一般取值大於 SGA_MAX_SIZE 即可,可以取實體記憶體 -1byte

 

記憶體為8G 時, 該值為 8 *1024*1024*1024-1 = 8589934591

記憶體為12G 時,該值為 12*1024*1024*1024-1 = 12884901887

記憶體為16G 時,該值為 16*1024*1024*1024-1 = 17179869183

記憶體為32G 時,該值為 32*1024*1024*1024-1 = 34359738367

記憶體為64G 時,該值為 64*1024*1024*1024-1 = 68719476735

記憶體為128G 時,該值為 128*1024*1024*1024-1 = 137438953471

記憶體為 256 G 時,該值為 256 *1024*1024*1024-1 =   274877906943

2.  kernel.shmall

該引數控制可以使用的共享記憶體的總頁數。Linux 共享記憶體頁大小為 4KB, 共享記憶體段的大小都是共享記憶體頁大小的整數倍。

一個共享記憶體段的最大大小是16G ,那麼需要共享記憶體頁數是 16GB/4KB==4194304 (頁),

 

當記憶體為 8G 時, kernel.shmall = 2097152

當記憶體為12G 時, kernel.shmall = 3145728

當記憶體為16G 時, kernel.shmall = 4194304

當內次為32G 時, kernel.shmall = 8388608

當記憶體為64G 時, kernel.shmall = 16777216

當記憶體為128G 時, kernel.shmall = 33554432

當記憶體為 256 G 時, kernel.shmall = 67108864


 

---- end ----


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2711002/,如需轉載,請註明出處,否則將追究法律責任。

相關文章