欢迎光临
我们一直在努力

【体系结构】Oracle的kernel.shmmax和kernel.shmall设置


1. 



kernel.shmmax






是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的

SGA ,

设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及


ServerProcess


创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低


(


在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响


)


,但是其他时候都不会有影响。


 




官方建议值:



32




linux


系统:可取最大值为


4GB





4294967296bytes





-1byte


,即


4294967295


。建议值为多于内存的一半,所以如果是


32


为系统,一般可取值为


4294967295





32


位系统对


SGA


大小有限制,所以


SGA


肯定可以包含在单个共享内存段中。


64




linux


系统:可取的最大值为物理内存值


-1byte


,建议值为多于物理内存的一半,一般取值大于


SGA_MAX_SIZE


即可,可以取物理内存


-1byte






 



内存为

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


 


2. 



kernel.shmall






该参数控制可以使用的共享内存的总页数。

Linux

共享内存页大小为


4KB,


共享内存段的大小都是共享内存页大小的整数倍。



一个共享内存段的最大大小是

16G

,那么需要共享内存页数是


16GB/4KB==4194304


(页),



当内存为

12G

时,


kernel.shmall = 3145728



当内存为

16G

时,


kernel.shmall = 4194304



当内次为

32G

时,


kernel.shmall = 8388608



当内存为

64G

时,


kernel.shmall = 16777216



当内存为

128G

时,


kernel.shmall = 33554432


 


 


 


 


—————— end ——————-

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。