首页 > 其他分享 >slab着色区简介

slab着色区简介

时间:2022-09-19 11:23:13浏览次数:58  
标签:简介 colour 着色 大小 对齐 slab Slab 高速缓存

slab机制的简介表示如下图所示:

slab内的结构如下图所示:

 

  每个Slab的首部都有一个小小的区域是不用的,称为“着色区(coloring area)”。着色区的大小使Slab中的每个对象的起始地址都按高速缓存中的”缓存行(cache line)”大小进行对齐(80386的一级高速缓存行大小为16字节,Pentium为32字节)。因为Slab是由1个页面或多个页面(最多为32)组成,因此,每个Slab都是从一个页面边界开始的,它自然按高速缓存的缓冲行对齐。但是,Slab中的对象大小不确定,设置着色区的目的就是将Slab中第一个对象的起始地址往后推到与缓冲行对齐的位置。因为一个缓冲区中有多个Slab,因此,应该把每个缓冲区中的各个Slab着色区的大小尽量安排成不同的大小,这样可以使得在不同的Slab中,处于同一相对位置的对象,让它们在高速缓存中的起始地址相互错开,这样就可以改善高速缓存的存取效率。

  每个Slab上最后一个对象以后也有个小小的废料区是不用的,这是对着色区大小的补偿,其大小取决于着色区的大小,以及Slab与其每个对象的相对大小。但该区域与着色区的总和对于同一种对象的各个Slab是个常数。

  每个对象的大小基本上是所需数据结构的大小。只有当数据结构的大小不与高速缓存中的缓冲行对齐时,才增加若干字节使其对齐。所以,一个Slab上的所有对象的起始地址都必然是按高速缓存中的缓冲行对齐的。

  综上所诉:SLAB 利用剩余的不足一个 object 的空间来进行缓存染色。具体说来,就是以平台的 cache line 的长度(存储在 cachep->colour_off)为偏移值(这一点非常重要!),计算出剩余的空间有多少个偏移值 cachep->colour ,然后就从 0 到 cachep->colour - 1(这个值是 l3->colour_next),每次就偏移 colour_next * colour_off 。这样,根据我们上面的叙述,每个 SLAB 将最终被放到不同的 cache line ,从而缓解了缓存过热的问题。

  不过,其实这个方法并不是特别的有效,因为它的有效范围只有 colour 个,也就是说,colour 个之后,还是会发生覆盖的问题,

标签:简介,colour,着色,大小,对齐,slab,Slab,高速缓存
From: https://www.cnblogs.com/zongfanstudy/p/16707099.html

相关文章

  • tracer ftrace笔记(7)—— Perfetto简介
    一、Perfetto简介1.Perfetto支持多种数据来源,systrace、atrace、sysstat、HeapProfiles、logcat.也支持动态配置和定制。2.PerfettoUI一些常见的表述(1)slice:......
  • GFM语法个人简介示例
    个人简介基本信息姓名:曾强年龄:20岁职业:攻城狮爱好:看电影、听音乐、喝咖啡抽烟、喝酒、烫头(头发没了)人生格言:机会总是留给有准备的人。时时居先,方可快......
  • Spring(一):简介
    一、什么是Spring广义上的Spring泛指以SpringFramework为核心的Spring技术栈。经过十多年的发展,Spring已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个......
  • Clojure概念简介
    故事要从<<黑客与画家>>这本书说起,这本书讲述了硅谷创业之父PaulGraham的创业故事和人生体会。其中最有感触的有几点:1.财富是创造出来的,世界的财富是在渐进增长,钱只是......
  • 01-项目简介
    当你站在我的面前看我时,你知道我心里的悲伤吗商城模式B2C模式 项目技术&特色前后端分离开发,并开发基于Vue的后台管理系统springcloud全新的解决方案应用监......
  • django中的模板层简介
    1.什么是模板层模板层可以根据视图中传递的字典数据动态生产相应的HTML页面2.模板层的配置1.在项目下创建一个与同名文件夹平行的templates文件夹2.在settings.py中的T......
  • 第一章. 操作系统简介
    1操作系统的概念、功能和目标常见的操作系统:Windows,Android,iOS,MacOS,Linux1.1操作系统的概念操作系统的概念:1.管理协调硬件和软件等计算机资源2.为上层应用......
  • SDL开发库简介
    什么是SDLSimpleDirectMediaLayer是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、游戏杆和图形硬件的低级访问。它被视频播放软件、模拟器和......
  • Lambda简介
     1、什么是Lambda?Lambda就是一个匿名函数。 2、为什么要使用Lambda?使用Lambda表达式可以对一个接口进行非常简洁的实现(如下图,分别是三种方式实现接口的对比)。 3......
  • 反冲简介
    反冲简介畏缩是Facebook的React实验状态管理系统。它提供了几种开箱即用的功能,这些功能仅靠React⚛️很难实现。Recoil可让您创建一个数据流图,该图流自原子通......