64位Linux机器中最大可能的共享内存大小

我有64位Linux机器(Intel Xeon L5410 @ 2.33GHz)。

**meminfo:** MemTotal: 24672736 kB MemFree: 145372 kB Buffers: 181896 kB Cached: 22004648 kB SwapCached: 195072 kB Active: 9761028 kB Inactive: 13964532 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 24672736 kB LowFree: 145372 kB SwapTotal: 17414452 kB SwapFree: 15618852 kB Dirty: 2125148 kB Writeback: 0 kB AnonPages: 1358396 kB Mapped: 1069632 kB Slab: 699464 kB CommitLimit: 29750820 kB Committed_AS: 9236252 kB PageTables: 38620 kB VmallocTotal: 34359738367 kB VmallocUsed: 17272 kB VmallocChunk: 34359718843 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 Hugepagesize: 2048 kB **Also the shm details are:** shmall 2097152 shmmax 3294967296 shmmni 4096 

我正在尝试创build2 GB以上的共享内存,shmget成功,但后来发生核心转储,出现无法访问内存的错误。 虽然2GB以下的共享内存工作得很好。 我能够find任何有效的理由,因为我的shmmax值是3GB左右

Solutions Collecting From Web of "64位Linux机器中最大可能的共享内存大小"

通过/proc/sys/kernel/shmmax可以获得最大的内存大小,你可以写入这个伪文件来改变它。 它可能不能超过某些部分(如一半)的物理RAM。 也许一些内核配置可以改变这一点。

您还可以使用MAP_SHARED标志与mmap syscall共享内存。