MemoryHierarchy
  为了理解内核中的页替换算法,有必要认识linux中的存储体系分层架构、访问模式以及混合工作mixed workloads.

存储器分层架构
  有两种类型的存储分层架构。第一种是我们熟知的架构:从最顶端的cpu cache 到 最顶层的RAM内存的层级结构。其中在金字塔模型的最顶端的L1级cache最靠近cpu,cpu访问它的速度也最快,但是容量却最小;而靠近金字塔底端的附近的其他cahces(这些caches可以作为L2级和/或L3级,但是仍然比RAM要快)容量更大,但是访问速度比L1级cache更慢。

这种架构下最有效的访存方式为:cpu迅速的重复访问某一小部分数据,于此同时还缓存了更大量的数据。这种假设的本质就是:程序在一段时间内访问的数据都集中/缓存在L1 cahce(这样cache命中率更高,速度更快),短期类只进行少量的其他数据。

这样的cache层级架构是存在着一种超集关系:L1 cache中的数据在 L2级cache以及内存中也一定存在;只要L1级中的数据还在,L2级cache中的某一行与之对应的数据不能被替换出去;当L1级cache要访问不久前刚访问的数据,但是又不在L1中,而这些数据很有可能还缓存在L2 cache中,这时候就可以从L2 cache加载回L1 cache.

第二种类型的层级架构比较特别:即使第一层级的数据还在,对应的第二层级的cache也能够将这组数据替换出去,这在一些存储服务器上比较常见,如NFS或Samba服务器以及其他的NAS/SAN设备。这种分层模型最典型的情况是:最顶层是本地工作站或计算节点的RAM,而最底层是存储服务器的cache。

访问方式
  有几种以LRU作为替换策略的访存情形。

流式IO
  流式IO访问在文件服务器上是一种较为普遍的访问方式,文件服务器为客户端提供各种文件服务。如多媒体应用、存储备份等等。

LRU基于“最近被访问的页很可能很快将再次被访问”的替换策略并不适用于流式IO场景。在流媒体应用中,下一次被访问的数据页很可能是从来没有访问过的;而已经访问过的页很可能在很长一段时间内再也不会去访问。

因而在这样的使用场景中,cache替换算法需要仔细研究对症下药。

垃圾回收
  垃圾回收意味着程序不用显式的释放它们不再使用的内存,也不会再重用上次使用过的内存。此外,垃圾回收程序会扫描大片的内存区域并且和其他程序访存方式完全不同。

交互式用户程序
  用户经常希望计算机有快速的响应能力、更好的交互体验。考虑这样一种比较普遍的场景:当用户正在计算机上看电影或者看邮件时,另外一个用户任务(如浏览器)一般都会被暂时搁置或低优先级处理;当用户再切换回浏览器应用时,他们当然期望浏览器程序仍然还缓存在内存中以能够快速的响应。然而,用户刚才访问过的其他数据在将来的一段时间将不会再被访问,那还有必要将其他数据刷出cache而保留刚才访问过的应用程序数据么?

所以针对这种应用场景,也需要特别的替换算法来处理。

文件服务器 / secondary cache
  在文件服务器系统中,客户端会将访问最频繁的页面缓存起来,这样一来,服务器端最近访问过的文件一旦缓存到客户端后很可能在一段时间内都不会再被访问到。实际上在上一次访问某页之后到再次访问到这个页,这中间可能已经访问了许多其他页面了,这样的话,之前访问的那个页面(按照LRU算法)早已经被替换出cache了。

为了检测出哪个页面在文件服务器端访问的最频繁,VM需要记住替换出去的页面的一些信息,正如NonResidentPages(非驻留内存页面)描述的一样。一旦VM了解到哪些页面被访问的最频繁,他们就会被缓存起来而不会被其他页面替换出去。

要注意的是,在文件服务器端访问最频繁的页面不一定在客户端也频繁访问。相反,理想状态下,文件服务器端和客户端缓存不同的页面,这样文件服务器缓存可以和客户端互补,避免重复。

Mixed Workloads
  典型的计算机系统中跑着各种各样的不同程序,VM需要均衡这些不同任务的内存使用以保持各个任务的性能和响应能力在一个可接受范围内。

Graceful Degradation
  当系统超负荷运行,系统性能就会慢慢降低,而不会立刻崩溃。为了能够防止这种情况,我们不仅需要进行一些负载控制和认为干涉,我们还需要知道如何可靠的检测到系统超负荷运转。这种检测可能需要集成到页面替换机制中去。

LinuxMM--MemoryHierarchy的更多相关文章

  1. Android中基于CGroup的memory子系统HAL层分析-lmkd

    Android在内存管理上于Linux有些小的区别,其中一个就是引入了lowmemorykiller.从lowmemorykiller.c位于drivers/staging/android也可知道,属 ...

  2. Linux 内核的文件 Cache 管理机制介绍

    Linux 内核的文件 Cache 管理机制介绍 http://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完 ...

  3. linux内核调试指南

    linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...

  4. linux page cache和buffer cache

    主要区别是,buffer cache缓存元信息,page cache缓存文件数据 buffer 与 cache 是作为磁盘文件缓存(磁盘高速缓存disk cache)来使用,主要目的提高文件系统系性能 ...

  5. Linux 内核的文件 Cache 管理机制介绍-ibm

    https://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使 ...

  6. mmtests使用简介

    1.简介 mmtests是一个可配置的测试套件,可以被MM开发者用来进行一个常规测试.理想情况下,它可以与LTP,xfstests等测试工具结合起来实现自动化测试. 2.软件组织 run-mmtest ...

  7. 加速 lucene 的搜索速度 ImproveSearchingSpeed

    * Be sure you really need to speed things up. Many of the ideas here are simple to try, but others w ...

  8. 如何展开Linux Memory Management学习?

    Linux的进程和内存是两座大山,没有翻过这两座大山对于内核的理解始终是不完整的. 关于Linux内存管理,在开始之前做些准备工作. 首先bing到了Quora的<How can one rea ...

  9. linux状态及原理全剖析

    Table of Contents 1 linux 1.1 proc filesystem 1.1.1 /proc 1.1.1.1 /proc/meminfo 1.1.1.2 /proc/stat 1 ...

随机推荐

  1. svn更新操作时提示database is locked

    If you're on Windows version just let's do the next: Right click on the repo folder and go to Tortoi ...

  2. {HDU}{2516}{取石子游戏}{斐波那契博弈}

    题意:给定一堆石子,每个人最多取前一个人取石子数的2被,最少取一个,最后取石子的为赢家,求赢家. 思路:斐波那契博弈,这个题的证明过程太精彩了! 一个重要的定理:任何正整数都可以表示为若干个不连续的斐 ...

  3. 使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单

    设置防火墙策略时,关于SSH:22访问权限,我们常常会设置服务器只接受某个固定IP(如公司IP)访问,但是当我们出差或在家情况需要登录服务器怎么办呢? 常用两种解决方案:1.通过VPN操作登录主机: ...

  4. 5.Struts2中的拦截器

    拦截器是Struts2中的核心,其自带很多很多的拦截器,这里主要介绍一下自定义拦截器,恩多一半情况下呢?我们不需要使用到自定义的拦截器,Struts2本身已经提 供了很多的拦截器供我们使用,对于自定义 ...

  5. #define 小知识

    #define N 15 #define M 2+N #define W 2*M 问3*W的结果是多少? 结果为27: 知识点:define只能进行非常简单的运算,简单来说就是仅仅是将自身的值代入,而 ...

  6. 写了好多次SSH现在对于框架还是有一定的基础了,但是对于框架下我们该如何进行操作呢???

    首先,对于一个老手来说,我们最快捷的就是ctrl+c和ctrl+v,但是我们自己应该复制哪一些代码呢? 1.在我们导完包之后,我们需要写的就是web.xml,在其中,我们要有过滤器及映射和监听器. w ...

  7. U-Mail邮件网关提醒:谨防像素图片钓鱼窃密

    垃圾邮件和病毒的日益猖獗,既因为邮件在商务往来中扮演着越来越重要的角色,也因为犯罪成本低收益高.近年来,不少为非作歹者致力于通过邮件诈骗牟利,想出了种种奇思妙计,导致相关服务商在安全领域逐年加大研发投 ...

  8. SVN-修改已提交的日志

    前提:服务器是Windows下的VisualSVN Server 1.在库的属性页面的Hooks选项卡下找到Pre-revision property change hook,2.双击修改其内容,具体 ...

  9. css基础不扎实

    写了两周的网页,发现自己的css基础还是很差的,当时培训学习的时候就发现了,我做的页面都特别的别扭和丑吧,在班级上应该是垫底的: 原先只知道用float,不会使用定位,网页连固定定位也不会,现在发现, ...

  10. spring 整合hibernate

    1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...