专栏首页linux驱动个人学习linux内核的冷热页分配器

linux内核的冷热页分配器

先说说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,速度会慢一些。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 内存相关工具

    memstat可以通过sudo apt install memstat安装,安装包括两个文件memstat和memstat.conf。

    233333
  • linux Page cache和buffer cache正解

    Page cache和buffer cache一直以来是两个比较容易混淆的概念,在网上也有很多人在争辩和猜想这两个cache到底有什么区别,讨论到最后也一直没有...

    233333
  • 深度理解select、poll和epoll

    在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词...

    233333
  • MATLAB快速入门----处理图形对象

    当调用绘图函数时,MATLAB® 使用各种图形对象(例如,图窗窗口、轴、线条、文本等)创建图形。每个对象都具有一组固定的属性,您可以使用这些属性控制图形的行为和...

    艾木樨
  • 并发编程(一)| Volatile 与 Synchronized 深度解析

    今天这篇是我的好朋友 evil say的投稿,这小伙现在大四,客观来说,大四有这个实力,我觉得很不错。他目前正在找实习,如果看了本文觉得他可以,有公司有坑位、愿...

    一个优秀的废人
  • Apr.2009 Microsoft MVP

        昨天收到了微软的邮件,授予我2009年度4月份的 Microsoft MVP 奖,成为全球3000位MVP中的一员,我的领域是Windows Mobil...

    ShiJiong
  • 验证码的故事 (2)

    上次我们说到了路易斯·冯·安(Luis von Ahn)发明的,既能拦截网络垃圾 spam、又能顺便帮助进行古籍的数字化工作的验证码工具--reCAPTCHA。...

    Crossin先生
  • 那些年在win下填过的Django坑

    專 欄 ❈ JacobYRJ,Python中文社区专栏作者 Python语言爱好者,目前在做Django项目。 Github博客:https://JacobY...

    Python中文社区
  • 【Leetcode】113. 路径总和II

    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

    Leetcode名企之路
  • MBP无法连接iPad Pro的解决方案

    加上一个usb-hub中继,但只能充电不能交换数据,出问题是因为苹果的usb 3.0驱动。

    gojam

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动