2013-10-14 1 views
0

J'essaie d'allouer 22 Mo de mémoire partagée en utilisant shmget(), mais il quitte avec errno ENOMEM. Les premières lignes de la sortie de top semblent avoir suffisamment de mémoire:shmget renvoie ENOMEM avec 12 Go gratuit

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. 

Le programme fonctionne avec OS X version 10.8.5. Une idée de ce que la cause pourrait être?

Répondre

0

Les variables sysctl suivantes affectent la mémoire partagée: kern.sysv.shmmax, kern.sysv.shmmin, kern.sysv.shmmni, kern.sysv.shmseg, kern.sysv.shmall. Ici, kern.sysv.shmall doit généralement être défini sur location kern.sysv.shmmax divisé par 4096.