Ubuntu Server 中实际内存与物理内存不相等的问题
记录
来源 v2ex,提到了一个平时不是很起眼的问题,Ubuntu Server 中系统默认会占用 128M 内存,用于 CVM 内部的 kdump 服务。
科普
- 查看 CVM 所拥有的物理内存
通过 dmidecode 命令查看底层硬件信息 - 为什么 free 看到的内存会少了?
free 里面看到的是伙伴系统管理的内存,这部分内存不包括 OS 内核一些基本数据结构的消耗以及内核的一些预留。内核预留内存,可以在 CVM 启动后,通过命令查看 dmesg | grep -i memory - Ubuntu 这里预留的 128M 内存,用于了 CVM 内部的 kdump 服务
- 什么是 kdump 服务呢?为什么开启 kdump 呢?
当 OS 内核出现了故障(如内核 bug 导致),kdump 服务会协助生产一个 dump 文件,类似于应用程序的 coredump。开启 kdump 的目的,是为了在内核出现 bug 时,提供足够信息,便于客户后续内核 bug 问题定位分析 - 如何关闭 kdump
- 修改 grub 启动参数,关闭 kdump 预留。在 /etc/default/grub.d/kexec-tools.cfg 和 /etc/default/grub 配置文件中,将“ crashkernel=XXX ”这样的配置参数去掉,然后执行 update-grub2 更新 grub 引导文件
- 关闭 kdump 服务 systemctl disable kdump-tools
- 重启 CVM,可以看到内存变多了
- 为什么同样是 1G 的内存,centos 看起来要多一些呢?
在 1G 内存下,centos 系统默认没有开启 kdump,没有预留到内存,所以会多一些,而 Ubuntu 默认开启了 kdump