虚拟机内存显示差异说明
问题描述
虚拟机分配了 2GB 内存,但执行 free -h 命令显示只有 1.8GB。
原因分析
这是因为 Linux 系统启动时,内核会预留一部分内存用于自身运行和硬件操作。这部分预留内存不会出现在 free -h 显示的总量中。
内核预留内存的用途
| 项目 | 说明 |
|---|---|
| 内核代码和数据 | 内核镜像、模块、静态数据结构 |
| 页表 | 用于虚拟内存映射 |
| DMA 区域 | 用于老式硬件的直接内存访问 |
| 其他内核保留 | 启动时的内存分配器预留 |
数值计算
2GB = 2048 MB
显示 1.8GB ≈ 1843 MB
差异约 200 MB (约 10%)
这个 10% 左右的预留比例是完全正常的。
验证方法
查看真实物理内存总量
使用 dmidecode 命令:
sudo dmidecode -t memory | grep Size
查看内核日志
dmesg | grep -i memory
总结
这是 Linux 内核的正常行为,不是问题。你分配的 2GB 物理内存都在使用,只是约 200MB 被内核预留,不会显示在 free 的统计中。