linux pagecache与内存占用
来源:互联网 发布:sql 设置字段默认值 编辑:程序博客网 时间:2024/05/23 11:50
实验环境 CentOS Linux release 7.3.1611 (Core) 3.10.0-514.6.1.el7.x86_64
一、概念介绍
linux系统中通常使用free命令来查看内存使用情况,free命令主要是从/proc/meminfo文件中读取的内存数据然后进行简单处理进行展示,根据查看free命令的手册了解到各个字段的含义。
total:系统总内存大小(分物理内存mem、交换分区swap)
used:已使用的内存(total - free - buffers - cache)
free:未使用的内存
shared:通常情况下是tmpfs(内存文件系统)使用的内存
buffers:内核缓冲区使用的内存
cache:page cache和slab所占用的内存之和
buff/cache:buffers + cache
available:在不进行swap的前提下还有多少内存可用于创建新的进程。这个跟free、buff/cache字段中的数字有所不同,这里的剩余内存是free加上可以被回收(有些slab、cache正在使用,不能回收)的page cache、mem slab的值的总和。
上述的page cache是系统读写磁盘文件时为了提高性能而将一部分文件缓存到内存中。这种做法虽然提高了磁盘I/O性能,但是也极大的占用了物理内存,特别当系统内存紧张时更容易出现问题。
二、实际用途
linux系统会经常执行一些写日志、生成备份文件的工作,当这些文件比较大时相应的cache就会占用大量的系统内存,而且这些类型的cache并不会被经常访问,所以系统会定期将这些cache flush到磁盘中。但是如果系统未及时的将这些cache flush到磁盘中的话,就会占用大量的内存导致出现swap的情况,这样会很影响系统的整体性能。
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。有一个内核配置接口 /proc/sys/vm/drop_caches 可以允许用户手动清理cache来达到释放内存的作用,这个文件有三个值:1、2、3。具体介绍如下
Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
- 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
- As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
- This tunable was added in 2.6.16.
根据上面介绍,在执行上述命令需要先执行sync命令将page cache刷新到磁盘中,然后在通过该drop_caches接口进行缓存清理。
另外,在编写处理大文件的代码时,避免整个文件全部读取到内存中,这样会导致占用大量的内存,极端情况下会出现linux 系统的OOM导致的正常进程被终止。尽量将文件分割成小文件再进行处理,文件使用完毕后尽早close。
0 0
- linux pagecache与内存占用
- linux pagecache与内存占用
- linux pagecache与内存占用
- 【linux】 pagecache
- linux 清理pagecache
- Linux -- Pagecache 文件缓存特性
- linux pagecache bdi writeback 机制
- linux查看内存占用
- linux查看内存占用
- linux内存占用分析
- linux内存占用问题
- 查看linux内存占用
- linux内存占用分析
- LINUX 占用内存
- linux ps与pmap查看进程占用内存
- Linux调试---关于内存泄露与进程占用cpu
- LINUX进程内存占用查看
- linux 查看进程占用内存
- 这里是最全的15个设计风格总结!
- Android仿微信通讯录功能,好友排序+字母索引
- 解决Android 中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题
- 利用Gson解析对象
- 通过JS语句判断WEB网站的访问端是电脑还是手机
- linux pagecache与内存占用
- 2.三表联查,javafor循环嵌套的优化
- MS SQL Server命令行添加用户
- xmind如何提取导图风格
- 【VMware】使用NAT方式使得windows7和虚拟机中的Linux联网
- 【韩顺平Javascript笔记】js的调试
- iOS 开发-CocoaPods的使用 - 到底是pod install 还是 pod update?
- (25)Spring Boot使用自定义的properties【从零开始学Spring Boot】
- Android 不透明度值换算