Linux free命令介绍、buffer和cache的区别、缓存等

0    2282    14

Tags:

👉 本文共约12256个字,系统预计阅读时间或需47分钟。

Linux free命令用于显示内存状态。

free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

free输出示例

Linux 6下:

free的默认显示单位是kb

在linux 6中,我们看到free命令有三行内容:Mem,-/+ buffers/cache,Swap,代表的内容如下:

名称代表的内容
Mem内存的使用情况。total代表总的内存大小, used 代表程序已经使用的内存大小,free代表的是空闲的内存大小, shared 代表的是共享内存,buffers 代表的是 buffers cache缓冲(即将要写入磁盘), cached 代表的是 Page cache缓存(从磁盘读取到内存).
-/+ buffers/cache表示物理内存已用多少,可用多少。used 代表的除去buffers和cached实际程序占用的内存, free代表的是“ total - 第二行used”, 也就是 “第一行free + 第一行buffers + 第一行cached”
Swap交换空间(虚拟内存)的使用情况

示例:

在以上这个系统中,物理内存128g,内存其实真实才用了17G左右,而不是70g。

Linux 7下:

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 分开显示,默认是在一起显示的。

先说明一些基本概念
第一列
Mem 内存的使用信息
Swap 交换空间的使用信息
第一行
total 系统总的可用物理内存大小
used 已被使用的物理内存大小
free 还有多少物理内存可用
shared 被共享使用的物理内存大小
buff/cache 被 buffer 和 cache 使用的物理内存大小
available 还可以被 应用程序 使用的物理内存大小

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中并不是所有的buffer/cache空间都可以被回收。

free命令的选项

在linux环境下,使用man命令、--help命令、info命令可查询free命令的所有选项,以--help为例,如:

Linux free命令介绍、buffer和cache的区别、缓存等

现在对free命令的所有选项分别进行解释:

注意:free命令的选项区分大小写,请认真对照上图中是大写还是小写

  1. free -b:以bytes为单位来显示内存的信息。

Linux free命令介绍、buffer和cache的区别、缓存等

  1. free -k:以kb为单位来显示内存的信息。

    Linux free命令介绍、buffer和cache的区别、缓存等

  2. free -m:以m为单位来显示内存的信息。

    Linux free命令介绍、buffer和cache的区别、缓存等

  3. free -g:以G为单位来显示内存的信息。

    Linux free命令介绍、buffer和cache的区别、缓存等

  4. free -h:以适于人类可读方式显示内存信息。-h与其他命令最大不同是-h选项会在数字后面加上适于人类可读的单位

Linux free命令介绍、buffer和cache的区别、缓存等

  如我们一起看到的,在1,0数字后这里是G(GB)字母。当数字并没有达到GB时,free足够聪明来知道并在每个数字后面跟上合适的单位。后面的M - 数字929告诉我们它有929MB(译注: 原文为929 number tell us its 969 Megabytes,这里应该为输入错误)。

  1. free -l:显示高低内存的利用率。

    Linux free命令介绍、buffer和cache的区别、缓存等

  2. free -t:显示linux的全部内存。

  如果我们需要每列的总计信息,我们可以在 free 命令后面跟上 -t 选项。这会在字底部额外加入一行显示。

Linux free命令介绍、buffer和cache的区别、缓存等

  1. free -s N:表示每隔N秒打印一次内存信息,直到用ctrl+c结束

    Linux free命令介绍、buffer和cache的区别、缓存等

  2. free -c N:表示重复打印内存信息N次

Linux free命令介绍、buffer和cache的区别、缓存等

  1. free -w :wide output

    Linux free命令介绍、buffer和cache的区别、缓存等

  2. free -V :显示版本信息

Linux free命令介绍、buffer和cache的区别、缓存等

free命令的选项是可以组合的,举例如下

free -hs 3: 以人类可读的方式,每隔3s打印一次内存信息,直到ctrl+c结束

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Linux free命令介绍、buffer和cache的区别、缓存等后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部