1. 程式人生 > >Ubuntu Server 中實際內存與物理內存不相等的問題

Ubuntu Server 中實際內存與物理內存不相等的問題

tools xxx mem www. red 夥伴系統 exec def 基本

記錄

來源 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

Ubuntu Server 中實際內存與物理內存不相等的問題