Linux物理内存隔离排查方法
Linux中如何确认物理内存是否被隔离
要确认Linux系统中物理内存是否被隔离,可以通过以下步骤进行排查:
1. 检查内核启动参数
查看是否使用memmap
参数保留内存:
1 | cat /proc/cmdline |
若有类似memmap=2G$512M
的配置,表示从512M处保留2G内存。
2. 分析系统启动日志(dmesg)
查找内存保留或隔离的提示:
1 | dmesg | grep -iE "memory|reserved|isolated" |
输出可能包含保留内存的范围,如:
1 | [ 0.000000] BIOS-e820: [mem 0x00000000a0000000-0x00000000bfffffff] reserved |
3. 查看物理内存映射(/proc/iomem)
检查是否有内存被标记为保留:
1 | cat /proc/iomem | grep -i reserved |
输出示例:
1 | a0000000-bfffffff : Reserved |
4. 对比物理内存总量
确认系统识别内存与实际是否一致:
1 | # 查看实际物理内存总量(需root) |
若MemTotal
小于实际内存,可能存在保留或隔离。
5. 检查NUMA配置
查看NUMA节点的内存分布:
1 | numactl --hardware |
若某些节点内存显著减少或标记为no available
,可能涉及隔离。
6. 排查大页内存(HugePages)
确认是否分配了大页内存:
1 | grep HugePages_Total /proc/meminfo |
大页内存会从可用内存中预先划出。
7. 检查内核保留内存
查看内核启动时保留的内存区域:
1 | dmesg | grep -i "kernel command line" |
8. 验证CGroup内存限制(若使用)
检查CGroup是否限制内存使用:
1 | # 查看CGroup内存限制(示例路径) |
若限制值小于物理内存,可能涉及逻辑隔离。
总结
- 物理内存隔离通常通过内核参数(如
memmap
)或硬件保留实现,需检查/proc/iomem
和dmesg
。 - 逻辑隔离可能通过CGroup或NUMA策略实现,需检查对应配置。
- 若发现内存差异,结合
dmidecode
和/proc/meminfo
进一步验证。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Helloeuler!