Ubuntu Server 中实际内存与物理内存不相等的问题

记录

来源 v2ex,提到了一个平时不是很起眼的问题,Ubuntu Server 中系统默认会占用 128M 内存,用于 CVM 内部的 kdump 服务。

科普

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