谈谈存储软件的无锁设计
面向磁盘设计的存储软件不需要考虑竞争锁带来的性能影响。磁盘存储软件的性能瓶颈点在于磁盘,磁盘抖动会引入极大的性能损耗。因此,传统存储软件的设计不会特别在意处理器的使用效率。曾经对一个存储虚拟化软件进行性能调优,在锁竞争方面做了大量优化,最后也没有达到性能提升的效果,原因就在于存储虚拟化的性能瓶颈点在于磁盘,而不在于处理器的使用效率。正因为如此,在面向磁盘设计的软件中,很多都采用单线程、单队列处理的方式,一定程度上还可以避免由于并发所引入的磁盘抖动问题。 在面向NVMe SSD设计的存储软件中,这一切正发生着变化。和传统磁盘相比,NVMe SSD具有极高的IO读写性能,不存在传统磁盘所具有的访问寻道、抖动问题。为了发挥NVMe SSD的性能,无论在软件还是在硬件上都需要采用多队列技术,通过多队列方式充分发挥NVMe SSD的性能。通常NVMe SSD控制器可以提供128个IO提交和结束队列,NVMe驱动会根据处理器的核数利用SSD控制器提供的硬件能力,实现IO的并发处理。在驱动层面,可以绑定处理器与IO队列,达到IO并发处理的效果。在这种情况下,业务线程一定要多线程并发利用处理器,才可...



