page cache页面缓存

作者: chozee | 来源:发表于2021-01-13 09:40 被阅读0次

为什么设计缓存?

1. 存储设备访问速度的巨大差异
2. temporal

如何设计缓存?

1. 大小
2. 对齐,方便寻址
3. 一致性(主要是写策略)

    3.1 nowrite
    3.2 write-through cache
    3.3 回写,标dirty,按阈值回写
        回写又要考虑何时写? 怎么写

        3.3.1 按时间定期回写
        3.3.2 按实际大小
        3.3.3 按脏页百分比
        3.3.4 调用sync(),fsync()

        回写方式

        1. 阻塞写 stop process
        2. 异步写, 启动一个线程

        2.6之后由一群内核线程(flusher线程)执行wirteback

4. 缓存回收

    有缓存就要考虑其回收
    LRU及其他算法(以前是按时间的单链现在是双链(甚至n链LRU/n),单链对只访问一次文件再不访问的情景很不好)

页面缓存都缓存什么?

读写操作时,缓存如下文件:

* 正规文件
* 块设备文件
* 内存映射文件

若页是4KB,物理块是512B,那一个页可能包含多个块,并且可以不连续.
所以索引不能用设备名称和块号做page cache中数据的索引

为什么不用设备号,块以及inode进行索引?

    因为Linux想缓存除了文件系统之外的可以基于页的对象
    所以通过结构体address_space来管理缓存和页I/O
    页面缓存不同进程共享. (通过虚拟地址vm_area_struct, 即文件可以有多个虚拟地址,但是物理存内存只一份)

相关文章

  • page cache页面缓存

    为什么设计缓存? 如何设计缓存? 页面缓存都缓存什么?

  • linux清理系统缓存脚本

    本脚本简介,用于清理buffer cache page 缓存

  • Rocket MQ

    参考万亿级数据洪峰下的分布式消息引擎 - 简书 Page Cache Page Cache是文件的缓存,用于加速对...

  • rails中的cache

    缓存指南总结 Web 应用中常用的各种 Cache 最常用的cache应该是页面的片段缓存和底层缓存。 片段缓存A...

  • vue源码解析之keep-alive

    问题来了 在使用vue的时,cache or not cache, is a problem。因为页面需不需要缓存...

  • 进程内缓存助你提高并发能力!

    前言 缓存,设计的初衷是为了减少繁重的IO操作,增加系统并发能力。不管是 CPU多级缓存,page cache,还...

  • cache-control和pragma的区别

    关于Cache-Control的must-revalidate:强制页面不缓存,作用与no-cache相同,但更严...

  • 前端页面从无到有的过程

    DNS解析 http缓存 Cache-control: 强缓存 判断页面的缓存是否存在以及是否过期,若没过期,则不...

  • Page Cache

    Page Cache是通过将磁盘中的数据缓存到内存中,减少磁盘I/O操作,从而提高性能。此外,还要确保Page C...

  • Redis 缓存优点、缺点、使用场景

    缓存的收益 1、加速读写 通过缓存加速读写速度:CPU L1/L2/L3 Cache 、Linux page Ca...

网友评论

    本文标题:page cache页面缓存

    本文链接:https://www.haomeiwen.com/subject/xhfuaktx.html