2

私は 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であるため、これの正当な理由を見つけることができます

4

1 に答える 1

2

最大shmメモリサイズは利用可能であり/proc/sys/kernel/shmmax、その疑似ファイルに書き込んで変更できます。おそらく、物理 RAM の一部 (半分など) よりも大きくすることはできません。おそらく、一部のカーネル構成がそれを変更する可能性があります。

フラグ付きのmmap syscall で メモリを共有することもできますMAP_SHARED

于 2012-06-12T05:49:10.063 に答える