资讯专栏INFORMATION COLUMN

Linux必知必会-理解内存使用统计命令free

Drinkey / 3147人阅读

摘要:本文详细介绍了系统中的命令的使用方法以及关键参数的含义,这可能是你见过的关于命令最详细的一篇文章了,绝对值得你收藏。命令显示了系统中物理内存交换分区的使用统计信息。

本文详细介绍了Linux系统中的free命令的使用方法以及关键参数的含义,这可能是你见过的关于free命令最详细的一篇文章了,绝对值得你收藏。

free命令显示了Linux系统中物理内存、交换分区的使用统计信息。

指标说明

使用free命令查看内存信息,最重要的是理解当前系统的可用内存并不是直接看 free 字段就可以看出来的,应该参考的是

可用内存 = free + buffers + cached

除去标题行之后,第一行为 物理内存使用统计

标题 说明
total 物理内存总量 total = used + free
used 已使用内存总量,包含应用使用量+buffer+cached
free 空闲内存总量
shared 共享内存总量
buffers 块设备所占用的缓存
cached 普通文件数据所占用的缓存
available 当前可用内存总量(可用于分配给应用的,不包含虚拟内存)

对于available字段,在内核3.14中,它会从/proc/meminfo中的MemAvailable读取,在内核2.6.27+的系统上采用模拟的方式获取,其它情况下直接与free的值相同。

第二行-/+ buffers/cache 中只有两列usedfree有值,它们是物理内存的调整值

标题 说明
used 已使用内存(used)减去buffer和cached之后的内存,也就是应用正在使用的内存总量
free 空闲内存加上buffer和cached之后的内存,也就是真正的可用内存总量

第三行为交换分区使用统计

标题 说明
total 交换分区内存总量
used 正在使用的交换分区内存
free 空闲交换分区内存

在上面这些指标中,我们需要注意的是在下面这些情况下,系统是正常的,不需要担心

空闲内存free接近于0

已使用内存used接近于total

可用内存(free+buffers/cache)占total的 20% 以上

交换分区内存 swap 没有发生改变

下面情况说明内存过低,需要注意!

可用内存(free+buffers/cache)过低,接近于0的时候

交换分区内存占用swap used增加或者有波动

dmesg | grep oom-killer显示有OutOfMemory-killer正在运行

常用参数
选项 说明
-b/k/m/g 以bytes/kilobytes/megabytes/gigabytes为单位显示结果
-h 以人类可读的方式输出统计结果
-t 使用该选项会多显示一行标题为Total的统计信息
-o 禁止显示第二行的缓冲区调整值
-s 每隔多少秒自动刷新结果
-c -s配合使用,控制刷新结果次数
-l 显示高低内存的统计详情
-a 显示可用内存
-V 显示版本号

版本不同,可能部分选项也不相同。

参考示例
# free -t -a -g

本文将会持续修正和更新,最新内容请参考我的 GITHUB 上的 程序猿成长计划 项目,欢迎 Star,更多精彩内容请 follow me。

参考文献

Meaning of the buffers/cache line in the output of free

Linux ate my ram!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10041.html

相关文章

  • MySQL必知必会(1):了解Mysql

    摘要:比如用户表,第一行表示张三第二行表示李四,每一行都包含所有的列也就是字段。也是一种数据库管理系统。但是,活跃的社区都给出了解决办法,也在逐步成长。 本文主要介绍Mysql最基础知识:Mysql基本概念。 1.1 数据库基础 1.1.1 简介 数据库,从字面意思来理解就是一个用来装数据的容器。每天我们都在和数据库打交道,比如你每天打开APP浏览新闻,浏览微博,这些都是间接的使用数据库。 ...

    陈伟 评论0 收藏0
  • MySQL必知必会(1):了解Mysql

    摘要:比如用户表,第一行表示张三第二行表示李四,每一行都包含所有的列也就是字段。也是一种数据库管理系统。但是,活跃的社区都给出了解决办法,也在逐步成长。 本文主要介绍Mysql最基础知识:Mysql基本概念。 1.1 数据库基础 1.1.1 简介 数据库,从字面意思来理解就是一个用来装数据的容器。每天我们都在和数据库打交道,比如你每天打开APP浏览新闻,浏览微博,这些都是间接的使用数据库。 ...

    iOS122 评论0 收藏0
  • Linux网络命令必知必会之瑞士军刀 nc(netcat)

    摘要:,全名叫,它可以用来完成很多的网络功能,譬如端口扫描建立连接,数据传输网络调试等等,因此,它也常被称为网络工具的瑞士军刀。 本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。 nc,全名叫 netcat,它可以用来完成很多的网络功能,譬如端口扫描、建立T...

    jay_tian 评论0 收藏0
  • Linux网络命令必知必会之瑞士军刀 nc(netcat)

    摘要:,全名叫,它可以用来完成很多的网络功能,譬如端口扫描建立连接,数据传输网络调试等等,因此,它也常被称为网络工具的瑞士军刀。 本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。 nc,全名叫 netcat,它可以用来完成很多的网络功能,譬如端口扫描、建立T...

    MiracleWong 评论0 收藏0
  • 前端必知必会HTTP请求系列(二)简单一点的HTTP协议

    摘要:通过请求和响应的交换达成通信协议中已经规定了请求是从客户端发出,最后由服务端响应这个请求并返回。随后的字符串指明了请求访问的资源对象。协议自身不对请求和响应之间的通信状态进行保存,也就是说这个级别。从前发送请求后需等待并受到响应。 showImg(https://segmentfault.com/img/bVbmDsG?w=1024&h=538); http协议用户客户端和服务器之间的...

    xbynet 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<