Linux 下kernel.shmmax 的设置问题

http://www.itpub.net/showthread.php?threadid=551203&pagenumber=


下面是Oracle 文档上的解释, http://download-west.oracle.com/doc...e.htm#sthref107


SHMMAX Available physical memory Defines the maximum allowable size of one shared memory segment.

The SHMMAX setting should be large enough to hold the entire SGA in one shared memory segment. A low setting can cause creation of multiple shared memory segments which may lead to performance degradation.


shmmax 的含义是单个共享内存段的最大尺寸, 设置shmmax=1G,sga分配了1.2G,当启动实例的时候就分配 2 块共享内存给Oracle .
如果物理内存是 2 G, 假设这台DB Server上还有Apache 在运行,那么shmmax 中设置的内存也会被Apache 来使用,那么分配的 2 块共享内存段给Oracle 是否就是 2 * 1G , 还是仅仅满足 SGA需求的 1.2 G就停止分配 , 其他的内存的一部分分配给Oracle PGA 和软件 Apache 来使用 ?

看Oracle Document 说法 , 当需要分配多个 ( creation of multiple shared memory segments ) 共享内存段的时候会导致性能下降 。
如果偶尔分配需要 2 个共享内存段 ,性能应该不会受到太大影响吧 。

----

楼主理解的不对。
oracle 建议 shmmax 大于sga,以让 sga在一个共享内存段中,从而提高性能
shmmax 仅仅表示一个最大值,在实际的生产条件中,如果运行apach等,可能就没有1个内存段达到1G的

----

实际过程中很少见到sga分配到多上段的状况。
有些记不清了,我好像记得这个值如果没你要求分配的值低,并不会分配多个共享内存段,实际上会报错(hp-unix)

这个需要实测一下。性能下降一定是一定会的了,分配多段一定会有内存段中data的交互,应该会降一些性能,但不会太大。

------

应该是满足SGA的1.2G后,分配就停止了,如果有其它应用的话,会重新分配共享内存段给其它应用,

[root@localhost root]# ipcs -sa

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 oracle 640 4194304 12
0x00000000 32769 oracle 640 33554432 12
0x00000000 65538 oracle 640 33554432 12
0x00000000 98307 oracle 640 33554432 12
0x00000000 131076 oracle 640 33554432 12
0x00000000 163845 oracle 640 33554432 12
0x00000000 196614 oracle 640 33554432 12
0x00000000 229383 oracle 640 33554432 12
0x4daf3264 262152 oracle 640 4194304 48

------ Semaphore Arrays --------
key semid owner perms nsems
0x1af040f0 98304 oracle 640 154
0x00000000 425985 nobody 600 1

------ Message Queues --------
key msqid owner perms used-bytes messages

[root@localhost root]# more /proc/sys/kernel/shmm
shmmax shmmni
[root@localhost root]# more /proc/sys/kernel/shmmax
33554432

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84382/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-84382/

你可能感兴趣的:(Linux 下kernel.shmmax 的设置问题)