如何计算系统可用的共享内存的大小

如何计算系统可用的共享内存的大小

根据RHEL文档,系统上可用的共享内存总量等于shmall*PAGE_SIZE

我完成RHEL 6的安装后,内核参数的值shmall默认为4294967296,这意味着系统范围内可以使用的共享内存页面总数为4294967296,页面大小为4096 B。所以,基于根据公式,共享内存的大小为

4294967296*4096/1024/1024/1024/1024 = 16 TB

...这远远大于操作系统的 RAM (8 GB) 大小。操作系统如何找到 16 TB 的共享内存来分配?

那么, 的大小是否/dev/shm等于共享内存的大小呢?如果不是,我怎样才能得到共享内存的实际大小?

答案1

你的计算是正确的。 shmall 可以设置为高于可用虚拟内存。如果您尝试使用所有这些,那么它不会因为 shmall 超出而失败,而是因为其他原因。

顺便说一句,还有一些命令可以查找这些 IPC 限制:

ipcs -l
lsipc  # util-linux>=2.27

请注意,默认情况下,Linux 上的虚拟内存也是无限的,大于 RAM+swap。看

https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work

OOM 杀手如何决定首先杀死哪个进程?

另一方面你可以限制每个进程使用的虚拟内存ulimt -v都不会影响内核/proc/sys/kernel/shmall

相关内容