【体系结构】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 -------------------
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。