先说说cpu的cache,和cpu的cache比起来访问主内存是非常慢的,为了加快速度根据本地性原则,cpu在访问主内存的时候会把附近的一块数据都加载到cpu的cache里,之后读写这块数据都是在cache里做的。

linux本来有伙伴系统分配内存页,为了加快单个内存页的分配linux在每个node里为每个cpu分配了一个per_cpu_pageset(暂且叫他页缓存吧)。每个页缓存包含一个冷页缓存和一个热页缓存。这两个用法有什么区别呢。

  1. 如果申请完一个内存页就立刻用来写数据,用热页缓存。
  2. 如果申请完暂时用不到或者给DMA用,用冷页缓存。

这主要是因为内核用free_pages释放单个内存页的时候会调用free_hot_page。刚释放的内存页大概率还在cpu的cache里,也就是说热页缓存里的页很可能还在cpu的cache里,所以申请热页缓存并且立即使用会直接访问cpu的cache速度会比较快。其他情况就用冷页缓存,冷页缓存里的页在主内存里,需要重新加载到cpu的cache,速度会慢一些。

参考:

  • understanding linux kernel
  • https://lwn.net/Articles/14768/

转载于:https://www.cnblogs.com/4a8a08f09d37b73795649038408b5f33/p/10448733.html

linux内核的冷热页分配器相关推荐

  1. LINUX内核狂想曲之SLOB分配器

    LINUX内核狂想曲 @CopyLeft by ICANTH,I Can do ANy THing that I CAN THink!~ Author: WenHui, WuHan Universit ...

  2. linux内核虚拟内存之slub分配器

    上一章主要讲述以页为最小单位进行内存分配的伙伴管理算法,较大程度上避免了内存碎片问题.而实际上对内存的申请却不是每次都申请一个页面的(比如文件节点,任务描述符等结构体内存),通常是远小于一个内存页面的 ...

  3. linux内核映射一个页,固定映射地址和 ioremap

    内核内存管理. 第二部分. 固定映射地址和输入输出重映射 固定映射地址是一组特殊的编译时确定的地址,它们与物理地址不一定具有减 __START_KERNEL_map 的线性映射关系.每一个固定映射的地 ...

  4. linux read函数_浅谈Linux内核IO体系之磁盘IO

    前言 Linux I/O体系是Linux内核的重要组成部分,主要包含网络IO.磁盘IO等.基本所有的技术栈都需要与IO打交道,分布式存储系统更是如此.本文主要简单分析一下磁盘IO,看看一个IO请求从发 ...

  5. 精品Linux内核ppt,Linux内核.ppt

    Linux内核.ppt (17页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 Linux内核 Linux内核配置与编译,Linux内核移 ...

  6. 把握linux内核设计思想(十二):内存管理之slab分配器

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流.请勿用于商业用途] 上一节最后说到对于小内存区的请求,假设採用伙伴系统来进行分配,则会在页内产生非 ...

  7. 【Linux 内核 内存管理】分区伙伴分配器 ② ( free_area 空闲区域结构体源码 | 分配标志位 | GFP_ZONE_TABLE 标志位区域类型映射表 |分配标志位对应的内存区域类型 )

    文章目录 一.free_area 空闲区域结构体源码分析 二.分配标志位 三.GFP_ZONE_TABLE 标志位区域类型映射表 四.分配标志位对应的内存区域类型 一.free_area 空闲区域结构 ...

  8. 【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )

    文章目录 一.__alloc_pages_slowpath 慢速路径调用函数 二.判断页阶数 三.读取进程 mems_allowed 成员 四.分配标志位转换 五.__alloc_pages_slow ...

  9. Linux内核机制总结内存管理之连续内存分配器(二十七)

    文章目录 1 连续内存分配器 1.1 使用方法 1.2 技术原理 重要:本系列文章内容摘自<Linux内核深度解析>基于ARM64架构的Linux4.x内核一书,作者余华兵.系列文章主要用 ...

最新文章

  1. python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...
  2. icmp基于tcp还是udp_面试爱考、编程必会基础!TCP/IP必知必会10大问题……
  3. linux进程管理子系统分析,linux进程管理子系统简要分析
  4. Spring事务管理知识概述
  5. a = 3 中3在栈还是堆_阳台要不要装推拉门?纠结3次后还是装错了,返工中
  6. 关于表空间、Schema和用户
  7. Python基础学习----Requests获取url请求时间:
  8. 库存出现负数 mysql_前台支付商品成功后,sku表库存,购买数量会重复执行减操作好几次了,导致库存为负数...
  9. vim 显示/取消行号
  10. foreach(表达式中的类型标识符) 内含语句
  11. canva画板_客户体验,人工智能和机器学习-Oovvuu,Canva和Minerva集体的想法
  12. 【阿朱一帖看尽】2014年BAT到底干了些什么
  13. 华硕新主板打开核心显卡开关以支持核心显卡不被屏蔽,然后就可以装核显驱动了
  14. 由对称性知定点一定在x轴上_圆锥曲线中的定点定值问题的四种模型.doc
  15. 为计算机技术奉献一生语录,乐于奉献的名言警句40句
  16. excel自动求和,替换空值
  17. canvas SVG webGL比较
  18. 音视频开发系列(32)OpenGL ES 基本概念
  19. 分布式系统(事务处理)
  20. 逆变器的输出外特性分析

热门文章

  1. 带“公交一卡通功能”的智能手环会是用户最爱?
  2. 变电所自动化系统的电源配置
  3. Web前端Javascript笔记(8)Ajax前后端交互
  4. c++学习笔记(13) 继承和多态
  5. python决策树分类 导入数据集_BPNN、决策树、KNN、SVM分类鸢尾花数据集Python实现...
  6. jsonobject json对象里面_「jsonobject」用JSONObject解析和处理json数据 - seo实验室
  7. 在recovery模式下命令控制手机_安卓手机开机密码忘记,解锁教程
  8. SQL从入门到入魔之初入门
  9. python使用turtle库绘制玫瑰花
  10. SAP License:赛锐信息访谈启示录(三)