正文:

  1. 页高速缓存是Linux内核实现磁盘缓存,主要用来减少对磁盘的IO操作。它通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变成对物理内存的访问。
  2. 临时局部原理:在短期内集中访问同一片数据的原理。
  3. 页高速缓存是由内存中的物理页面组成的,其内容对应磁盘上的物理块。缓存大小可以动态调整。
  4. 写透缓存:写操作将自动更新内存缓存,同时也更新磁盘文件。
  5. 回写缓存:更新内存缓存,但不立即更新磁盘文件,而是由一个回写进程进行周期将脏页链表的页写回到磁盘。
  6. Linux的缓存回收是通过选择干净页进行简单替换。
  7. 缓存回收的双链策略:维护两个链表,活跃链表,非活跃链表。
  8. Linux页高速缓存的目标是缓存任何基于页的对象,包含各种类型的文件和各种类型的内存映射。
  9. 优先搜索树是一种将堆与radix树结合的快速检索树。
  10. 内核总是试图先通过页高速缓存来满足所有读请求,如果在页高速缓存中未搜索到需要的页,则内核将从磁盘读入需要的页,然后将该页加入到页高速缓存中;对于写操作,页高速缓存像一个存储平台,所有要被写出的页都要加入页高速缓存中。
  11. 在2.6版本以前,内核页高速缓存不是通过基树检索,而是通过一个维护了系统中所有页的全局散列表进行检索。
  12. flusher线程后台例程会被周期性唤醒,将那些在内存中驻留时间过长的脏页写出。确保内存中不会有长期存在的脏页。
  13. 膝抢型计算机模式是一种特殊的页回写策略,其主要意图是将硬盘转动的机械行为最小化,它除了当缓存中的页面太旧时要执行回写脏页以外,flusher还会找准磁盘运转时机,把所有其他的物理磁盘IO,刷新脏缓冲等通通写回到磁盘,以便保证不会专门为了写磁盘而去主动激活磁盘行为。
  14. flusher线程数量是根据磁盘数量变化的,flusher线程基于页面,它将整个脏页写回磁盘。
  15. 单一线程有可能堵塞在某个设备的已拥塞请求队列上,而其他设备的请求队列却没法得到处理。使用多个flusher线程可以解决次问题。