2013-10-14 2 views
0

shmget()을 사용하여 22MB의 공유 메모리를 할당하려고 시도하지만, errno ENOMEM으로 종료됩니다. 상단 출력의 첫 번째 줄은 마치 충분한 메모리가있는 것처럼 보입니다.shmget는 12GB가없는 ENOMEM을 반환합니다.

Processes: 114 total, 4 running, 110 sleeping, 579 threads 
Load Avg: 0.50, 0.42, 0.35 CPU usage: 0.24% user, 0.60% sys, 99.15% idle 
SharedLibs: 17M resident, 5356K data, 0B linkedit. 
MemRegions: 20375 total, 1361M resident, 59M private, 1176M shared. 
PhysMem: 1487M wired, 1887M active, 576M inactive, 3950M used, 12G free. 
VM: 286G vsize, 1052M framework vsize, 123007(0) pageins, 0(0) pageouts. 

프로그램은 OS X 버전 10.8.5에서 실행됩니다. 어떤 생각이 그 원인일까요?

답변

0

다음 sysctl 변수는 kern.sysv.shmmax, kern.sysv.shmmin, kern.sysv.shmmni, kern.sysv.shmseg, kern.sysv.shmall과 같은 공유 메모리에 영향을줍니다. 여기서 kern.sysv.shmall은 일반적으로 kern.sysv.shmmax를 4096으로 나눈 값으로 설정해야합니다.