范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Disruptor为什么会如此快(二)伪共享和神奇的缓存行填充

  前言
  现代处理器的缓存用法对于成功的高性能操作至关重要。目前来说,处理器在处理缓存中的数据和指令非常高效,相反的,当缓存缺失(cachemiss)时则非常低效。接下来了解下神奇的缓存行填充。
  首先看什么是内存共享
  (计算机基础)计算机早就支持多核,软件也越来越多的支持多核运行,其实也可以叫做多处理运行。一个处理器对应一个物理插槽。其中一个插槽对应一个L3 Cache,一个槽包含多个cpu。一个cpu包含寄存器、L1 Cache、L2Cache,如下图所示:
  计算机CPU与缓存示意图
  其中越靠近cpu则,速度越快,容量则越小。其中L1和L2是只能给一个cpu进行共享,但是L3是可以给同一个槽内的cpu共享,而主内存,是可以给所有的cpu共享,这就是内存的共享。
  其中cpu执行运算的流程是这样:首先回去L1里面查找对应数据,如果没有则去L2、L3,如果都没有,则就会去主内存中去拿,走的路越长,则耗费时间越久,性能就会越低。
  Martin和Mike的 QCon presentation 演讲中给出了一些缓存未命中的消耗数据:
  从CPU到
  大约需要的CPU周期
  大约需要的时间
  主存
  约60-80纳秒
  QPI 总线传输(between sockets, not drawn)
  约20ns
  L3 cache
  约40-45 cycles
  约15ns
  L2 cache
  约10 cycles
  约3ns
  L1 cache
  约3-4 cycles
  约1ns
  寄存器
  1 cycle
  如果你的目标是让端到端的延迟只有10毫秒,而其中花80纳秒去主存拿一些未命中数据的过程将占很重的一块。
  缓存行
  刚刚说的缓存失效其实指的是Cache line的失效,也就是缓存行,Cache是由很多个Cache line 组成的,每个缓存行大小是32~128字节(通常是64字节)。我们这里假设缓存行是64字节,而java的一个Long类型是8字节,这样的话一个缓存行就可以存8个Long类型的变量,如下图所示:
  一个缓存对应的缓存行的结构图
  cpu 每次从主内存中获取数据的时候都会将相邻的数据存入到同一个缓存行中。假设我们访问一个Long内存对应的数组的时候,如果其中一个被加载到内存中,那么对应的后面的7个数据也会被加载到对应的缓存行中,这样就会非常快的访问数据。
  伪共享
  刚我们说了缓存的失效其实就是缓存行的失效,缓存行失效的原理是什么,这里又涉及到一个MESI协议(缓存一致性协议),我们这里不介绍这个,感兴趣的可以查资料研究一下,首先我们用Disruptor中很经典的讲解伪共享的图来讲解下:
  伪共享示意图
  上图中显示的是一个槽的情况,里面是多个cpu, 如果cpu1上面的线程更新了变量X,根据MESI协议,那么变量X对应的所有缓存行都会失效,这个时候如果cpu2中的线程进行读取变量Y,发现缓存行失效,就会按照缓存查找策略,往上查找,如果cpu1对应的线程更新变量X后又访问了变量X,那么左侧的L1、L2和槽内的L3 缓存行都会得到生效。这个时候cpu2线程可以在L3 Cache 中得到生效的数据,否则的话(即cpu1对应的线程更新X后没有访问X)cpu2的线程就只能从主内存中获取数据,对性能就会造成很大的影响,这就是伪共享。
  表面上 X 和 Y 都是被独立线程操作的,而且两操作之间也没有任何关系。只不过它们共享了一个缓存行,但所有竞争冲突都是来源于共享。
  简言之: 无法充分使用缓存行特性的现象称为伪共享。
  Disruptor如何来解决伪共享
  class LhsPadding {     protected long p1, p2, p3, p4, p5, p6, p7; }   class Value extendsLhsPadding {     protected volatile long value; }   class RhsPadding extendsValue {     protected long p9, p10, p11, p12, p13, p14,p15; }   /**  * 

Concurrent sequence class used fortracking the progress of * the ring buffer and event processors. Support a number * of concurrent operations including CAS andorder writes. * *

Also attempts to be more efficientwith regards to false * sharing by adding padding around thevolatile field. */ public class Sequenceextends RhsPadding { static final long INITIAL_VALUE = -1L; private static final Unsafe UNSAFE; private static final long VALUE_OFFSET; static { UNSAFE = Util.getUnsafe(); try { VALUE_OFFSET =UNSAFE.objectFieldOffset(Value.class.getDeclaredField("value")); } catch (final Exception e) { throw new RuntimeException(e); } } /** * Create a sequence initialised to -1. */ public Sequence() { this(INITIAL_VALUE); }   通过Sequence的一系列的继承关系可以看到,它真正的用来计数的域是value,在value的前后各有7个long型的填充值,(缓存行大小是按128字节处理的 8*16=128)这些值在这里的作用是做cpu cache line填充,防止发生伪共享。这种做法其实是以空间换时间的思想。   小贴士:   在jdk1.8中,有专门的注解@Contended来避免伪共享,更优雅地解决问题。   小结   1、理解内存共享、缓存行、伪共享的概念   2、如何来避免伪共享   3、避免伪共享可提高性能


蚂蚁集团提交二轮问询答卷!细数这些企业的专利申请量备受关注的蚂蚁科技集团上市项目又有新进程,在9月9日晚间,蚂蚁交上了二试答卷。8月25日,上交所受理了蚂蚁集团的科创板IPO申请。8月30日,IPO动态更新为已问询。9月7日晚,上酷派主动终止与小米专利侵权诉讼科技行业发展是首要任务11月10日,酷派发布了一则名为酷派集团有限公司关于主动终止与小米公司系列专利侵权诉讼的声明。酷派集团在声明中宣布即日起主动终止与小米的系列专利诉讼,并撤销正在进行的相关案件。20小米造车?华为只帮车企造好车!科技创新的星辰大海,有望了?2月19日,小米确定造车的消息迅速登上热搜,引发大量网友讨论。股价一度上涨12,小米公司对此迅速作出回应等等看,暂时没有,等待公告。2月21日,雷军以小米董事长的身份,发布公告称本古代十位巾帼英雄中国古代的冷兵器战争多为近身搏斗,对力量的要求决定了主要是男人的舞台。但是,在中国古代历史上,也出现了很多驰骋疆场战功赫赫的巾帼英雄。中国古代十位巾帼英雄妇好花木兰吕母迟昭平冼夫人昭和系奥特曼TV中的最终Boss日本圆谷公司制作的特摄系列,于1966年开始播放,播放年代正值日本年号昭和。讲述了来自M78星云光之国的奥特曼保护地球的故事。昭和系奥特曼也就是指最初一代奥特兄弟。昭和系奥特曼按顺盘点欧布奥特曼各变身形态欧布奥特曼原型的外观风格与之前的传统奥特曼无太大差异,对称的条纹中规中矩,初始形态的全身配以银色和红色为主,在凯完成第一次任务后,其脖子部分和下半身增加了大面积黑色,升级为起源形态古代十大名医之祖针灸之祖黄帝黄帝,黄帝是传说中中原各族的共同领袖,同炎帝并称为中华民族的始祖,姓姬,一姓公孙,号轩辕氏有熊氏少典之子。生活在原始社会末期,为部落或部落联盟的领袖。帝王世纪记载黄帝使携程穿越不确定性wumiancaijing。com疫情影响仍在,携程二季度业绩逆势大涨,作为行业风向标,携程复苏的动力何在?本文由无冕财经(wumiancaijing)原创发布作者陈欣苗编辑陈涧设孟晚舟归来,华为困局能缓解吗?焦点wumiancaijing。com针对孟晚舟的案件结束,但美国和华为间的官司美国对华为的制裁,都还没有结束。本文由无冕财经(wumiancaijing)原创发布作者施燕芬编辑陈涧设阿里钉钉地铁广告鄙视的21条职场规则,扎了无数职场人的心来源移动互联网,IDydhlwdyq阿里钉钉又来地铁里做广告了,上次做的广告是述说创业者的艰辛,引发了无数创业者的转发,这次钉钉广告diss的21条职场规则,说的曾经的那些职场潜规互动式广告黑幕月流水上亿有用户被骗几十万近来一段时间在把玩App的时候总会喜欢点点App里面的砸金蛋活动,有点类似抽奖的形式,这些活动的形式有很多种,要么是砸金蛋,要么是转盘抽奖,要么是刮刮卡。。不过无论怎么玩,奖品永远
企业出海,怎能缺了独立站川普相关资讯3月31日,美国第45任总统唐纳德特朗普个人网站上线,旨在与支持者保持联系。4月2日,Facebook表示将删除所有带特朗普声音的内容。4月6日,美国当地时间5日,特朗流量排名都OK,独立站转化率依旧不高,怎么回事?首先我们要走出一个思维误区只要有流量有排名,就能转化客户转化率不好就是独立站系统有问题。这样的想法,是比较偏激以及片面的,独立站的流量与转化率的关系是一个典型的漏洞模型,用户从搜索谷歌SEO网址太相似,会被认定为重复页面,不予收录最近很多客户朋友都在问网站里有重复页面,会不利于谷歌SEO么?首先我们要清楚什么是重复页面,就是指一个网站中出现相似重复的网站页面内容,判断页面是否重复的标准是谷歌搜索引擎,而不是AI访客识别高效解决独立站高流量,低询盘通病外贸企业是否认真思考过为什么外贸企业花大量时间精力去搭建独立站,投入大量人力物力去维护运营网站,虽然能够获得高流量,但收获的询盘却很少,对流量的转化始终低效,最终导致市场预算的严重新建网站先看流量还是先看转化率?内行秒懂近一两年可谓是独立站爆发的风口时期,谁都不敢再单脚走路,于是更多的平台卖家大幅度削减在平台的推广费用,开始转型做独立站,但是我们说转型容易,易型难!一顿操作猛如虎搭建网站,上传产品荣耀V40轻奢版上线,物如其名还是徒有虚表?时隔两个多月,荣耀发布了脱离华为后的第二部手机荣耀V40轻奢版。定位是次旗舰,相当与小米产品线里的小米10S,配置高于千元机,但比不上旗舰机。不过,因为脱离了华为的缘故,荣耀V40游戏听歌党都能满足!高颜值真无线耳机OPPOEncoPlay上线说起真无线耳机,相信大家都不会陌生,毕竟在去年,市面上也是涌现了不少优秀的真无线耳机产品,给我们带来了深刻的印象。就拿OPPOEnco系列来说,去年推出的OPPOEncoW31OP如何解决适老化问题?OPPO这些功能为老年人量身打造近日,工业和信息化部发布了关于切实解决老年人运用智能技术困难便利老年人使用智能化产品和服务的通知,明确指出要集中力量解决老年人在日常使用智能化产品享受智能化服务时遇到的困难。今年两顶级游戏体验必备要素一个不少,黑鲨4Pro拯救者2Pro哪款更香现如今,国产手机在设计方面的同质化已经到了令人发指的阶段,尤其是当下火爆的游戏手机,几乎走不出硬件堆砌魔咒。对于手机厂商来说,创新不只是局限于硬件堆砌如何打造一款直击用户痛点的游戏丈母娘和女朋友都没有搞定,还搞什么外贸?假如处在丈母娘和女朋友之间,你当如何应对?不用怀疑,你没有跑错片场!这里所说的丈母娘指谷歌,女朋友则为您的客户,但三者之间的逻辑关系亦有异曲同工之妙。在外贸营销推广的过程中,大体上又一波腾讯福利,这款国民级应用更新后简直超级好用近日,QQ浏览器11。8。0版上线,最大的亮点功能就是在其页面底部C位的直达功能。什么是直达呢?QQ浏览器直达很像传统浏览器的书签,但又有很大区别。它就是一个快捷面板,可以将自己高