以内部slab为例,管理区 + object总大小+left_over size = 1page,我们做个极端假设,cache为 direct-mapped caches.

1、没有采用slab着色:

  页面起始为slab管理区,后接所有object,后接left_over大小空间。如果有两个slab管理区,一个是A,一个是B,那么对于A、B中给出相同的索引时,必定发生conflict miss.

2、采用slab着色:

首先看下代码片段:

struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align,
unsigned long flags, void (*ctor)(void*))
{
......
left_over = caculate_slab_order(cachep, size, align, flags);
cachep->colour_off = cache_line_size();
cachep->colour = left_over / cachep->colour_off;
} void kmem_list3_init(struct kmem_list3 *parent)
{
......
parent->colour_next = ;
} int cache_grow(struct kmem_cache *cachep, gfp_t flags, int nodeid, void *objp)
{
.......
l3 = cachep->nodelists[nodeid];
offset = l3->colour_next;
l3->colour_next++;
if(l3->colour_next > cachep->colour)
l3->colour_next = ;
offset *= cachep->colour_off; slabp = alloc_slabmgmt(cachep, objp, offset, .....)
|-->slabp = objp + offset;
|-->offset += cachep->slab_size;
|-->slabp->colour = offset;
|-->slabp->s_mem = objp + offset; //!!!!!!!!!!!!!着色
.......
}

页面起始是一个offset大小的着色量,后接slab管理区,后接所有的object,后接部分剩余空间。那么对于A、B中给出相同的索引时,不会发生conflict miss。问题在于:对于先同的索引这是可以避免的,但是对于不同的索引仍会发生conflict miss,当然对于cache 而言,conflict miss无法避免。在采用着色后,不同的索引也会导致conflict miss。那么我们面对的问题是:对于A、B总给出相同索引的概率有多大,如果概率很大,自然减少了conflit miss,如果给出相同索引的概率较小,则conflict将会趋于平均化。

我不知到A、B中给出相同索引的概率会有多大,但是对于采用着色可以减少conflict miss概率,我持怀疑态度……

slab着色,可以减少cache conflict miss概率么?的更多相关文章

  1. TMS320C64x DSP L1 L2 Cache架构(1)——C64x Cache Architecture

    [前沿]研究生阶段从事于DSP和FPGA技术的相关研究工作,学习并整理了大量的技术资料,包括TI公司的官方文档和网络上的详细笔记,花费了大量的时间和精力总结了前人的工作成果.无奈工作却从事于嵌入式技术 ...

  2. 求解第N个素数

    任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sie ...

  3. Flink 核心技术浅析(整理版)

    1. Flink简介 Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink流执行引擎(streaming dataflow engine),提供支 ...

  4. 深入理解Apache Flink

    Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注.本文将深入分析Flink的一些关键技术与特性,希望能够帮 ...

  5. Spark/Storm/Flink

    https://www.cnblogs.com/yaohaitao/p/5703288.html  Spark Streaming与Storm的应用场景 对于Storm来说:1.建议在那种需要纯实时, ...

  6. Flink的入门

    Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注.本文将深入分析Flink的一些关键技术与特性,希望能够帮 ...

  7. [软工课程博客] 求解第N个素数

    任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sie ...

  8. 深入理解Apache Flink核心技术

    深入理解Apache Flink核心技术 2016年02月18日 17:04:03 阅读数:1936 标签: Apache-Flink数据流程序员JVM   版权声明:本文为博主原创文章,未经博主允许 ...

  9. 脱离JVM? Hadoop生态圈的挣扎与演化

    本文由知乎<大数据应用与实践>专栏 李呈祥授权发布,版权所有归作者,转载请联系作者! 新世纪以来,互联网及个人终端的普及,传统行业的信息化及物联网的发展等产业变化产生了大量的数据,远远超出 ...

随机推荐

  1. Linux 下MongoDb的安装

    MongoDb在linux可以说是非常的简单的. 先下载: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tg ...

  2. <魔鬼投资学>读书笔记

    书在这里 太多的投资者沉溺于结果,但却忽略了过程 在任何一个存在不确定系的领域中,比如投资.管理球队或是赌马,最优秀的长期成功者都会更重视过程,而不是结果 投资过程的目的:认识一家公司股票现在价格与未 ...

  3. Win10下打开chm文档提示无法显示该页的解决方法

    一是检查chm文件属性里最下面是否有个“解除锁定”,如有,点击“解除锁定”按钮就可以了. 如果没有上面提到的“解除锁定”,检查chm文件存放的路径.本例中,由于chm文件的存放路径中不能带有特殊字符“ ...

  4. UI设计 - 手机列表风格总结

    1       概述 1.1     背景 对UI设计过程中常见的列表风格进行总结.希望对后续的设计工作有所帮助 1.2     预期读者 UI设计师,用户体验设计师,项目经理,美工 1.3     ...

  5. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!

    MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!2017年06月15日 19:59:44 蓝色-鸢尾 阅读数:2062版权声明:本文为博主原创文章,如需转 ...

  6. Listener 监听对象的创建和销毁

    HttpSessionListener.ServletContextListener.ServletRequestListener分别用于控制Session.context.request的创建和销毁 ...

  7. Sword redis C语言接口介绍

    hiredis安装 hiredis是redis官方推荐的基于C接口的客户端组件,它提供接口,供c语言调用以操作数据库. 在redis的源码包的deps/hiredis下就有它的源码 安装方法,进入de ...

  8. 图的基本算法(BFS和DFS)

    图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系.对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示. 图可以分为有向图和无向图,一般用G=(V,E)来表示图. ...

  9. backup & restore On Ubuntu

    详见:https://help.ubuntu.com/community/BackupYourSystem/TAR 在 使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过 ...

  10. USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

    其实之前也有提及过,Cypress公司提供的官方文件和应用手册真的可以解决很多问题.做的也很人性化,操作也及其简单,几乎只要在 TD_int()里面配置一些常用的参数即可,其他都可以不用操作. 作为一 ...