linux中如何查询哪块物理内存没有被使用

在Linux中,要查询物理内存的使用情况,可以通过以下方法进行分析:


1. 查看总体内存使用情况

使用 freecat /proc/meminfo 查看系统内存的总体使用情况:

1
free -h

输出示例:

1
2
3
              total        used        free      shared  buff/cache   available
Mem: 7.7G 2.1G 3.2G 256M 2.4G 5.1G
Swap: 2.0G 0B 2.0G
  • free:表示未被使用的物理内存。
  • available:表示系统可用的内存(包括可回收的缓存)。

2. 分析伙伴系统(Buddy System)的空闲内存块

Linux内核通过伙伴系统管理物理内存页的分配。查看 /proc/buddyinfo 文件了解内存碎片情况:

1
cat /proc/buddyinfo

输出示例:

1
2
Node 0, zone      DMA      1      1      0      0      2      1      1      0      1      1      3 
Node 0, zone DMA32 1045 2021 1892 1564 1221 875 437 178 68 32 330
  • 每一列表示对应阶数(order)的空闲连续页块数量(如第0阶为1页,第1阶为2页,依此类推)。
  • 数值越大,表示该阶数的空闲连续内存块越多。

3. 查看物理内存地址分配

通过 /proc/iomem 文件查看物理内存区域的分配情况:

1
cat /proc/iomem

输出示例:

1
2
3
4
5
6
00000000-00000fff : Reserved
00001000-0009fbff : System RAM
0009fc00-0009ffff : Reserved
000a0000-000bffff : PCI Bus 0000:00
...
1b000000-1bffffff : System RAM
  • System RAM 标记的区域是内核管理的可用物理内存。
  • Reserved 或其他标记的区域可能被硬件或BIOS保留,未被系统使用。

4. 检查硬件安装的内存信息

使用 dmidecode 查看物理内存模块的详细信息:

1
sudo dmidecode -t memory

输出包括每个内存插槽的大小、类型和状态,可用于确认是否存在未被识别的内存。


5. 使用高级工具

  • **vmstat**:查看内存、分页、块IO等统计。
    1
    vmstat -s
  • **slabtop**:实时显示内核slab缓存使用情况。
    1
    slabtop

总结

  • 空闲内存总量:通过 free/proc/meminfo 查看。
  • 内存碎片情况:通过 /proc/buddyinfo 分析。
  • 物理地址分配:通过 /proc/iomem 确认哪些区域为可用内存。
  • 硬件信息:通过 dmidecode 验证物理内存模块状态。

如果需要具体的物理地址范围未被使用,需结合内核日志或调试工具(如 crash)进行深入分析,但这通常适用于内核开发场景。普通用户关注 free/proc/meminfo 即可了解内存使用概况。