“Free”的版本间的差异
跳到导航
跳到搜索
(→参考) |
(→参考) |
||
(未显示同一用户的1个中间版本) | |||
第135行: | 第135行: | ||
[http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html 每天一个linux命令(45):free 命令] | [http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html 每天一个linux命令(45):free 命令] | ||
+ | |||
+ | [https://blog.csdn.net/wisgood/article/details/12979937 Linux 内存 buffer 和 cache 的区别] | ||
+ | |||
+ | |||
+ | [https://blog.csdn.net/yiyeguzhou100/article/details/78257445 手工drop_caches之后cache值并未减少] | ||
[[category:ops]][[category:linux]] | [[category:ops]][[category:linux]] |
2020年2月19日 (三) 10:26的最新版本
free
NAME and DESCRIPTION
free - Display amount of free and used memory in the system
displays the total amount of free and used physical and swap memory in the system, as well as the buffers and caches used by the kernel.
SYNOPSIS
free [options]
OPTIONS
常用参数为 -m -g -h -s -b 以Byte为单位显示内存使用情况。 -k 以KB为单位显示内存使用情况。 -m 以MB为单位显示内存使用情况。 -g 以GB为单位显示内存使用情况。 -o 不显示缓冲区调节列。 -s<间隔秒数> 持续观察内存使用状况。 -t 显示内存总和列。 -V 显示版本信息。
EXAMPLES
按照离CPU由近到远的顺序依次是CPU寄存器、Cache、内存、硬盘,越靠近CPU的存储器容量越小但访问速度越快 free -g #可用内存为10G total used free shared buffers cached Mem: 15 15 0 0 0 9 -/+ buffers/cache: 5 10(可用内存) Swap: 0 0 0 1).free -m # or free -g 常用参数为 -m -g -h -s #注意 正常情况下free不能太小 不能有swap used 不然一般是有问题的,虽然说少量地使用swap是不是影响到系统性能的 [root@vm ~]# free -m total used free shared buffers cached Mem: 999 256 743 0 21 136 -/+ buffers/cache: 99 900 Swap: 2015 0 2015 2). top ->M 一般就可以看到这些使用内存比较多的程序的 如果这两个看到的不多,但是free很少 那就是有问题了 如昨天 root@service]# free total used free shared buffers cached Mem: 32940112 30841684 2098428 0 4545340 11363424 -/+ buffers/cache: 14932920 18007192 Swap: 32764556 1944984 30819572 下面是对这些数值的解释: total:总计物理内存的大小。 used:已使用多大。 free:可用有多少。 Shared:多个进程共享的内存总额。 Buffers/cached:磁盘缓存的大小。 第三行(-/+ buffers/cached): used:已使用多大。 free:可用有多少。 第四行是交换分区SWAP的,也就是我们通常所说的虚拟内存。 区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached. 第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。 所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。 如本机情况的可用内存为: 18007156=2098428KB+4545340KB+11363424KB 那buffers和cached都是缓存,两者有什么区别呢? 为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。 磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。 Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。 Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。 简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。 所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准. 如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。 aws ec2 [root@ip-172-31-17-165 ~]# free -g total used free shared buffers cached Mem: 7 4 3 0 0 3 -/+ buffers/cache: 0 6 Swap: 0 0 0
2020
第一类单位参数: 1) -b, –bytes, 以Byte为单位显示内存使用情况 2) -k, –kilo, 以KB为单位, 这也是默认值 3) -m, –mega, 以MB为单位显示内容使用情况 4) -g, –giga, 以GB为单位显示内存使用情况 第二类参数: 1)、 -h, –human, 自动将数值转换为人类易读形式 2)、 -c, –count, 展示结果count次,需与-s配合使用 3)、 -s, –seconds, 动态刷新内存使用情况的间隔 free -m各字段含义 第一部分Mem行: ======================== total 内存总数: 3865M used 已经使用的内存数: 1545M free 空闲的内存数: 2320M shared 多个进程共享的内存总额 196M buffers Buffer 缓存内存数: 176M cached Page 缓存内存数:569M 关系:total (3865M) = used(1545M) + free(2320M) 第二部分(-/+ buffers/cache): ======================== (-buffers/cache) used内存数:798M (指的第一部分Mem行中的used – buffers – cached) 即为1545 – 176 – 569 = 800 取整时计算差异 2M (+buffers/cache) free内存数: 3066M (指的第一部分Mem行中的free + buffers + cached) 即为2320 + 176 + 569 = 3065 取整时计算差异 1M 第三部分是指交换分区 ======================== 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,