在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切分并累加,就得到了正确的结果。

posted on 2023-08-02 19:20  BoyTNT  阅读(243)  评论(0编辑  收藏  举报

导航