【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大

时间:2023-03-09 15:28:20
【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大

Linux x86 and x86-64 系统SHMMAX最大值



参考原始:

Maximum SHMMAX values for Linux x86 and x86-64 (文件 ID 567506.1)



目标:



问题1:32-bit (x86) Linux system 系统中的最大值?

问题2:64-bit (x86-64) Linux system系统中的最大值?



解决方式:

答案1:

Oracle Global Customer Support 官方推荐 SHMMAX 的最大值是小于4GB,或者4294967295



一个共享内存段的最大大小受可用的用户寻址空间限制。

在32bit系统中,是4GB。

答案2:

Oracle Global Customer Support 官方推荐 SHMMAX 的最大值是 物理内存的1/2

一个共享内存端的最大大小受可用的用户寻址空间限制。在64bit系统中,这个理论值是2的64次方。因此,SHMMAX的理论限制值是物理内存的大小。可是,实际地使用所有内存作为SHMMAX可能导致一个潜在的状况:没有内存能够用来干别的事情。

因此,对 SHMMAX 更为理想的 物理限制 是 物理内存-2GB



在oracle db环境中,这个物理限制 依旧导致没有足够的内存用来做其它须要的功能(functions)。

因此。一般 "Oracle maximum" for SHMMAX  是 物理内存的1/2。

非常多Oracle 客户a higher fraction, at their discretion



偶尔,客户会错误的觉得:依据推荐设置 SHMMAX 是用来限制所有的sga,这是不对的。

依据推荐设置SHMMAX仅仅会导致一些共享内存段被用在total sga上。关于细节信息,请看mos文章:

Document 15566.1, "SGA, SHMMAX, Semaphores and Shared Memory Explained"

在内存配置上,相同须要考虑的还有 内核參数kernel.shmall,所有的共享存储器参数的大小是该系统的主要能源的使用,同page单位

看mos文章:

Document 301830.1 Upon startup of Linux database get ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device