Pangu, More Than Capacity: Performance-Oriented Evolution of Pangu in Alibaba
本文介绍了Pangu存储系统如何随着硬件技术(RDMA、NVMe)和商业模式不断演变,提供了100us的i/o延迟水平,高可靠性,高性能的存储服务。
1 Append-Only File System
1.1、FlatLogFile接口
为上层存储服务提供了简单,统一的接口,需要确保数据操作在这个接口上。
1.2、Heavyweight Client
负责块服务器的数据操作和主服务器的元数据信息检索和更新
1.3 Append-only Chunk Managment
原本的文件系统将文件和其元数据使用两个ssd写操作写入ssd中,这样会带来高延迟和对ssd寿命造成损害。因此Pangu将其chunk设计为包含了元数据,这样就只有一次写操作。在容错方面,在写入到存储介质过程中会有一些检查点产生,当出错之后,服务器会从检查点开始加载元数据然后与块中的元数据进行比较。
1.4 元数据操作优化
namespace service为目录树和文件管理提供服务,stream service为块信息提供服务。流是一组块的抽象。同一流中的块属于同一个文件。这两种服务都使用分布式架构来更好地扩展可扩展性。他们通过考虑元数据局部性和负载平衡(即,首先按目录树划分,然后通过散列划分)来划分元数据。
1)并行的元数据处理
2)变长的大数据块1MB~2GB
3)在客户端上缓存块信息
4)块信息的批量查询
5)推测块信息预取。读的时候返回更多的信息,写的时候返回更多的空间
6)连续操作合并为一个请求发送
2、Chunkserver USSOS
块服务器负责所有的数据操作,传统的模式会消耗大量的cpu资源,在新技术RDMA和NVMe的支持下,可以实现高性能。提供一个统一的用户态存储软件平台。
2.1 User-Level Memory Management
一个请求将被一个线程完全处理,减少了因为上下文切换带来的开销。为什么以前不这么做?
有一大块的页存储空间作为网络栈和存储栈的共享内存,数据通过rdma传输到这个空间中。这样做的话在数据传输和存储过程中实现了网络和存储堆栈之间的零副本。
2.2 User-Space Scheduling Mechanism
1)引入心跳机制,防止一个请求一直占用一个线程
2)设置优先级队列,不同的请求进入不同的队列
3)在轮询和事件驱动模式之间采用切换机制,默认是事件驱动,有网卡的请求就变为轮询,一段时间后改回来
2.3 Append-Only USSFS
为FlatLogFile定制的一种紧凑、高性能的用户空间存储文件系统。
1)首先,它可以充分利用自包含的块布局,在不使用页面缓存和期刊等机制的情况下显著减少数据操作的数量
2)它没有像Ext4这样的inode和文件目录之间建立层次关系
3)使用轮询模式而不是 Ext4 等中断通知机制来最大化 SSD 的性能。
3、High Performance SLA Guarantee
3.1 Chasing
防止系统抖动对备份造成影响。在数据备份中,一般是3个备份,如果写了2个之后,写第三个的时候没有返回成功。会再给t的时间等待,如果还是没有返回成功,会看已经写了多少,如果未写完的部分小于k,那么会重新尝试。如果大于k,那么客户端会把这个机器上的块密封起来,并且之后不会对这个块有后续操作。然后客户端会重新找机器进行第三个备份。
3.2 Non-stop write
当发生故障时,客户端密封块并向主服务器报告成功编写的数据长度。然后它使用一个新的块来继续编写未完成的数据。写入密封块的数据被破坏,我们使用其他副本将该数据的副本复制到后台流量中的新块。如果没有副本可用,客户端将此数据写入新的数据块
3.3 Backup read
在接收到先发送的读取请求的响应之前,向其他块服务器发送额外的读取请求作为备份,
3.4 Blacklisting
deterministic blacklist: 确定不可用,如果客户端发送的请求可以回复,就移出
non-deterministic blacklist: 有好几次回复的延迟都低于所有服务器的中值,移出的条件得看响应时间
4、Network Bottlenck
高性能的RDMA网络带来两个优化问题:网络带宽扩展以及流量优化
4.1 Bandwidth Expansion
从25Gbps升级到100Gbps,无损RDMA不能处理基于暂停帧的流控制的其他问题(例如,死锁和线头阻塞)采用有损RDMA
4.2 Traffic Optimization
在实际的应用中会出现这样的流量放大问题,写一个文件实际会写入6.375倍大小的数据。提出了EC和data compression
使用EC去替代3副本复制、压缩文件、前端流量和背景流量之间的动态带宽分配
EC是什么
5、Memory Bottleneck
Pangu 中的基本内存瓶颈在于接收器主机中的网络进程(即执行 DMA 操作的 NIC)和应用程序进程(例如,数据复制、数据复制和垃圾收集)之间的内存带宽的高争用。解决办法为如下三种
1)增加小容量的DRAM。因为是内存带宽不足而不是内存容量不足
什么是前端流量何后端流量
2)将RDMA从25Gbps升级为100Gbps,设计了主机速率控制机制来控制注入到网络中的后台流量速率
3)远程直接缓存访问(RDCA)架构,让发送方绕过接收方的内存并直接访问其缓存
6、CPU Bottleneck
CPU因为数据序列化和反序列化、数据压缩和数据CRC计算等操作消耗了许多CPU资源,使CPU成为Pangu的另一个瓶颈。
硬件指令 CPU Wait
硬件/软件协同设计
7、总结
本文介绍了Pangu2.0在新兴的硬件技术下的新设计,这期间遇到了哪些性能瓶颈,又是如何设计解决的。