我有 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
我尝试创建 2 GB 以上的共享内存,shmget 成功,但后来发生核心转储,并出现无法访问内存的错误。 而低于 2GB 的共享内存则完全可以正常工作。 我能够找到任何有效的原因,因为我的 shmmax 值约为 3GB
最佳答案
最大shm
内存大小可通过/proc/sys/kernel/shmmax
获得,您可以写入该伪文件来更改它。它可能无法高于物理 RAM 的某些部分(例如一半)。也许某些内核配置可以改变这一点。
您还可以与 mmap 共享内存带有 MAP_SHARED
标志的系统调用。
关于linux - 64 位 Linux 机器中可能的最大共享内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10991111/