free 命令和作用

一:作用
free 显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存

二:语法
通过 --help、–info、–men 可以查看命令相关选项
在这里插入图片描述
注意:free 命令区分大小写
注解如下:

 -b, --bytes         show output in bytes 			以bytes单位展示
 -k, --kilo          show output in kilobytes		以k单位展示
 -m, --mega          show output in megabytes		以m单位展示
 -g, --giga          show output in gigabytes		以g单位展示
     --tera          show output in terabytes
     --peta          show output in petabytes
 -h, --human         show human-readable output 	有好展示
     --si            use powers of 1000 not 1024
 -l, --lohi          show detailed low and high memory statistics 	显示高低内存的利用率
 -t, --total         show total for RAM + swap 		显示linux的全部内存
 -s N, --seconds N   repeat printing every N seconds 表示每隔N秒打印一次内存信息,直到用ctrl+c结束
 -c N, --count N     repeat printing N times, then exit  表示重复打印内存信息N-w, --wide          wide output 		表示buff、cache 分开展示

     --help     display this help and exit
 -V, --version  output version information and exit 	表示free版本

示例:
在这里插入图片描述
总结:free -h -t 是最友好的
[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblogcdnigg.cn/f4cfb727c6m2pGda4ef780d7beca4cdc5e7d.png)asdahttps://img-blog.csdnimg.cn/f4cfb727c6d24ef780d7beca4cdc5e7d.png)]
三:详解
Men行: 代表内存使用情况
Swap行:代表交换区使用情况
Total行:代表总数据
total列:代表总大小
used列:代表使用大小
free列:代表空闲大小
shared列:代表分享大小
buff/cache列:代表buff/cache占用的空间大小
available列:代表被应用程序占用的大小

四:buffer和cache

先说一下题外话:

计算机硬件组成:CPU,存储器,输入输出设备(I/O),其他(主板,电源等)

CPU:运算器,控制器

存储器:内部存储器(ROM/RAM),外部存储器(磁盘等)

I/O:输入设备(鼠标/键盘),输出设备(显示器/打印机)

从性能分析:
-CPU缓存>内存>磁盘>数据库

从性能来看内存是介于CPU和磁盘,在实际中内存是CPU和磁盘的桥梁。buffer和cache是内存的不同的体现,接下来简单分析对buffer和cache的理解

1.buffer:

A buffer is something that has yet to be “written” to disk.翻译过来就是:buffer就是写入到磁盘。buffer是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。buffer将数据缓冲下来,解决速度慢和快的交接问题;速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。例如:从内存中将数据往硬盘中写入,并不是直接写入,而是缓冲到一定大小之后刷入硬盘中。

2.cache:

A cache is something that has been “read” from the disk and stored for later use.翻译过来就是:cache就是从磁盘读取数据然后存起来方便以后使用。cache实现数据的重复使用,速度慢的设备需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输速度给速度快的设备。例如:将硬盘中的数据读取出来放在内存的缓存区中,这样以后再次访问同一个资源,速度会快很多。

3.buffer和cache的特点

共性:

都属于内存,数据都是临时的,一旦关机数据都会丢失。

差异:(先理解前两点,后两点有兴趣可以了解)

A.buffer是要写入数据;cache是已读取数据。

B.buffer数据丢失会影响数据完整性,源数据不受影响;cache数据丢失不会影响数据完整性,但会影响性能。

C.一般来说cache越大,性能越好,超过一定程度,导致命中率太低之后才会越大性能越低。buffer来说,空间越大性能影响不大,够用就行。cache过小,或者没有cache,不影响程序逻辑(高并发cache过小或者丢失导致系统忙死除外)。buffer过小有时候会影响程序逻辑,如导致网络丢包。

D.cache可以做到应用透明,编写应用的可以不用管是否有cache,可以在应用做好之后再上cache。当然开发者显式使用cache也行。buffer需要编写应用的人设计,是程序的一部分。

五.关于buffer和cache测试
buffer前者针对磁盘块的读写,cache针对文件inode的读写

sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

cache释放:

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

echo 3 > /proc/sys/vm/drop_caches

说明,释放前较好sync一下,防止丢数据。

因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度
在这里插入图片描述
在这里插入图片描述
如上图所示,当新写入一个test.txt时,buff/cache这条有83M增加到186,

执行sync和echo 3 > /proc/sys/vm/drop_caches后,减小到71M,主要是echo 3 > /proc/sys/vm/drop_caches起到的作用,说明cache释放了100多M。

六.linux系统如何查看内存

查看的内存的方式有很多种,萝卜青菜各有所爱,所有我介绍几种,可以根据个人喜欢选择。

从图形化到命令的顺序简单介绍。

1.gnome-system-monitor

显示CPU历史,内存和交换历史,以及网络历史。能实时查看内存的使用情况,但是没能看到buffer和cache的使用情况。
在这里插入图片描述
2.cat /proc/meminfo

查看动态更新的虚拟文件。内容比较全面,可以查看到许多关于内存的信息。
在这里插入图片描述
3.free

快速查看内存的方法,也是经常使用的命令。-h 更人性化的显示内存的单位 -m 以M的形式显示
在这里插入图片描述
4.top

top命令提供了实时的运行中的程序的资源使用统计。可以根据内存的使用和大小来进行排序。
在这里插入图片描述
5.sar

Linux统计/监控工具sar详细介绍:要判断一个系统瓶颈问题,有时需要几个 sar 命令选项结合起来使用,例如:怀疑CPU存在瓶颈,可用 sar -u 和 sar -q deng 等来查看 怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看 怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值