ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux - PageCache

2021-05-06 21:57:59  阅读:193  来源: 互联网

标签:文件 缓存 访问 预读 Linux PageCache


前言

本文介绍的 PageCache(页高速缓冲存储器) 是 Linux 在读取文件数据中会把文件先拷贝到 内核缓冲区,其实是磁盘高速缓存。可以看看博文《零拷贝-并不是没有拷贝》,文中图文有描述这个过程。

出现原因和优点

CPU 读写磁盘相比读写内存的速度实在太慢了,所以如果把读磁盘变成多内存,那系统的处理数据就会提升很大。所以出现了 PageCache 机制。

程序运行的时候,具有「局部性」,所以通常刚被访问的数据在短时间内再次被访问的概率很高,于是可以用 PageCache 来缓存最近被访问的数据,当空间不足时淘汰最久未被访问的缓存。

再者在读取某一块数据时候,可以认为接下来很有可能会提取下一块的内容。PageCache 使用了「预读功能」。

所以 PageCache 主要有两个优点:

  1. 缓存最近被访问的数据。
  2. 预读。

当然也不是所有场合都适合使用 PageCache 机制,比如在读取大文件时候会出现以下的现象,导致 PageCache 成了累赘。

暂用过多的内存空间,真正需要被缓存的热点文件不能使用 PageCache。
读取文件时候往往会用到 DMA ,大文件下没有享受到缓存带来的好处,但却耗费 DMA 多拷贝到 PageCache 一次。

PageCache 结构

说到 PageCache 时候不得不提 BufferCache,因为它们俩一起构成了 Linux 的文件缓存。

Linux 的文件缓存分为部分,一个是 PageCache,另一个是 BufferCache;一个 PageCache 包含多个 BufferCache。

如下图:
在这里插入图片描述

总结

PageCache 具有缓存最近被访问的数据、预读等优点,能大幅提升系统的处理速度,但对于大文件先,往往是不使用 PageCache 技术的。

想知道 Linux 在处理大文件是怎么操作的,请看这篇博文 《Linux - 怎么实现大文件传输》。

标签:文件,缓存,访问,预读,Linux,PageCache
来源: https://blog.csdn.net/m0_51504545/article/details/116463518

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有