Linux 下kernel.shmmax 的設定問題

tolywang發表於2006-05-19

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


下面是Oracle 文件上的解釋,


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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章