disruptor深入剖析

Posted amberjava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了disruptor深入剖析相关的知识,希望对你有一定的参考价值。

了解disruptor,先来了解下以下知识

我们先来了解下CPU缓存:http://ifeve.com/from-javaeye-cpu-cache/,例如CPU分级缓存结构、缓存行概念等,知道的同学可以略过。

 伪共享问题  http://ifeve.com/falsesharing  在Java程序中,数组的成员在缓存中也是连续的. 其实从Java对象的相邻成员变量也会加载到同一缓存行中. 如果多个线程操作不同的成员变量, 但是相同的缓存行, 伪共享(False Sharing)问题就发生了

我们知道一条缓存行有64字节, 而Java程序的对象头固定占8字节(32位系统)或12字节(64位系统默认开启压缩, 不开压缩为16字节), 详情见 链接. 我们只需要填6个无用的长整型补上6*8=48字节, 让不同的VolatileLong对象处于不同的缓存行, 就可以避免伪共享了(64位系统超过缓存行的64字节也无所谓,只要保证不同线程不要操作同一缓存行就可以). 这个办法叫做补齐(Padding).

如何避免伪共享,一神奇的缓存行填充  http://ifeve.com/disruptor-cacheline-padding/

 

 

 

 

 

 

 

 

 

 

 

 

http://ifeve.com/false-sharing/

以上是关于disruptor深入剖析的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Disruptor

Disruptor深入解读

系统性能典型案例分析:高性能队列Disruptor,一文深入理解

深入浅出计算机组成原理:理解Disruptor(上)-带你体会CPU高速缓存的风驰电掣(第54讲)

分布式技术专题线程间的高性能消息框架-深入浅出Disruptor的使用和原理

disruptor笔记之二:Disruptor类分析