Linux IO的buffer cache和page cache的区别,以及二者合并的原因

page cache和buffer cache之间的关系以及验证 Linux系统存在两种缓存机制,分别是Page Cache和Buffer Cache, 其中Page Cache缓存文件的页以优化文件IO。Buffer Cache缓存块设备的块以优化块设备IO。 阅读详情

What is the major difference between the buffer cache and the page cache? Why were they separate entities in older kernels? Why were they merged later on?

原文地址:quora.com/Linux-Kernel

The page cache caches pages of files to optimize file I/O. The buffer cache caches disk blocks to optimize block I/O.

Prior to Linux kernel version 2.4, the two caches were distinct: Files were in the page cache, disk blocks were in the buffer cache. Given that most files are represented by a filesystem on a disk, data was represented twice, once in each of the caches. Many Unix systems follow a similar pattern.

This is simple to implement, but with an obvious inelegance and inefficiency. Starting with Linux kernel version 2.4, the contents of the two caches were unified. The VM subsystem now drives I/O and it does so out of the page cache. If cached data has both a file and a block representation—as most data does—the buffer cache will simply point into the page cache; thus only one instance of the data is cached in memory. The page cache is what you picture when you think of a disk cache: It caches file data from a disk to make subsequent I/O faster.

The buffer cache remains, however, as the kernel still needs to perform block I/O in terms of blocks, not pages. As most blocks represent file data, most of the buffer cache is represented by the page cache. But a small amount of block data isn’t file backed—metadata and raw block I/O for example—and thus is solely represented by the buffer cache.

See also my answer to What is the difference between Buffers and Cached columns in /proc/meminfo output?

注意这里buffer cache中的buffer指的是以前块设备层中用来缓存磁盘内容的结构,一个buffer大小就是磁盘中一个block大小。这里page cache指的是文件系统层用于缓存读写内容的cache。

这里的“合并”指的是,将两层中的结构统一,都改为page cache结构,page中包含一个一个的buffer结构,另外,在文件系统层缓存的page就无需在块设备层再缓存一份了,而是直接用(块设备中buffer)指针指向(文件系统page cache数据)的方式。当然如果只存在于块设备中的缓存还是只在块设备层缓存buffer和其数据。

原文中还有一些其他文章链接也挺有意思的。

Apache Tomcat 8.5.54 API 是 Apache Tomcat 服务器版本 8.5.54 的应用程序编程接口(API)文档 对于 Apache Tomcat 来说,API 文档详细描述了服务器提供的各种类和接口,以及如何使用它们来开发基于 Tomcat 的 Web 应用程序。请注意,由于 Tomcat 是一个不断更新和发展的项目,因此新的版本可能会引入新的 API 或更改现有的 API。因此,如果你正在使用特定版本的 Tomcat,请确保你查看的是与你使用的版本相对应的 API 文档。包(Packages):Tomcat 的 API 被组织成不同的包(Packages),每个包都包含一组相关的类和接口。 阅读详情

相关推荐

FPGA以太网接口设计避坑指南:GMII与RGMII时序转换的三种实现方案对比

本文深入解析FPGA以太网接口设计中GMII与RGMII时序转换的三种实现方案,包括Xilinx官方IP核、手工原语逻辑和开源方案gmii_to_rgmii。通过对比分析各方案的优缺点和适用场景,为工程师提供技术选型指南,帮助避免常见设计陷阱,提升高速网络设备开发的效率和可靠性。

weixin_42570484的博客 385

BufferCache与PageCache

BufferCache PageCache

sun%moon 856

SAP子公司财务账套配置实战:从公司代码到记账期间变式的关键步骤

本文详细介绍了为SAP子公司快速配置财务账套的实战步骤。通过复用母公司成熟配置,重点阐述了从创建公司代码、关联控制范围到分配记账期间变式的核心流程,帮助顾问在一两个小时内完成核心骨架搭建,实现高效集团财务管控。

cake8的博客 166

Linux系统中的Page cache和Buffer cache

Page cache(页面缓存)页缓存或文件缓存,是由好几个磁盘块构成,大小通常为4k,在64位系统上为8k,构成的几个磁盘块在物理磁盘上不一定连续,文件的组织单位为一页, 也就是一个page cache大小,文件读取是由外存上不连续的几个磁盘块,到buffer cache,然后组成page cache,然后供给应用程序。Page cache在linux读写文件时,它用于缓存文件的逻辑内容,从而加快对磁盘上映像和数据的访问。

2401_84047990的博客 1276

Autosar Os降低CPU负载的方案总结

由于各个项目的实际场景不尽相同,可能需要有针对性的对症优化。如果你还有别的一些优化手段欢迎留言交流。

3678

HDRnet——双边滤波和仿射变换的摇身一变

layer层数越多,下采样得到的图越小,low-level features的好处是最后的grid会更coarser,最后的特征图的感受野也越多,非线性更好,表达力更强。所以最终grid是5维的[B,in*out,n,H,W],permute之后是[B,H,W,n,in*out],B是batchsize,n表示对guide的量化级数,in*out表示每个cell的变换系数。这部分的处理对象是低分辨率图,利用CNN进行特征提取(局部和全局),最后fuse得到grid,这里面包含了变换的系数。

zcg1942的博客 1577

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

如果你对page cache和 buffer cache的关系总是搞不清的话,强烈建议看看本文。

wwwyuewww的专栏 363

ANSYS Fluent 2023R2实战:用欧拉多相流模型搞定流化床模拟(附详细参数避坑)

本文详细解析了ANSYS Fluent 2023R2中欧拉多相流模型在流化床模拟中的应用,包括模型选择、材料属性设置、相间作用力配置及初始化技巧。特别针对高颗粒浓度工况提供参数优化方案,帮助工程师提升模拟精度与效率,适用于化工、能源等领域的流化床反应器设计。

weixin_30938149的博客 269

Buffer Cache和Page Cache

概念如高速缓存(cache)产生的原理类似,在I/O过程中,读取磁盘的速度相对内存读取速度要慢的多。因此为了能够加快处理数据的速度,需要将读取过的数据缓存在内存里。而这些缓存在内存里的数据就是高速缓冲区(buffer cache),下面简称为“buffer”。具体来说,buffer(缓冲区)是一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。一方面,通过缓冲区,可以使进程之间的相互...

varyall的专栏 2146

IP-Guard安全网关实例

企业相关情况: 1.OA系统,主要为日常工作使用,该系统IP为192.168.1.2,端口为8080; 2.文件共享服务器,用于存放日常工作资料和文档,该文件共享服务器的IP为192.168.1.1,其中\\192.168.1.1\private 目录中的存放着公司重要文档,不能随意外传; 3.安全网关已采用串联的方式联入网络,IP为192.168.2.6,所有机器访问OA系统和文件共享服务...

IP-Guard专栏 707

GJB设计开发各阶段的文件和记录要求

GJB设计开发各阶段的文件和记录要求

Abel的博客 4055

Apache和Tomcat整合

手上的需求是要通过80端口进来apache,然后分发到不同的服务器程序,本身有php的程序在apache上跑着,而是用的橙云主机又不提供其他web接口,所以需要整合apache和tomcat AJP基本介绍: AJP是Apache提供的完成与其它服务器通讯的一种协议。 使用这种协议,具有更高的性能,因为它采用的是二进制传输。比HTTP的文本

心中永远的正能量 1万+

基于 FPGA 的 CNN 卷积神经网络之池化层 Verilog 实现

池化层是卷积神经网络(CNN)中的关键组件,用于降低特征图的维度,减少计算量和防止过拟合。常见的池化操作包括最大池化和平均池化。FPGA 提供了高效的并行处理能力,可以加速这些操作。池化层在 CNN 中扮演重要角色,通过降低数据维度提升计算效率。在 FPGA 上实现池化层,可以充分利用硬件资源实现高效的并行计算,有助于提高实时应用中的推理速度。

走向CTO的路上... 1256

apache2与tomcat5.5整合

#############################################服务器已有安装有Tomcat5.0和JDK1.4.2Tomcat5.0目录:/home/oracle/tomcatJDK 1.4.2目录:/home/oracle/j2sdk1.4.2_07Tomcat5.0 和 JDK1.42 安装步骤略Writt

liujinchengjx的专栏 1396

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Linux下Apache2+Tomcat5.0整合

############################################# 服务器已有安装有Tomcat5.0和JDK1.4.2Tomcat5.0目录:/home/oracle/tomcatJDK 1.4.2目录:/home/oracle/j2sdk1.4.2_07Tomcat5.0 和 JDK1.42 安装步骤略 ###################

Winson_Fung的专栏 786

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

apache2.2.12+tomcat6.0.20整合详解

  apache2.2.12+tomcat6.0.202009.09.24 整合完整详解版 Apache2.2.12+tomcat-6.0.20+jdk-6u16-linux + tomcat-connectors-1.2.27 ===========================================================...

xtpebg的专栏 183

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Apache 2.0.54 + Tomcat 5.5.12 + mod_jk.so 完全配置

首先确定各软件的版本,我发现开源的软件的版本超级复杂,超级多。采用的标准是用最新的好。千万不要被网上的说哪个版本稳定之类的话所相信,我的思路是对于开源的东东采用新的版本为佳。 当前最新的版本: Apache :2.0.54 源码 Tomcat :5.5.12 不是源码形式 jakarta-tomcat-connectors-1.2.15 源码 不要用jakarta-tomcat-...

绿茶的快乐生活 226

Apache2.0.54整合Tomcat5.0

 主要步骤: 1.    获得 mod_jk 动态链接库  。  2.    修改 Apache 的配置文件——httpd.conf。3.    编辑 mod_jk.conf 文件。4.    编辑 worker.properties 文件。  1. 获得mod_jk可以在Apache网站上获得,或者在Apache.freelamp.com上获得根据安装Apache

927

apache2.2和tomcat5.5整合(绝对可行)

Apache和Tomcat同是Apache基金会下面的两个项目。一个是HTTP WEB服务器,另一个是servlet容器(servlet container),最新的5.5.X系列实现Servlet 2.4/JSP 2.0Spec。在我们生产的环境中,往往需要Apache做前端服务器,Tomcat做后端服务器。此时我们就需要一个连接器,这个连接器的作用就是把 所有Servlet/JSP的请求转给T

风之去向 1450

Win2K下Apache2+TomCat5.0整合解决方案

Win2K下Apache2.0+TomCat5.0解决方案 操作系统:windows 2000 professional 中文版+sp4java 环境:j2sdk1.4.2_01 JAVA_HOME= C:/j2sdk1.4.2_01apache 2.0.48 for win32:apache_2.0.48-win32-x86-no_ssl.msi下载地址http://arc

Three_H的专栏 1197

Windows2000 server和windows 2003下的Apache2.0.47与Tomcat5.0.4的整合配置方法

j2sdk-1_4_1_02-s1studio_ce-4u1-bin-windows.exe+jakarta-tomcat-5.0.4.exe原由:搞了一段时间的java项目,到发布的时候了,可找不到一份最新的Apache2.0.47与Tomcat5.0.4的整合配置,遂看了半天的jakarta在线资料,并参照以前网友的文章,写了这篇配置文档,以作参考,欢迎斧正!一、软件准备:假设你有一台

lycoo的专栏 1264

apache2和tomcat的整合 linux下整合tomcat和apache2

实验三   Apache和tomcat实现web服务器 一、实验目的 利用apache和tomcat实现web服务器的整合 二、实验环境 1、Windows 7 64bit旗舰版   操作系统    2、VMware Workstation 7 3、ubuntu 12.04 三、实验内容 1、安装apache服务器 2、安装mysql服务 3、安装tomcat服务器 4、

zhuyangxing的专栏 955

JSP初级系列--apache2.2和tomcat5.5整合(绝对可行)

  apache2.2和tomcat5.5整合(绝对可行) Apache和Tomcat同是Apache基金会下面的两个项目。一个是HTTP WEB服务器,另一个是servlet容器(servlet container),最新的5.5.X系列实现Servlet 2.4/JSP 2.0Spec。在我们生产的环境中,往往需要Apache做前端服务器,Tomcat做后端服务器。此时我们就需要一个连

ouyp0627的专栏 1161

Apache2与Tomcat5.0的集成

一、概述: 这段时间一直在做JSP开发,原先只使用Tomcat5.0作为HTTP服务器,使用下来很差,页面打开是比较慢,与Apache2集成后,性能提高很多。Apache2是一个高性能的Web服务器,可以应用于Unix、Linux及Win32平台,但Apache2服务器只能处理静态的Web页,Apache2没有处理JSP的引擎,所以要让Apache2实现JSP的引擎,需要把JSP引擎Tomca

Oracle ERP开发/Tina与阿布的故事 1133

APACHE整合TOMCAT

转自http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/

阳晨的专栏 792

linux下apache和tomcat整合,Linux 下 Apache 与 Tomcat 整合的简单方法

把安装过程大概做个说明记录,一是有个总结,二是希望能帮到其他的朋友,有不恰当的地方希望大家指正,呵呵安装Redhat AS3.0就不多说了,我是自定义安装,把以后需要的工具如gcc等都装上了,省的以后用的时候没有还得装,麻烦,呵呵,你就随便了安装j2sdk-1_4_2_02-linux-i586-rpm.bin(或其他版本都ok)下载后双击安装___________________________...

weixin_32448581的博客 283
上一篇: 文件系统和裸块设备的page cache问题
下一篇: Linux IO 学习笔记(一)——文件系统架构
去级得骨灰
博客等级 码龄18年 26粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值