订阅移动开发RSS CSDN首页> 移动开发

在用户空间内构建开源存储堆栈

发表于2016-01-25 17:43| 次阅读| 来源CSDN| 0 条评论| 作者csdn

摘要:随着存储需求每年成倍增长,存储硬件迅速发展,以满足需求。 凭借 3D XPoint™ 技术等新一代技术的高性能,延迟将不再以毫秒为单位,而以纳秒为单位。 但这种新一代存储的崛起只是将 I/O 瓶颈从存储介质转移到网络和软件层面,我们预测这种转变将推动用户模式云存储的发展。 虽然有 Containers*、Ceph...

摘要:

随着存储需求每年成倍增长,存储硬件迅速发展,以满足需求。 凭借 3D XPoint™ 技术等新一代技术的高性能,延迟将不再以毫秒为单位,而以纳秒为单位。 但这种新一代存储的崛起只是将 I/O 瓶颈从存储介质转移到网络和软件层面,我们预测这种转变将推动用户模式云存储的发展。 虽然有 Containers*、Ceph*、Swift*、Hadoop* 等许多商业项目和在用户空间中运行的专有软件,但开发面向存储系统的开源构建模块。

背景

存储性能有两个主要因素:延迟和吞吐量。 延迟是指移动数据时的时间延迟,吞吐量是指在特定时间传输的数据量。

存储架构必须围绕其介质的属性进行优化。 例如,硬盘必须考虑三个重要特征:

  1. 由于硬盘和存储子系统的缓冲区需要缓存层,读写延迟很大。
  2. 以序列模式而非随机模式执行时,读写成本显著降低。
  3. I/O 性能受到当前活动的轴旋转速度和数量的限制。
  4. 机械硬盘和隔离控制器的低吞吐量。

这些硬件和架构限制在优化存储方面产生了额外的设计要点:

  1. 对于 I/O,一种基于中断的模式更为高效。
  2. 针对硬盘高速缓存使用 DRAM 可缩短读取和连续写入延迟。
  3. 针对固态盘使用 DRAM 可减少硬件故障,缩短访问时间。
  4. 减少处理器和存储介质之间的设备数量可缩短延迟。

Figure 1 – Performance improves as data moves closer to the processor

图 1 – 随着数据越来越接近处理器,性能逐步改进

硬件突破

那么如何提高性能,缩短延迟呢? 首先看一下硬件,特别是密度和功率要求,并从 1 跳转为 CPU。

硬件方面的多个突破也提高了性能、吞吐量和容量密度,缩短了延迟,降低了功率要求。

  • 使用处理器的集成非易失性内存总线 (NVMe) 接口消除外部控制器(从 1 跳变为 0 跳)
  • 通过迁移到非易失性内存,无需借助电源来不断更新数据
  • 创建新型固态盘,包括可以使用 3D XPoint 内存、采用英特尔 Optane™ 技术的固态盘,与 NAND 相比,这种固态盘的密度提高了 10 倍,速度提高了 1000 倍。

Figure 2 – Storage performance latency improvement

图 2 – 改进存储性能延迟

如图 2 所示,15k HDD 拥有较小的控制器和软件延迟,延迟约为 2000 微秒。 固态存储消除了机械延迟、将控制器移至 CPU 消除了额外步骤以及持续的软件改进,这些因素均大大缩短了延迟。

开源用户模式存储堆栈的原因

改进并不仅限于硬件。 不使用内核模式,在用户空间中开发新一代存储设备和架构有多个原因:

 

原因 1: 改进可靠性-可用性-可服务性 (RAS)

  • 用户模式驱动程序无需重启便可重启,而任何内核模式驱动程序重启会强制重启。
  • 用户模式驱动程序可提高数据采集和记录的灵活性。

原因 2: 用户空间模式的许可易用性

  • 存储性能开发套件 (SPDK) 基于 Berkeley 软件分发许可证(针对 NVMe 或 CBDMA 驱动程序)或英特尔专用许可证(针对用户空间网络堆栈和 iSCSI 目标)提供许可。 在非 GPL 项目中,用户空间代码是免费使用的。

R原因 3: 效率

  • 技术原因:内核中断处理和上下文切换开销会占用处理器资源,而 SPDK NVMe 轮询模式驱动程序架构可提供高效的性能,并允许单个处理器内核处理数百万 IOPS。
  • 翻译后援缓冲器 (TLB) 项目被清除,缓存项目被驱逐。

原因 4: 设计简化

  • 低延迟 NVM 介质可消除电池供电 DIMM。
  • 用户空间驱动程序可直接应用到基于服务器的存储和软件定义架构中。
  • 由于物理介质延迟下降,因此除要求最苛刻的工作负载以外,不需要使用大型 DRAM 高速缓存。

结论

通过支持云存储开发人员在用户空间中工作,可帮助他们改进性能并简化开发工作,以便他们能够充分利用英特尔 Optane™ 技术等新 NVM 技术的潜在性能。 英特尔将开源数据平面开发套件 (DPDK) 的高性能数据包处理框架应用到采用存储性能开发套件的存储环境中。 SPDK 是一套驱动程序和一个完整的参考存储架构,包含 Linux 用户空间,针对通常需要上下文切换到内核的功能。 DPDK 和 SPDK 可作为开源使用。

查看全文

0
0