Linux Free/Top中的 Buffers and Cached

A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use.

buffer是由各种进程分配的,被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。

Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache

page cache是针对文件系统而言的,是对文件数据的缓存;buffer cache是对设备数据的缓存。两者在实现上差别不是很大,都是采用radix树进行管理.

Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。
Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。
简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

手工释放linux内存——/proc/sys/vm/drop_caches  default 0
sync
echo 3 > /proc/sys/vm/drop_caches       #
free buffers + cached

To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches;


linux I/O优化 磁盘读写参数设置
ls /proc/sys/vm

pdflush线程
1. 当空闲的内存低于一个特定的阈值时,内核必须将脏页写回磁盘,以便释放内存。
2. 当脏页在内存中驻留时间超过一个特定的阈值时,内核必须将超时的脏页写回磁盘,以确保脏页不会无限期地驻留在内存。

扫描二维码关注公众号,回复: 4377473 查看本文章

变量 描述
dirty_expire_centisecs 该数值以百分之一秒为单位,它描述超时多久的数据将被周期性执行的pdflush线程写出
dirty_ratio 占全部内存百分比,当一个进程产生的脏页达到这个比例时,就开始被写出
dirty_writeback_centisecs 该数值以百分之一秒为单位,它描述pdflush线程的运行频率
laptop_mode 一个布尔值,用于控制膝上型电脑模式
dirty_background_ratio 占全部内存的百分比。当内存中空闲页到达这个比例时,pdflush线程开始回写脏页


Reference:
http://www.linuxany.com/archives/814.html
http://digdeeply.org/archives/02201800.html

http://www.cnitblog.com/xijia0524/archive/2013/05/21/87502.html
http://chinaapp.sinaapp.com/thread-2534-1-1.html
dirty_background_ratio
http://blog.csdn.net/qinzhonghello/article/details/3739586
http://www.cyberciti.biz/faq/linux-kernel-tuning-virtual-memory-subsystem/

猜你喜欢

转载自blog.csdn.net/weixin_43956493/article/details/84823215