Linux_free(buffer与cache区别)
一、free命令
[root@xen_202_12 /]# free -m
total used free shared buffers cached
Mem: 3072 2459 612 0 207 1803
-/+ buffers/cache: 447 2624
Swap: 1913 0 1913
第2行:
total 内存总数: 3072
used 已经使用的内存数: 2459
free 空闲的内存数: 612
shared 当前已经废弃不用,总是0
buffers: Buffer Cache内存数: 13220
cached: Page Cache内存数: 2720160
关系:total = used + free
第3行:
-/+ buffers/cache的意思:
-buffers/cache 的内存数: 447 (等于第1行的 used - buffers - cached)
+buffers/cache 的内存数: 2624 (等于第1行的 free + buffers + cached)
注:此处的内存数在用上面式子计算后,在大小上有一点点出入(还不知道是什么原因)。
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第4行单独针对交换分区。
为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(如read,write,getdents)的时间。
第2行(mem)的used/free与第3行(-/+ buffers/cache) used/free的区别:
这两个的区别在于使用的角度.第2行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是612MB,已用内存是2059MB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第3行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是可用的,因为buffer/cached是为了提高文件读取的性能而设,当应用程序要用到内存的时候,buffer/cached会很快地被回收。所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.
如上例:
2624= 612+207+1803
-----------------------------
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一下,防止丢数据
二、buffers与cached的区别:
buffers是用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages。
cached用来给文件做缓冲。
即:buffers是用来存储目录里面有什么内容,权限等等,而cached用来记忆我们打开的文件.
如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man kill ,你就可以明显的感觉到第二次的开打的速度快很多。
实验:在一台没有什么应用的机器上做会看得比较明显。记得实验只能做一次,如果想多做请换一个文件名。
#free
#man kill
#free
#man kill
#free
比较一下free先后显示的buffers的大小。
另一个实验:
#free
#ls /dev
#free
比较一下两个的大小,当然这个buffers随时都在增加,但有ls过的话,增加的速度会变得快,这个就是buffers/chached的区别。
因为Linux会将暂时不使用的内存作为文件和数据缓存,以提高系统性能,当应用程序需要这些内存时,系统会自动释放(不像windows那样,即使你有很多空闲内存,他也要访问一下磁盘中的pagefiles)
内存交换条件及方式:
当可用内存少于额定值的时候,就会开始进行交换.
如何看额定值(RHEL4.0)
#cat /proc/meminfo
交换将通过三个途径来减少系统中使用的物理页面的个数:
1.减少缓冲与页面cache的大小;
2.将系统V类型的内存页面交换出支;
3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap是不会影响到系统性能的。
转载于:https://www.cnblogs.com/wjoyxt/p/3985825.html
Linux_free(buffer与cache区别)相关推荐
- Linux内存buffer与cache区别
一.首先大概了解一下计算机CPU.Cache.Buffer.内存.硬盘.SWAP CPU也称为中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机 ...
- Linux操作系统中内存buffer和cache的区别
我们一开始,先从Free命令说起. free 命令相对于top 提供了更简洁的查看系统内存使用情况: $ free total used free s ...
- Linux中内存buffer和cache的区别
Linux中内存buffer和cache的区别 分类: LINUX 原文地址:Linux中内存buffer和cache的区别 作者:platinaluo 细心的朋友会注意到,当你在linux下频繁存取 ...
- Buffer和Cache的区别
Buffer和Cache的区别 缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内 ...
- buffer 与cache 的区别
A buffer is something that has yet to be "written" to disk. A cache is something that has ...
- Linux内存buffer和cache的区别
在Linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序.或是读取刚存取过 ...
- Linux操作系统中内存buffer和cache的区别--从free命令说起(转)
原文链接:http://os.51cto.com/art/200709/56603.htm 我们一开始,先从Free命令说起. Free free 命令相对于top 提供了更简洁的查看系统内存使用情况 ...
- Linux中Buffer和Cache的区别
今天我们再来讨论下linux系统中关于Buffer和Cache的区别,buffer与cache操作的对象就不一样. 1.buffer(缓冲) 是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速 ...
- linux配置内存buffer,Linux中内存buffer和cache的区别
Linux中内存buffer和cache的区别 发布时间:2007-08-31 09:52:55来源:红联作者:ivepace free free 命令相对于top 提供了更简洁的查看系统内存使用情况 ...
- Linux下内存buffer和cache的区别
滥觞:网海拾贝 Free free 命令相干于top 供应了更简便的查察体系内存运用环境: $ free total used free shared buffers cachedMem: 2552 ...
最新文章
- google gflags的参数解析,便捷实用
- uml具有多种视图_UML建模与架构文档化
- python:解决UnicodeDecodeError
- android中跨进程通讯的4种方式
- JavaScript this指向相关内容
- mysql数据库代码_【代码总结】MYSQL数据库的常见操作
- python的基础命令_深度学习中python常用命令
- java编程思想3感悟(4)---被隐藏的具体实现
- 马化腾加持开源,参与构建全球科技共同体
- C++ char 类型:字符型和最小的整型
- 001_关于选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。问题解决
- Defense hash algorithm collision 防御hash算法冲突导致拒绝服务器
- 采用RedisLive监控Redis服务
- HTTP协议和HttpClient的入门
- 【机房报修管理系统】1.简介篇 机房报修管理系统简介
- [vba]快速更新表格标题序号
- 乐符识别matlab,基于DPP的自动音符切分识别研究
- Linux设备模型分析之bus
- 互联网日报 | 7月14日 星期三 | 京东宣布涨薪两个月;腾讯收购搜狗股权获无条件批准;教育部辟谣取消教师寒暑假...
- Bartender 的二维码QR Code出现编码错误:输入数据包含对所选编码无效的字符
热门文章
- MyEclipse+Tomcat+JSP开发环境配置
- java exe指的是什么_Java程序的执行过程中用到一套JDK工具,其中java.exe是指( )。
- C++实现LRU(Least-Recently Used)缓存算法
- malloc 初始化_glibc: malloc、calloc、realloc amp; free
- opencv4 图像特征匹配_【从零学习OpenCV 4】图像模板匹配
- tp5框架原理详解_工程测量教学合集,测量施工方案+原理解读,测量人员有它就够了...
- php 可用内存大小,关于php:致命错误:允许的内存大小为67108864字节耗尽
- tar命令压缩和解压缩
- 引用springboot starter 的springboot项目无法引用 springboot starter依赖的项目中的类
- python3 numpy二维方法_Python numpy:基于坐标创建二维值数组