zoukankan      html  css  js  c++  java
  • 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,速度会慢一些。

    参考:

    • understanding linux kernel
    • https://lwn.net/Articles/14768/
  • 相关阅读:
    插入排序(C语言版)
    2015蓝桥杯分机号(C++C组)
    2015蓝桥杯二项式
    2016蓝桥杯报纸页数(C++C组)
    区块链
    C语言学生管理系统完善版
    数据结构队列
    C语言数据结构队列
    C语言数据结构栈
    javascript 事件
  • 原文地址:https://www.cnblogs.com/4a8a08f09d37b73795649038408b5f33/p/10448733.html
Copyright © 2011-2022 走看看