首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux Page cache和buffer cache正解

Page cache和buffer cache一直以来是两个比较容易混淆的概念,在网上也有很多人在争辩和猜想这两个cache到底有什么区别,讨论到最后也一直没有一个统一和正确的结论,在我工作的这一段时间...当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。...简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。...在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。...从上面的分析可以看出,2.6内核中的buffer cache和page cache在处理上是保持一致的,但是存在概念上的差别,page cache针对文件的cache,buffer是针对磁盘块数据的cache

2.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux系统中的Page cache和Buffer cache

Page cachelinux读写文件时,它用于缓存文件的逻辑内容,从而加快对磁盘上映像和数据的访问。...Buffer cache是由物理内存分配,Linux系统为提高内存使用率,会将空闲内存全分给buffer cache ,当其他程序需要更多内存时,系统会减少cache大小。...假设我们通过文件系统操作文件,那么文件将被缓存到Page Cache。 若需要刷新文件,Page Cache将交给Buffer Cache去完成,因为Buffer Cache就是缓存磁盘块的。...当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。...在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache

1.9K20

Linux系统中的Page cache和Buffer cache

Page cachelinux读写文件时,它用于缓存文件的逻辑内容,从而加快对磁盘上映像和数据的访问。...Buffer cache是由物理内存分配,Linux系统为提高内存使用率,会将空闲内存全分给buffer cache ,当其他程序需要更多内存时,系统会减少cache大小。...假设我们通过文件系统操作文件,那么文件将被缓存到Page Cache。 若需要刷新文件,Page Cache将交给Buffer Cache去完成,因为Buffer Cache就是缓存磁盘块的。...当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。...在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache

2.9K40

linux读写

读写锁 与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。 读写锁状态: 一把读写锁具备三种状态: 1. 读模式下加锁状态 (读锁) 2. 写模式下加锁状态 (写锁) 3....不加锁状态 读写锁特性: 1. 读写锁是“写模式加锁”时, 解锁前,所有对该锁加锁的线程都会被阻塞。 2....那么读写锁会阻塞随后的读模式锁请求。优先满足写模式锁。读锁、写锁并行阻塞,写锁优先级高 读写锁也叫共享-独占锁。当读写锁以读模式锁住时,它是以共享模式锁住的;当它以写模式锁住时,它是以独占模式锁住的。...读写锁非常适合于对数据结构读的次数远大于写的情况。...函数 以读方式请求读写锁。

3.2K30

Linux-手动释放linux内存cache

Cache 磁盘缓存的大小 -buffers/cache (已用)的内存数:used - buffers - cached +buffers/cache(可用)的内存数:free + buffers...手动释放缓存 /proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。...sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件) # echo 3 > /proc/sys/vm/drop_caches # cat /proc...但实际上,我们都知道这是因为Linux对内存的管理与Windows不同,free小并不是说内存不够用了,应该看的是free的第二行最后一个值:-/+ buffers/cache: 58 191,这才是系统可用的内存大小...我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少。如果常常swap用很多,可能你就要考虑加物理内存了,这也是linux看内存是否够用的标准.

5.6K20

【图解Linux内核】Page Cache

认识Page Cache最简单的方式,就是用数据说话,通过具体的数据你会更加深入地理解Page Cache的本质。 为什么需要Page Cache,Page Cache的产生和回收是什么样的。...最好具备一些Linux编程的基础,比如,如何打开一个文件;如何读写一个文件;如何关闭一个文件等等。 什么是Page Cache? Page Cache到底是属于内核还是属于用户?...怎么观察Page CacheLinux上直接查看Page Cache的方式: /proc/meminfo free /proc/vmstat 命令 内容其实是一致的。...直接使用Direct I/O绕过Page Cache,不使用Cache了,省的去管它了。 为什么需要Page Cache?...标准I/O和内存映射会先把数据写入到Page Cache,这样做会通过减少I/O次数来提升读写效率。我们看一个具体的例子。

5.5K10

linux buffer cache的回收

buffers/cache占用的较多,说明系统中有进程曾经读写过文件,但是不要紧,这部分内存是当空闲来用的。 真的很了解。...buffer和cache是两个在计算机技术中被用滥的名词,放在不通语境下会有不同的意义。在Linux的内存管理中,这里的buffer指Linux内存的:Buffer cache。...这里的cacheLinux内存中的:Page cache。翻译成中文可以叫做缓冲区缓存和页面缓存。...什么是buffer cache Buffer cache则主要是设计用来在系统对块设备进行读写的时候,对块进行数据缓存的系统来使用。...尤其是被使用更多的cache空间。既然它主要用来做缓存,只是在内存够用的时候加快进程对文件的读写速度,那么在内存压力较大的情况下,当然有必要清空释放cache,作为free空间分给相关进程使用。

5.1K40

linux读写锁_共享内存读写

一、读写锁是什么?...读写锁其实还是一种锁,是给一段临界区代码加锁,但是此加锁是在进行写操作的时候才会互斥,而在进行读的时候是可以共享的进行访问临界区的 ps:读写锁本质上是一种自旋锁 二、为什么需要读写锁?...如果每次操作都给此段代码加锁,太浪费时间了而且也很浪费资源,降低程序的效率,因为读操作不会修改数据,只是做一些查询,所以在读的时候不用给此段代码加锁,可以共享的访问,只有涉及到写的时候,互斥的访问就好了 三、读写锁的行为...读写之间是互斥的—–>读的时候写阻塞,写的时候读阻塞,而且读和写在竞争锁的时候,写会优先得到锁 四、自旋锁&挂起等待是锁?...---->读和写在同时竞争锁的时候,写会优先的得到锁 互斥---->读的时候写阻塞,写的时候读阻塞 4.相关函数 (1)pthread_rwlock_init()—->初始化函数 功能:初始化读写

6.1K10

Linux内存(手动释放cache)

2、什么是cache 为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache...前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。...Free中的buffer和cache:(它们都是占用内存): buffer : 作为buffer cache的内存,是块设备的读写缓冲区 cache: 作为page cache的内存, 文件系统的cache...3、手动释放cache /proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。...drop_caches To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches 注意:在清空缓存前我们需要在linux

10K80

【图解Linux内核】Page Cache

认识Page Cache最简单的方式,就是用数据说话,通过具体的数据你会更加深入地理解Page Cache的本质。 为什么需要Page Cache,Page Cache的产生和回收是什么样的。...最好具备一些Linux编程的基础,比如,如何打开一个文件;如何读写一个文件;如何关闭一个文件等等。 什么是Page Cache? Page Cache到底是属于内核还是属于用户?...怎么观察Page CacheLinux上直接查看Page Cache的方式: /proc/meminfo free /proc/vmstat 命令 内容其实是一致的。...直接使用Direct I/O绕过Page Cache,不使用Cache了,省的去管它了。 为什么需要Page Cache?...标准I/O和内存映射会先把数据写入到Page Cache,这样做会通过减少I/O次数来提升读写效率。我们看一个具体的例子。

5.1K20

linux cache介绍及控制

参考文档 https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/ 有关Cache...Linux内核将写磁盘的操作分解成了,先写缓存,每隔一段时间再异步地将缓存写入磁盘。这提升了IO读写的速度,但存在一定风险。数据没有及时写入磁盘,所以存在数据丢失的风险。...同样,也存在cache被写爆的情况。还可能出现一次性往磁盘写入过多数据,以致使系统卡顿。之所以卡顿,是因为系统认为,缓存太大用异步的方式来不及把它们都写进磁盘,于是切换到同步的方式写入。...情景1:减少Cache 你可以针对要做的事情,来制定一个合适的值。...情景2:增加Cache 在一些场景中增加Cache是有好处的。例如,数据不重要丢了也没关系,而且有程序重复地读写一个文件。允许更多的cache,你可以更多地在内存上进行读写,提高速度。

2.2K21

Linux内核Page Cache和Buffer Cache关系及演化历史

同时对于带buffer的写入操作,数据在写入到Page Cache中即可立即返回,而不需等待数据被实际持久化到磁盘,进而提高了上层应用读写文件的整体性能。...Buffer Cache 磁盘的最小数据单位为sector,每次读写磁盘都是以sector为单位对磁盘进行操作。sector大小跟具体的磁盘类型有关,有的为512Byte, 有的为4K Bytes。...上层对于文件的读写,会转化到对于对应buffer_header的读写: file_read时,会先通过 f_pos 计算出实际位于的dev, blocknr位置,并通过 bread 获取到对应的 buffer_head...对上,在文件读写时,以page为单位进行处理。而对下,在数据向device进行刷新时,则可以以buffer_head(block)为单位进行处理。...Linux内核的文件Cache管理机制介绍 [9]. Linux内核文件Cache机制 [10].

2K30
领券