以内部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. 2. K-Means的优化

    1. K-Means原理解析 2. K-Means的优化 3. sklearn的K-Means的使用 4. K-Means和K-Means++实现 1. 前言 上一篇博文K-Means原理解析简单清晰 ...

  2. 记录 am335x 因为 pinmux 配置不对导致 不断的原因

    其实很简单,是因为 中断不仅仅需要 gpio 的 input 属性, 还需要 pull_up 的数据 {"gpmc_ad11.gpio0_27", OMAP_MUX_MODE7 | ...

  3. [dts]AM4378的dts中配置和数据手册映射关系

    最近在设置AM4378 GPIO的时候产生了困惑 如何设置GPIO为output_pullup, output_pulldown, input_pullup, input_pulldown, high ...

  4. python多线程同步机制Lock

    #!/usr/bin/env python# -*- coding: utf-8 -*- import threadingimport time value = 0lock = threading.L ...

  5. session过期跳出irame

    在登录页底部加入 <script type="text/javascript"> if (window != top) top.location.href = loca ...

  6. 多选下拉框带搜索(aps.net)

    自己写了一个带搜索功能的多选下拉框,为了要获取值,就没有封装插件,实现思路 1.一个文本框 做搜索 2.一个文本框显示选中文本,一个隐藏控件存值 3.一个div里面绑定CheckBoxList控件(这 ...

  7. Web前端开发测试题阅读笔记

    引自: http://www.w3cplus.com/css/front-end-web-development-quiz.html Q7:下面代码弹出值是什么? x = 1; function ba ...

  8. Ubuntu free以及Linux内存占用大的解释

    -bash-3.00$ free total used free shared buffers cached Mem: 514020 465932 48088 0 15864 348844 -/ bu ...

  9. WaitForSingleObject函数的使用

    等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止.  WaitForSingleObject 函数 DWORD WaitForSingleObject( HANDLE hOb ...

  10. Java学习路线图,Java学习计划建议

    怎么学习Java,这是很多新手经常遇到的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:     首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...