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

一 centos6 free

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

常用参数和含义

-b 指定单位为bytes

-m 指定单位为mb

-k 指定单位为kb

-g 指定单位为gb

-o 显示老版本的输出格式也就是不显示-/+ buffers/cache 这行

-t 显示物理内存和虚拟内存的总和

-s n 每隔n秒显示一次

-c 显示多少次

-V 显示free的版本信息并退出

-l 显示最低和最高的内存数据统计

centos6 free 命令示例

[linuxidc@linuxidc ~]$ cat /etc/RedHat-release

CentOS release 6.5 (Final)

[linuxidc@linuxidc ~]$ free

total used free shared buffers cached

Mem: 8061376 7730380 330996 0 178608 4884772

-/+ buffers/cache: 2667000 5394376

Swap: 0 0 0

[linuxidc@linuxidc ~]$ free -m

total used free shared buffers cached

Mem: 7872 7519 352 0 174 4737

-/+ buffers/cache: 2607 5264

Swap: 0 0 0

[linuxidc@linuxidc ~]$ free -g

total used free shared buffers cached

Mem: 7 7 0 0 0 4

-/+ buffers/cache: 2 5

Swap: 0 0 0

free 值讲解

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

[linuxidc@linuxidc ~]$ free

total used free shared buffers cached

Mem: 8061376(total) 7730380(used1) 330996(free1) 0 178608(buffers1) 4884772(cached1)

-/+ buffers/cache: 2667000(used2) 5394376(free2)

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

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

计算公式

total=used1 + free1 ,总的内存大小= 使用的(used1)+ 空闲的(free1)

used1 = used2(第二行的2667000) + buffers1(178608) + cached1(4884772)

used2 = total - free2

free2 = free1 + buffers1(178608) + cached1(4884772)

二 centos7 free

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

常用的参数

-h 以人性化显示

--si 指定计算倍数为1000.

-b 指定单位为bytes

-m 指定单位为mb

-k 指定单位为kb

-g 指定单位为gb

-t 显示物理内存和虚拟内存的总和

-s n 每隔n秒显示一次

-c 显示多少次

-V 显示free的版本信息并退出

-l 显示最低和最高的内存数据统计

-w 将buff和cacher 分开显示,默认是在一起显示的。

centos7 free 命令示例

[root@localhost ~]# cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

[root@localhost ~]# free -h

total used free shared buff/cache available

Mem: 1.8G 197M 1.3G 9.4M 272M 1.4G

Swap: 2.0G 0B 2.0G

[root@localhost ~]# free -wh

total used free shared buffers cache available

Mem: 1.8G 197M 1.3G 9.4M 2.1M 270M 1.4G

Swap: 2.0G 0B 2.0G

以 free -h 的值为例,

Mem :

total 代表的总的内存 (对应/proc/meminfo 里的MemTotal)

used 代表的是 已经使用的内存

free 是代表空闲的内存(对应/proc/meminfo 里的MemFree)

shared 代表的是共享的内存(对应/proc/meminfo 里的Shmem)

buff/cache 代表的是 buff(对应/proc/meminfo里的Buffers)和cache的内存(对应/proc/meminfo 里的Cached and Slab),

available 代表的是 活跃的内存

(官方文档对于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

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,

available on kernels 3.14, emulated on kernels 2.6.27+, otherwise the same as free)

) available 代表的是一个新的应用程序可以使用内存的估计值,它不等于 free + buff/cache ,,因为在centos 7.2与Ubuntu 16.04以上(包含)的系统使用了新的Linux内核,所以并不是所有的buffer/cache空间都可以被回收。

内核commit链接 :https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?spm=a2c4g.11186623.2.9.5e3113ceBi7J5X&id=34e431b0ae398fc54ea69ff85ec700722c9da773

计算公式

used = total - free - buffers - cache

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

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

sysctl -p /etc/sysctl.conf

重启后不失效。

linux查内存命令6,CentOS 6.8与CentOS 7.5内存查看命令free的差异对比相关推荐

  1. Linux查容器编码,自己动手写docker笔记(4)构造简单实现run命令版本的容器

    原书代码 https://github.com/xianlubird/mydocker.git #code-3.1 Linux Proc Linux 下的/proc 文件系统是由内核提供,它其实不是一 ...

  2. Linux中如何查看命令帮助手册

    Linux中如何查看命令帮助手册 1. 识别命令 1.1 显示命令的类型–type 使用type命令 命令的分类 内置命令 是被shell直接调用的命令或者函数,shell可以直接执行 如pwd,ty ...

  3. linux查进程内存问题,关于linux 查看服务进程内存,cpu,内存占用的一些基础命令...

    首先当自己的程序出现问题时,排除了代码问题后,就要看是否是服务器的问题了 第一个命令    top 会详细展示服务器的cpu 占用 内存以及详细占用 如果觉得看起来不太直观   那么直接采用  hto ...

  4. linux+查内存数量,检查 Linux 中内存使用情况的 8 条命令 | Linux 中国

    作为一名 Linux 管理员,知道如何获取当前可用的和已经使用的资源情况,比如内存.CPU.磁盘等,是相当重要的. -- Magesh Maruthamuthu Linux 并不像 Windows,你 ...

  5. linux查服务器总内存大小,怎么查看linux中的可用内存大小

    怎么查看linux中的可用内存大小 发布时间:2020-06-16 13:28:33 来源:亿速云 阅读:620 作者:鸽子 作为Linux用户,特别是管理员,我们需要检查系统使用多少内存资源以及有多 ...

  6. linux查cpu和内存配置,Linux查看CPU和内存的配置信息

    CPU配置信息: frank@ubuntu:~/test/python$ cat /proc/cpuinfo processor : #系统中逻辑处理核的编号 vendor_id : GenuineI ...

  7. linux查进程ps和top,Linux中几个进程查看命令总结 ps, top, htop, vmstat

    ps命令可以以快照的方式,一次显示所有或部分系统进程. ps a :当前和中断相关进程[root@centos ~]# ps a PID TTY      STAT   TIME COMMAND 23 ...

  8. linux查看设备内存代码,Linux下内存查看命令(示例代码)

    在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们 ...

  9. linux 查当前pid_杀死僵尸进程,你需要这些神奇高效的Linux命令行

    Linux 高手,其实都是玩儿命令行很熟练的人. 命令行的学习捷径 Linux 命令有许多强大的功能:从简单的磁盘操作.文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行. 在 Lin ...

  10. linux查进程内存问题,关于linux下内存问题排查的工具

    对最近linux下排查java内存相关问题的命令做个小的总结 linux系列 top top -p PID pid为12415进程的资源消耗情况.这里是以进程为单位. top -Hp PID 这里是以 ...

最新文章

  1. 跨平台PHP调试器设计及使用方法——探索和设计
  2. Bypass WAF:Burp插件绕过一些WAF设备
  3. java青蛙青蛙跳井_速解青蛙跳井问题
  4. 三甲医院需要部署哪些网络安全设备
  5. 重复数据删除将成标配功能
  6. 今日arXiv精选 | 21篇EMNLP 2021最新论文
  7. 报表怎样实现滚动的公告效果?
  8. Leetcode 219. 存在重复元素 II
  9. 第一章计算机基础知识作业答案,计算机基础作业题1答案
  10. Hadoop安装教程 Linux版
  11. unity编译器安装路径_1.安装Unity
  12. Android集成极光聊天SDK
  13. android 登陆微信一直卡在验证身份,微信登录需要滑块验证的时候,闪退返回至登录界面...
  14. WebStorm+Vue-cli 配置alias 点击跳转无效问题
  15. Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版
  16. 建站百科|手把手教你如何申请网站空间
  17. Web Frameworks for Python
  18. Maven 如何打包 Spring Boot 项目
  19. 回首过去自学编程之路,开启新的篇章
  20. 关于一些快速获取游戏素材的方式

热门文章

  1. ATHK弄出个有道词典加入生词本的快接键...
  2. 软件开发工程师--经验之谈
  3. domino代理通过Request_Content域接收extjs以post方式提交的数据
  4. ECharts三维图表
  5. canvas的基础使用。
  6. R in action读书笔记(3)-第六章:基本图形
  7. 从一条select语句看Oracle数据库查询工作原理
  8. C#3.0新特性 和 Javascript
  9. Visual Stdio 注册表相关路径
  10. 大数据之-Hadoop3.x_MapReduce_切片源码分析---大数据之hadoop3.x工作笔记0104