内核的文件cache

资料参考及出处

https://www.ibm.com/developerworks/cn/linux/l-cache/index.html


作用

解决“速度不匹配”的问题,最终是为了提升系统性能;

CPU运算和内存操作比,CPU运算更快,内存操作和硬件IO操作比,内存操作更快,……

依赖于“程序运行的局部性原理”,数据使用的28原理,使得可以在这些相对快速和慢速的设备之间,做一个缓存,

通过采用“预读,异步读写,读写请求合并”等等一系列的机制,尽量去达到一个目标,就是:尽量少操作,少等待那个“慢”的设备,

从而提升整个系统的性能。


原理

首先区分开cache的含义,先明确说的是哪里的cache。

CPU cache解决的是CPU和内存之间的速度匹配问题,内核中的文件cache解决的是内存操作和外部介质IO的速度问题。

这里说的是内核中文件cache。

系统内部原理主要如下:

VFS,负责应用程序和文件cache之间通过read/write行数据交换;

内存管理系统,负责文件cache的分配和回收,同时VMM允许应用程序以mmap的方式访问文件cache;

具体的文件系统(EXT2/3等),负责文件cache和存储设备之间的数据交换;

image


文件的每个数据块最多只能对应一个 Page Cache 项,假定为4K;

每一个 Page Cache 包含若干 Buffer Cache,假定为1K;

可见实际buffer这层的cache对应的磁盘位置不一定是连续的;

image


预读的控制思想是,首次预读一个group,如果下次的读命中了,那就放大这个group,否则就该是继续预读group大小。

image


Cache 管理的优劣通过两个指标衡量:

一是 Cache 命中率:

这一项主要是每次的读写命中率,只有命中了才能用cache替代磁盘IO,才有性能提升的说法。

二是有效 Cache 的比率:

这一项主要是预读的效率,假如预读上来的如果都是无效cache,也就是不会被命中的,那么就是既白耗费了磁盘的读带宽,又白耗费了内存。

posted @ 2020-07-19 22:47  doctorJ  阅读(201)  评论(0编辑  收藏  举报