目录

在实际的工作中,我们经常会用到free这个命令,但是我们对这个命令的实际含义又知道多少,它在centos6 和centos 7 的显示又有什么差异?让我们一起瞧一瞧,看一看。

一 centos6 free

free 命令默认是使用 kb 作为单位的,free -m 则是以Mb作为单位的,free -g 是以gb作为单位的,gb-->mb-->kb 采用的是1024度量单位(而非1000)

常用参数和含义


  1. -b 指定单位为bytes
  2. -m 指定单位为mb
  3. -k 指定单位为kb
  4. -g 指定单位为gb
  5. -o 显示老版本的输出格式也就是不显示-/+ buffers/cache 这行
  6. -t 显示物理内存和虚拟内存的总和
  7. -s n 每隔n秒显示一次
  8. -c 显示多少次
  9. -V 显示free的版本信息并退出
  10. -l 显示最低和最高的内存数据统计

centos6 free 命令示例


  1. [djx@xiaoxiao ~]$ cat /etc/redhat-release
  2. CentOS release 6.5 (Final)
  3. [djx@xiaoxiao ~]$ free
  4. total used free shared buffers cached
  5. Mem: 8061376 7730380 330996 0 178608 4884772
  6. -/+ buffers/cache: 2667000 5394376
  7. Swap: 0 0 0
  8. [djx@xiaoxiao ~]$ free -m
  9. total used free shared buffers cached
  10. Mem: 7872 7519 352 0 174 4737
  11. -/+ buffers/cache: 2607 5264
  12. Swap: 0 0 0
  13. [djx@xiaoxiao ~]$ free -g
  14. total used free shared buffers cached
  15. Mem: 7 7 0 0 0 4
  16. -/+ buffers/cache: 2 5
  17. Swap: 0 0 0

free 值讲解

我们这里以free 的值来进行讲解(显得精确些)


  1. [djx@xiaoxiao ~]$ free
  2. total used free shared buffers cached
  3. Mem: 8061376(total) 7730380(used1) 330996(free1) 0 178608(buffers1) 4884772(cached1)
  4. -/+ buffers/cache: 2667000(used2) 5394376(free2)
  5. Swap: 0 0 0

Mem
  total代表总的内存大小, used 代表程序已经使用的内存大小,free代表的是空闲的内存大小, shared 代表的是共享内存,buffers 代表的是 buffers cache, cached 代表的是 Page cache.

-/+ buffers/cache

used 代表的除去buffers和cached实际程序占用的内存, free代表的是 total - 第二行used, 也就是 第一行free + 第一行buffers + 第一行cached

Swap

这行代表的是交换分区(虚拟内存)。

计算公式


  1. total=used1 + free1 ,总的内存大小= 使用的(used1)+ 空闲的(free1)
  2. used1 = used2(第二行的2667000) + buffers1(178608) + cached1(4884772)
  3. used2 = total - free2
  4. free2 = free1 + buffers1(178608) + cached1(4884772)

二 centos7 free

centos7 的free 命令多了一个 -h 参数,它会自动根据内存的大小,自动转换成合适的单位,默认的计算倍数是 1024 。free 的显示信息来自于/proc/meminfo

常用的参数


  1. -h 以人性化显示
  2. --si 指定计算倍数为1000.
  3. -b 指定单位为bytes
  4. -m 指定单位为mb
  5. -k 指定单位为kb
  6. -g 指定单位为gb
  7. -t 显示物理内存和虚拟内存的总和
  8. -s n 每隔n秒显示一次
  9. -c 显示多少次
  10. -V 显示free的版本信息并退出
  11. -l 显示最低和最高的内存数据统计
  12. -w 将buff和cacher 分开显示,默认是在一起显示的。

centos7 free 命令示例


  1. [root@localhost ~]# cat /etc/redhat-release
  2. CentOS Linux release 7.5.1804 (Core)
  3. [root@localhost ~]# free -h
  4. total used free shared buff/cache available
  5. Mem: 1.8G 197M 1.3G 9.4M 272M 1.4G
  6. Swap: 2.0G 0B 2.0G
  7. [root@localhost ~]# free -wh
  8. total used free shared buffers cache available
  9. Mem: 1.8G 197M 1.3G 9.4M 2.1M 270M 1.4G
  10. Swap: 2.0G 0B 2.0G

以 free -h 的值为例,

Mem :


  1. total 代表的总的内存 (对应/proc/meminfo 里的MemTotal)
  2. used 代表的是 已经使用的内存
  3. free 是代表空闲的内存(对应/proc/meminfo 里的MemFree)
  4. shared 代表的是共享的内存(对应/proc/meminfo 里的Shmem)
  5. buff/cache 代表的是 buff(对应/proc/meminfo里的Buffers)和cache的内存(对应/proc/meminfo 里的Cached and Slab),
  6. available 代表的是 活跃的内存
  7. (官方文档对于available这样写到:Estimation of how much memory is available for starting new applications, without swapping. Unlike the data provided by the cache or free fields, this field
  8. takes into account page cache and also that not all reclaimable memory slabs will be reclaimed due to items being in use (MemAvailable in /proc/meminfo,
  9. available on kernels 3.14, emulated on kernels 2.6.27+, otherwise the same as free)
  10. ) available 代表的是一个新的应用程序可以使用内存的估计值,它不等于 free + buff/cache ,,因为在centos 7.2与Ubuntu 16.04以上(包含)的系统使用了新的Linux内核,所以并不是所有的buffer/cache空间都可以被回收。
  11. 内核commit链接 :https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?spm=a2c4g.11186623.2.9.5e3113ceBi7J5X&id=34e431b0ae398fc54ea69ff85ec700722c9da773

计算公式


  1. used = total - free - buffers - cache
  2. buff/cache = buffers + cache

三 buffers 和cache 的 介绍

buffers

buffers 指的是 Memory used by kernel buffers(磁盘等块设备的缓冲) ,buffers 的字面意思就是缓冲,缓冲存在的目的是为了解决从速度快的地方往速度慢的地方输出东西,缓冲经常用于像 内存写入数据到磁盘,寄存器数据写到内存等等。位于内存buffer中的数据不是即时写入磁盘,而是系统空闲或者buffer达到一定大小统一写到磁盘中,所以断电易失,为了防止数据丢失所以我们最好正常关机或者多执行几次sync命令,让位于buffer上的数据立刻写到磁盘里。

cached

cached 指的是 Memory used by the page cache and slabs(文件系统层级的缓存),cache 的字面意思是缓存,缓存存在的目的是为了解决从速度慢的地方获取数据,比如我们读取硬盘里面的文件,硬盘的传输速度是比内存慢很多的,当我们读取完一个文件后,然后重新打开这个文件,如果有缓存,也就是将上次读取文件后将文件缓存在内存里面,我们会发现,我们打开文件会比第一次打开快很多。

针对于两者直接的关系,我在网上看到一张图,可以很清晰的说明

为什么要清除 buffers 和caches

因为caches是缓存的一些数据,当我们实际的数据内容已经更新了的话,那么当我们需要获取最新的数据时候,我们就需要清除caches里面的内容。
或者当我们的内存的不足(将被耗尽)时,那么系统会自动清除buffers 和caches ,以满足程序对内存的需求。

如何清除 buffers 和caches

下图来自网络

注意

在清除buffers 前,为了防止数据丢失所以我们最好正常关机或者多执行几次sync命令,让位于buffer上的数据立刻写到磁盘里。
方式一 :
表示清除 pagecache 。

echo 1 > /proc/sys/vm/drop_caches

表示清除回收 slab
分配器中的对象(包括目录项缓存和 inode 缓存)。 slab 分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的 pagecache 。

echo 2 > /proc/sys/vm/drop_caches

表示清除 pagecache 和 slab 分配器中的缓存对象。

echo 3 > /proc/sys/vm/drop_caches

重启后会失效

方式二: sysctl 命令更改

sysctl  -w   vm.drop_caches=1

重启后会失效

方式三:
编辑配置文件 sysctl.conf


  1. echo "vm.drop_caches = 1" >> /etc/sysctl.conf
  2. sysctl -p /etc/sysctl.conf

重启后不失效。

[转帖]centos6 free 和 centos 7的free 的差异与对比的更多相关文章

  1. centos6 free 和 centos 7的free 的差异与对比

    目录 一 centos6 free 常用参数和含义 centos6 free 命令示例 free 值讲解 计算公式 二 centos7 free 常用的参数 centos7 free 命令示例 计算公 ...

  2. VMware安装Centos6.4及CentOS的基本设置

    1.vmware安装vmware tools实现与本地磁盘文件夹的共享 2.设置Centos网络 vmware采用nat方式.虚拟机网络使用虚拟网卡(VMware Network Adapter VM ...

  3. [转帖]云服务器使用CentOS、Debian、Ubuntu的哪个版本

    云服务器使用CentOS.Debian.Ubuntu的哪个版本 2018-09-09 12:32:45作者:ywnz稿源:云网牛站 https://ywnz.com/linuxyffq/2986.ht ...

  4. [转帖]U盘安装centos 的方法

    通过U盘或CD/DVD装centos7,出现“dracut-initqueue timeout..."解决办法   1.在用CD/DVD挂载centos7镜像安装系统时,出现“dracut- ...

  5. [转帖]CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装

    CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装 本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuir ...

  6. 【centos6.5】CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境(linux公社)

    准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dp ...

  7. 安装Ubuntu Server18.04(附与CentOS占用体积和Python版本的对比)

    这边只演示一下最新系统的安装过程,设置之类的和以前讲的Kali以及CentOS大同小异:https://www.cnblogs.com/dunitian/p/4822808.html#linux 和C ...

  8. Centos6.4三种更改hostname的方法之间的对比

    首先,利用hostname命令查看一下当前主机的主机名,在终端输入hostname,会发现显示的是完整的主机名称(主机名.域名),其中主机名与进入终端后:登录名@主机名,显示的一致,如下图所示: 其次 ...

  9. [转帖]LCD与LED的区别之背光原理与优缺点对比介绍

    LCD与LED的区别之背光原理与优缺点对比介绍 http://m.elecfans.com/article/620376.html 时下液晶面板与液晶电视技术已经达到炉火纯青的境界,并已经成为大屏幕平 ...

  10. centos6.9出现openvpn:error=certificate signature failure的处理

    原因: 将原来openwrt上用的证书复制到centos 6.9后,客户端都连不上了,查了服务器log,出现是error=certificate signature failure错误. 处理方法见帖 ...

随机推荐

  1. 构建健康游戏环境:DFA算法在敏感词过滤的应用

    现在的游戏有敏感词检测这一点,相信大家也不陌生了,不管是聊天,起名,签名还是简介,只要是能让玩家手动输入的地方,一定少不了敏感词识别,至于识别之后是拒绝修改还是星号替换,这个就各有各的做法了,但是绕不 ...

  2. 还在封装 xxxForm,xxxTable 残害你的同事?试试这个工具

    之前写过一篇文章 我理想中的低代码开发工具的形态,已经吐槽了各种封装 xxxForm,xxxTable 的行为,这里就不啰嗦了.今天再来看看我的工具达到了什么程度. 多图预警... 以管理后台一个列表 ...

  3. GDAL创建JPG或PNG格式图像

    目录 1. 概述 2. 实现 1. 概述 根据GDAL文档,JPG/PNG格式支持读取和批量写入,但不支持实时更新.也就是不支持Create()方法,但是支持CreateCopy()方法.也可能是由于 ...

  4. JVM内存模型,你看这一篇就够了

    摘要:JVM是一种用于计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的. 本文分享自华为云社区<[云驻共创]JVM内存模型的探知之旅>,作者:多米 ...

  5. 火山引擎 DataLeap 通过中国信通院测评,数据管理能力获官方认可!

      近日,火山引擎大数据研发治理套件 DataLeap 通过中国信通院第十五批"可信大数据"测评,在数据管理平台基础能力上获得认证.   "可信大数据"产品能力 ...

  6. 【Django-Vue】手机号是否存在接口 多方式登录接口 腾讯云短信介绍和申请 api与sdk

    目录 昨日回顾 今日内容 0 登录注册功能设计 1 短信登录接口 视图类 2 多方式密码登录接口 视图类 序列化类 路由 3 腾讯云短信介绍和申请 3.1api与sdk 补充 练习 昨日回顾 # 你的 ...

  7. 神经网络优化篇:详解动量梯度下降法(Gradient descent with Momentum)

    动量梯度下降法 还有一种算法叫做Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新的权重. 例如,如果 ...

  8. Leaflet 地图偏移 地图纠偏

    (地图瓦片纠偏最好的方法在这:https://www.cnblogs.com/s0611163/p/15606460.html) 地图区域是一个市,偏移量可以近似认为是固定不变的,通过修改Leafle ...

  9. 【cJSON】轻量级的C语言JSON解析器

    C++ 进阶版:[CJsonObject]C++ JSON 解析器使用教程 1. JSON与cJSON JSON -- 轻量级的数据格式 JSON 全称 JavaScript Object Notat ...

  10. AStyle - Clion中配置代码格式化工具

    安装 (OSX平台) brew install astyle brew list astyle CLion 配置 1.下载插件File Watchers 2.配置插件File Watchers:按照图 ...