AIX系統--共享內存

AIX系統共享內存最大值限制:

* 256M bytes before AIX 4.3.1
* 2G bytes for AIX 4.3.1 through AIX 5.1
* 64G bytes for 64-bit applications for AIX 5.1 and later
* Minimum shared-memory segment size is 1 byte.
* Maximum number of shared memory IDs is 4096 for operating system releases before AIX 4.3.2, 131072 for releases AIX

 

出現共享內存分配失敗時,首先考慮是否有足夠空閒空間。

AIX的共享內存從paging space中分配,物理內存小於2G時,該值是物理內存1.5倍,否則該值與物理內存相等,一般不小於2Gpaging space是分佈在不同物理磁盤上的。

執行命令topas查看paging space

執行命令smitty chpssmitty mkps分別可以修改、創建paging space

 

其次,考慮進程是否加載超過11段的共享內存。

對於64位進程,同一進程可連接最多268435456個共享內存段;

對於32位進程,同一進程可連接最多11個共享內存段,除非使用擴展的shmat

AIX4.1以後版本將內存分段管理,且要求一段共享內存必須映射內存段的起始位置,即每個共享內存地址必須是2^18整數倍。每個進程可以使用16256M的內存段,其中11段可用做共享內存,即默認情況進程最多隻能使用11段共享內存,如果進程擴展了數據段空間,共享內存將不足11段。

增加環境變量:export EXTSHM=ON

這樣共享內存地址不受256M限制,即一段共享內存可以使用一個普通地址,只要空間足夠可以加載很多段共享內存。

修改系統限制/etc/security/limits,修改nofiles=-1    nofiles_hard=-1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章