在Linux下正确获取物理内存大小
在Linux下获取内存大小,一般会使用free命令或者解析/proc/meminfo,但这两个方法都有缺点,就是得到的都是内核可分配的内存总量,这个值一般都会低于实际的物理内存,因为内核、固件等都会占用一些。
想获取真实的物理内存,只能通过查询硬件信息,比如通过dmidecode,可以列出所有已安装的内存,再进行简单过滤和累加,就得到了正确的值。
dmidecode --type memory | grep 'Installed Size' | awk '{sum+=$3} END {print sum}' # 我的测试环境输出结果为8192,单位是MB,与实际相符
其中dmidecode --type memory是查看内存信息,已安装的内存会列在Installed Size中,如:
dmidecode --type memory | grep 'Installed Size' Installed Size: 4096 MB (Double-bank Connection) Installed Size: 4096 MB (Double-bank Connection)
可以看到安装了2条内存,都是4GB的,然后对结果用awk切分并累加,就得到了正确的结果。