Intel 为了更好的卖他们家的cpu,花了很多力气参与分布计算社区的开发,好比spark。若是真正用好这些芯片提供的特性,确实能够极大的提高分布式计算系统的性能。数据库
传统的计算指令输入是两个数,输出是一个数。SIMD指令的输入是两个数组,输出是也是数组。这就使得批量计算的效率大大提升了。Intel的CPU从最先的MMX指令,发展的SSE,以及如今的AVX,AVX2,这些指令均可以统称为SIMD指令。最初这些指令大部分是用于多媒体和图形处理领域,如今也有计算引擎和数据库系统开始利用这些SIMD指令进行加速。值得一提的是,显卡的GPU也是相似SIMD的方式来工做的,因此也有数据库开始利用GPU进行计算了。
这是一个利用了SIMD指令的数据库系统的架构图编程
DPDK的做用就是利用Intel的高端网卡的特殊驱动,可使得在用户态的普通程序绕过Linux内核,直接控制网卡收发IP包。若是利用 DPDK 在用户态实现了原本由Linux内核实现的TCP协议栈。那么就能够用来提升相似 Kafka 这样的纯转发的数据应用场景的网络性能。数组
Intel最近演示了利用他们家的ADR技术如何加速etcd数据库的写入性能
这项技术的专利说明在这里:https://www.google.com/patents/US20090089514
华为公司在这个基础上有一个新的专利:http://www.google.com/patents/CN103544080A?cl=zh
在专利说明里清晰地描述了 ADR 的工做机制缓存
现今,为了保证存储系统中数据的可靠性,一般会在存储系统中增长备电单元,从而保证在电源异常和/或存储系统异常的状况下,使得内存数据不丢失,同时现今主流的备点单元是NVDIMM(Non-Volatile DIMM,非易失性内存条)。该NVDIMM在保护数据时一般是经过通用的DIMM(Dual Inline Memory Modules,双列直插式存储模块)接口与存储系统链接。所以,当存储系统电源发生异常时,CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)产生中断到PCH(Platform Controller Hub,集成南桥)芯片,在PCH中触发 ADR (Asynchronous Dram Refresh,异步内存刷新)流程,使得 CPU (Central ProcessingUnit,中央处理器)将cache缓存中的数据写入NVDIMM中的DRAM(Dynamic Random AccessMemory,动态随机存取存储器)而后再将NVDIMM置为self-refresh自刷新模式,从而使得NVDIMM完成备电切换,将DRAM数据拷贝到flash闪存中保存。性能优化
简单来讲就是把一块 <100MB 的内存区域在断电的时候自动刷到 NVDIMM 中,而 NVDIMM 是一种在断电时内容不会丢失的内存(http://baike.baidu.com/item/NVDIMM)。这类技术能够统称为 Persistent Memory(http://pmem.io/)。
在过去数据库为了提供durability,标准的作法都是把用户的改动写入一个叫作 Write Ahead Log (WAL)的日志文件里。而后调用操做系统的 fsync() 函数确保这个文件的内容已经被持久化到了磁盘上。而后再返回给用户说写入已经成功。即使WAL文件的写入是顺序写,可是磁盘的fsync操做仍然是昂贵的。Persistent Memory技术能够在未来被用于改善WAL的性能。Intel对etcd的性能优化就是一个很好的榜样。网络