kernel.shmall为物理内存除以pagesize;可以用getconf pagesize查看具体数值,一般为4096。该参数是控制共享内存页数。linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小为16G,那么需要共享的内存页数是:16GB/4KB=16777216KB/4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE和SGA_TARGET为12G。
kernel.shmmax为物理内存的一半,是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。shmmax设置应该足够大,能在一个共享内存段下容纳下整个的SGA,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能下降。
kernel.shmmni 是共享内存段的最大数量。默认为4096,一般是够用的。
例如:#vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
让参数生效:sysctl -p