首页 > 系统相关 >内存去哪儿了——linux free 命令查看内存偏小

内存去哪儿了——linux free 命令查看内存偏小

时间:2023-04-09 18:44:27浏览次数:48  
标签:free grub 内存大小 转储 crashkernel linux 内存

    相信很多公司都在使用云服务器,不知道大家有没有注意到,当你购买了一台云服务器以后,在操作系统里面通过 free 命令查看服务器的内存,容量总是会小于在云厂商控制台上面看到的内存容量。
    为什么会这样呢,那就带着疑问往下看。

现象描述

  1. 购买了2台云服务,控制台上面显示的内存是4GiB(4096MiB)

  2. 登陆到操作系统里面查看内存大小,通过 free -m 命令发现机器的total内存比实际购买的要小。
    10.0.1.229这台是CentOS6.5,系统内内存大小为3832MiB,少264MiB。

10.0.1.228这台是CentOS7.8,系统内内存大小为3789MiB,少307MiB。

问题分析

    看到这里,可能大家会猜想是不是服务器有问题,给我们少分配了一点内存,又或者不会太在意这一点点内存。下面将进行详细分析。
    

1. kdump介绍

    在分析这个问题之前,先来了解下kdump。
    kdump是Linux系统的一种高级故障处理机制,它可以在Linux系统内核崩溃时收集内存转储文件(crashdump),以便在分析转储文件时诊断问题。kdump可以帮助开发人员在内核崩溃时,更快地找到问题所在,以便更快地修复问题。

2. grub配置

    kdump需要预留部分内存供转储内核使用,所以需要配置grub文件。
CentOS6
    配置/etc/grub.conf,在 kernel 后面添加如下:
    kernel crashkernel=auto
CentOS7
    配置/etc/default/grub,GRUB_CMDLINE_LINUX 后面添加如下:
    crashkernel=auto
    其中crashkernel表示预留给转储的内存大小,auto表示系统自动分配,也可以直接写大小,比如预留128M写成crashkernel=128M

3. 问题原因

    此时再来看看自己的服务器配置

    发现是配置了内核转储,所以服务器预留了部分内存。
    故 free -m 看到的内存大小会偏小。

    再看另外一台CentOS7.8的配置

    同样是配置了内核转储,所以 free -m 看到的内存大小也会偏小。

4. 关闭转储

    CentOS6.5 机器在 /etc/grub.conf 删除crashkernel=auto,或者设置crashkernel=0,然后重启机器。
    此时内存为 3961MiB,多出了 129MiB。

    CentOS7.8机器在 /etc/default/grub 删除crashkernel=auto,或者设置crashkernel=0,执行 grub2-mkconfig -o /boot/grub2/grub.cfg,然后重启机器。
    此时内存为 3950MiB,多出了 161MiB

    大家可能会说这时候的内存大小还是比控制台上面的 4096MiB小,这是因为操作系统本身会占用一定内存,但是free命令不会统计。

标签:free,grub,内存大小,转储,crashkernel,linux,内存
From: https://www.cnblogs.com/technology178/p/17300779.html

相关文章

  • 内存整理器 - 开源研究系列文章
    这些天弄了一个内存清理器,主要是清理内存操作,与360、电脑管家等内存清理球是一个道理。关键是放到任务栏里,方便操作。1、       项目目录;目录见下图,对代码进行了划分,比较简单。主处理类在Helper目录里。 2、       函数介绍;下面对......
  • Linux系统目录与路径介绍
    HOME目录和工作目录ls命令的作用:以平埔的形式,展示当前工作目录(默认HOME目录)下的内容(文件或文件夹)Linux系统的命令行终端,在启动的时候,默认会加载当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容。HOME目录:每个Linux操作用户在Linux系统的个人账户目......
  • 如何在Linux环境下配置C/C++环境
    root权限后,使用yum源安装yum-yinstallgccgcc-c++kernel-devel//安装gcc、c++编译器以及内核文件查看GCC版本,看是否安装成功gcc-v出现这个就是安装成功了编译&运行C文件为:gcc-o文件名(无后缀)文件名(有后缀)并回车gcc-otesttest.cC++文件为:g++-o文......
  • Linux文件与文件夹操作
    创建文件夹/文件mkdir通过mkdir命令可以创建新的目录(文件夹)。语法:mkdir[-p][Linux路径]参数必填,表示Linux路径,即要创建的文件夹的路径,相对或绝对路径即可。-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录。如果想要一次性创建多个层级的目录,会报错,因......
  • #yyds干货盘点#Linux中root与sudo的用法与区别(学习笔记)
    Linux下面有两个概念可能大家接触的比较多,一个是sudo命令,还有一个是root账户。Sudo 命令可以以最高权限执行命令,而root账户下所有命令都有最高权限,也就是相当于所有命令都默认加了sudo。那么 sudo和root的区别到底是什么呢,为什么我们建议使用sudo而不是直接使用roo......
  • 【linux】新机配置
    开启网络cd/etc/sysconfig/network-scripts/viifcfg-ens33 ... BOOTPROTO=dhcp ... ONBOOT=yessystemctlrestartnetwork安装网络查看工具yumsearchifconfigyuminstallnet-tools.x86_64开启sshyuminstallopenssh-servervim/etc/ssh/sshd_config ... Po......
  • Linux常用操作命令总结
    一、基础知识1.1Linux系统的文件结构/bin二进制文件,系统常规命令/boot系统启动分区,系统启动时读取的文件/dev设备文件/etc大多数配置文件/home普通用户的家目录/lib32位函数库/lib6464位库/media手动临时挂......
  • 生产环境CDH集群主机加内存导致系统无法启动,重装系统后CDH数据修复的过程
    原因:因为主机扩容内存重启以后发现有七台服务器无法进入系统,重启之前Centos7的启动项被修改过导致无法重启,只能重新安装操作系统,但是HDFS的数据是保存到data盘中.系统OS:CentOSLinuxrelease7.6.1810(Core)CDH版本:6.2.1重新安装操作系统的服务器10.170.12.43db-pro-da......
  • #yyds干货盘点#学习笔记3,Linux 安全强化 SSH 远程连接的方法
    7.使用SSH密钥连接连接到服务器的最安全方法之一是使用SSH密钥。使用SSH密钥时,无需密码即可访问服务器。另外,你可以通过更改sshd_config文件中与密码相关的参数来完全关闭对服务器的密码访问。创建SSH密钥时,有两个密钥:Public和Private。公钥将上传到你要连接的服务器,......
  • C++内存对齐
    0x1什么是内存对齐,为什么需要它?尽管内存是以字节为单位,但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,4字节,8字节,16字节甚至32字节为单位来存取内存,这些存取单位称为内存存取粒度。现在考虑4字节存取粒度的处理器取int类型变量(32位系统),该处理器只能从地址为4......