linux缓存机制buffer/cache/swap
1)缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。 缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。 CPU上下文切换:CPU给每个进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程当前运行状态保存下来,然后加载下一个任务,这个过程叫做上下文切换。实质上就是被终止运行进程与待运行进程的进程切换。
2)查看缓存区及内存使用情况
[root@localhost ~]# free -mtotal used free shared buffers cached
Mem: 7866 7725 141 19 74 6897
-/+ buffers/cache: 752 7113
Swap: 16382 32 16350
从上面的命令结果显示中可以看出:内存总共8G,已使用7725M,剩余141M,不少的人都是这么看的。 但其实这样并不能作为实际的使用率。因为有了缓存机制,具体算法如下:
空闲内存=free(141)+buffers(74)+cached(6897)
已用内存=total(7866)-空闲内存
由此算出空闲内存是7112M,已用内存754M,这才是真正的使用率,也可参考-/+ buffers/cache这行信息也是内存正确使用率。
3)缓存区分buffers和cached区别 内核在保证系统能正常使用物理内存和数据量读写情况下来分配缓冲区大小。 buffers用来缓存metadata及pages,可以理解为系统缓存,例如,vi打开一个文件。 cached是用来给文件做缓存,可以理解为数据块缓存,
例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G
测试写入一个文件,就会被缓存到缓冲区中,当下一次再执行这个测试命令时,写入速度会明显很快。
4)Swap用途 Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。 swap清理: swapoff -a && swapon -a 注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大
5)释放缓存区内存的方法
a)清理pagecache(页面缓存)
# echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1b)清理dentries(目录缓存)和inodes
# echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2c)清理pagecache、dentries和inodes
# echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3
上面三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!
另外,可以使用sync命令来清理文件系统缓存,还会清理僵尸(zombie)对象和它们占用的内存
# sync
--------------------友情提示一下----------------------
上面操作在大多数情况下都不会对系统造成伤害,只会有助于释放不用的内存。 但是如果在执行这些操作时正在写数据,那么实际上在数据到达磁盘之前就将它从文件缓存中清除掉了,这可能会造成很不好的影响。那么如果避免这种事情发生呢? 因此,这里不得不提一下/proc/sys/vm/vfs_cache_pressure这个文件,告诉内核,当清理inoe/dentry缓存时应该用什么样的优先级。
vfs_cache_pressure=100 这个是默认值,内核会尝试重新声明dentries和inodes,并采用一种相对于页面缓存和交换缓存比较”合理”的比例。
减少vfs_cache_pressure的值,会导致内核倾向于保留dentry和inode缓存。
增加vfs_cache_pressure的值,(即超过100时),则会导致内核倾向于重新声明dentries和inodes总之,vfs_cache_pressure的值:
小于100的值不会导致缓存的大量减少
超过100的值则会告诉内核你希望以高优先级来清理缓存。其实无论vfs_cache_pressure的值采用什么值,内核清理缓存的速度都是比较低的。
如果将此值设置为10000,系统将会将缓存减少到一个合理的水平
linux缓存机制buffer/cache/swap相关推荐
- linux下的缓存机制及清理buffer/cache/swap的方法梳理
1)缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果 ...
- 清理buffer/cache/swap的方法梳理
一.缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果 ...
- linux系统页面缓存,Linux缓存机制之页缓存
内核采用一种通用的地址空间方案,来建立缓存数据与其来源之间的关联. 1) 内存中的页分配到每个地址空间.这些页的内容可以由用户进程或内核本身使用各式各样的方法操作.这些数据表示了缓存中的内容: 2) ...
- linux缓存buffer,【Linux】清理缓存buffer/cache
运行sync将dirty的内容写回硬盘 sync 通过修改proc系统的drop_caches清理free的cache echo 3 > /proc/sys/vm/drop_caches ech ...
- Linux 操作系统原理 — 内存 — Cache 和 Buffer
目录 文章目录 目录 无处不在的 Cache Cache 和 Buffer 的区别在哪里? 为什么需要缓存? Linux 的缓存机制 Page Cache 的同步机制(一致性问题) 无处不在的 Cac ...
- Linux系统中的Page cache和Buffer cache
Free命令显示内存 首先,我们来了解下内存的使用情况: Mem:表示物理内存统计 total:表示物理内存总量(total = used + free) used:表示总计分配给缓存(包含buffe ...
- linux内存之buff/cache
前言.今天闲来无事.打算去练习一下linux指令.然后我看了一下服务器的内存. 这就很有意思了.我总共用了1.1个g.空余内存就只有167兆了.然后我就注意到了后面的 buff/cache.Googl ...
- Linux 之 CPU and Cache
Page Cache and Buffer Cache 在 Linux 的实现中,文件 Cache 分为两个层面,一是 Page Cache,另一个 Buffer Cache,每一个 Page Cac ...
- android webView的缓存机制和资源预加载
android 原生使用WebView嵌入H5页面 Hybrid开发 一.性能问题 android webview 里H5加载速度慢 网络流量大 1.H5页面加载速度慢 渲染速度慢 js解析效率 js ...
最新文章
- SCons — 程序构建工具
- python编码规范手册-python之(8)Python编码规范整理
- Java项目打包成exe的详细教程
- Hadoop学习笔记(一):零Linux基础安装hadoop过程笔记
- oracle,mysql常用基本操作 字段属性
- Lua基础篇-1 :什么是 Lua 语言?
- 学数值计算可以从事计算机算法吗,数值计算方法
- 动易html在线编辑器,动易系统解决IE8网站后台编辑器无效问题
- 春考计算机c语言题,2011春江苏省计算机等级考试c语言试题答案
- 在思科路由器上配置DNS服务器
- MATLAB -plotyy函数
- Word文档人民币符号怎么打出来
- Android面试题Java基础篇
- 如何设计USB TYPE-C接口的显示器和电视机,形态三独立功能的双USB-C接口 +一个HDMI接口的显示器
- 计算机word保存如何操作,怎么开启电脑word中的自动保存功能
- 运维干到35岁,还能干多久?
- 【JS】获取下个月的今天
- 数码相机摄影修复技术DxO PureRAW中文
- Java中过大整数储存问题(bushi
- pandas相关函数sort_values、字符串处理、index、merge、数据合并cancat、groupby分组统计