聊聊QD=1:下一代非易失性存储(NG-NVM)

对PCIeSSD和SSD驱动器意味着什么

Stephen Bates (@stepbates)

简介

我热爱SSD!SSD提供了高性能、低延迟的存储访问,从而彻底变革了数据中心。低延迟改变了数据中心的软件堆栈。我在随后的若干博文中将深入讨论延迟的问题,从驱动的延迟开始。

评测NVMeSSD在QD=1的条件下的随机读延迟比想象的更难。但可以将其分解如下:

  • 介质延迟
  • 控制器延迟
  • 网格延迟
  • 驱动程序/操作系统延迟/CPU延迟

在随后的几篇博文中,我将分别展开阐述这四种延迟。本篇博文将从第四点:驱动程序/操作系统延迟/CPU延迟开始。其中涉及的变量非常多,因此讨论会很有意思。选择哪个操作系统呢?假设选择Linux内核的哪个版本?哪一种CPU(x86,ARM,PowePC,Sparc)?多少个CPU?多少个HW线程、存储子系统?如何处理中断?是采用轮询还是中断驱动?等等问题均需要一一面对。

NVMe驱动——速度是很快,但够快了吗?

包括PMC在内的许多公司煞费苦心地将NVMe设计得速度很快,比传统的存储协议(看看单个PCIeSSD如何在OTLP数据库应用中胜出8块和4块SATA盘的配置)要快得多,但是对下一代NVM(NG-NVM)而言是否够快呢?为了测试这一点,我们在一块Intelx86 CPU和PMCFlashtec NVRAM加速卡之间插入了一台PCIe逻辑分析仪,进行了测量并取得了若干很有意思的结果。

随机读延迟由几个部分构成,可以分为两部分:SSD控制的一部分和主机控制的一部分。

对SSD而言,延迟控制得非常好。下图中可以看出,我们如何将延迟控制得非常低(平均低于9us)且范围非常窄(总是优于11us)。

对于主机而言,延迟则并不总是控制得那么好。可以看到,非SSD造成的延迟平均数只有5us,但测量期间的最大值则超过了30us。

非SSD造成的延迟如此大的变化幅度来源于何处呢?经过深入分析,我们发现,它的根源是处理MSI-X中断及其将此中断传递回OS。许多因素可能影响到这个步骤所花费的时间,从而影响到延迟和服务质量。

修理驱动程序!

那么,我们怎么处理中断带来的延迟问题呢?有意思的是,当前有几件互不相干的事正好解决了这个问题。

Intel刚刚发布了存储高性能开发者程序包(SPDK),试图改善NVMeSSD的性能。此处可以了解更多关于SDPK的详情。SPDK从两个方面来试图解决我此前提出的问题:

  • 它采用轮询的方式查询完成队列,而不是采用MSI-X中断的方式。
  • 在用户空间中运行,避免了从内核空间跳跃到用户空间涉及到的上下文切换

此外,还有在Linux内核的块层对块设备(包括NVMe设备)增加轮询的相关工作正在进行中。此处可以查阅现有的代码库。

我们将这两种方法(SPDK和轮询驱动)与传统的驱动进行了比较。下表总结了延迟、CPU负载和吞吐量(QD=1)的结果。

从中可见,SPDK和轮询驱动得到的IOPS和延迟QoS结果优于传统方案,代价是CPU负载的增加。轮询驱动比SPDK的结果略为逊色,但优点在于它与Linux内核中的块层相连,因此可以提供SDPK无法提供的服务。此外,在将轮询驱动集成到上游内核之前,Linux内核的工作群体正在努力对其进行改进。

结论

随着SSD的速度也日益提升,开始利用NG-NVM(比如PMCFlashtec NVRAM或Intel的OptaneSSD),在驱动程序和操作系统中提供I/O服务的开销也日渐显著。由于过去对存储速度较慢(中断),而现在的存储速度可能非常之快,从前的做法不再适用。这对整个计算机软件堆栈都有影响,涵盖了高速缓存,到分级存储,再到快速主要外部存储多各个领域。该一根本性的转变也带来了前所未有的机会。相关的工作正逐渐渗透到操作系统当中、应用当中,甚至电脑硬件当中。我将在下一篇博文中谈及此事。



聊聊QD=1:下一代非易失性存储(NG-NVM)对PCIe SSD和SSD驱动器意味着什么相关推荐

  1. SNIA NVM 峰会: NVDIMMs、编程模型及下一代非易失性存储

    SNIA NVM 峰会: NVDIMMs.编程模型及下一代非易失性存储 Stephen Bates (@stepbates) 今年1月25日,我有幸参加了于加州圣何塞举办的SNIANVM峰会.SNIA ...

  2. 英特尔在中国投资55亿美元非易失性存储项目投产

    美国英特尔公司在中国投资55亿美元建设的世界最先进非易失性存储器制造工厂,于25日在辽宁省大连市金普新区正式投产. 英特尔公司是全球最大的个人计算机零件和CPU制造商.2015年10月,英特尔在中国的 ...

  3. 【Computer Organization笔记23】非易失性存储:磁表面存储设备,磁盘的访问过程,RAID技术

    本次笔记内容: P45 计算机组成原理(45) P46 计算机组成原理(46) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  4. ESP32学习笔记(23)——NVS(非易失性存储)接口使用

    一.简介 非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据. NVS适合存储一些小数据,如果对象占用空间比较大,使用负载均衡的FAT文件系统. 如果NVS分区被截断,比如更改分 ...

  5. Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例

    Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例 NVS非易失性存储库介绍 非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据.本文档将详细介绍 NVS 常用 ...

  6. 【MicroPython ESP32】NVS数据非易失性存储示例讲解说明

    [MicroPython ESP32]NVS数据非易失性存储示例讲解说明 ✨本案例基于Thonny平台开发.✨

  7. [ESP8266学习笔记]components_nvs 非易失性存储 Non-Volatile Storage(NVS),保存数据到flash

    1.简介 有时我们需要保存一些信息,然后在下次启动时使用. 我们希望这些数据在掉电的时候不会丢失.esp8266没有自己的rom,所以我们需要保存在外部flash中. 官方已经为我们提供了很多api, ...

  8. ESP32-IDF开发实例-非易失性存储(NVS)数据存取

    非易失性存储(NVS)数据存取 ESP32是一系列高度集成的.专为移动设备.可穿戴电子产品设计的物联网模块,其集成了天线开关.RF balun.功率放大器.低接收噪声放大器,滤波器.电源管理模块等,可 ...

  9. ESP32-C3入门教程 基础篇⑪——Non-Volatile Storage (NVS) 非易失性存储参数的读写

    文章目录 一.前言 二.NVS介绍 三.操作流程 3.1 读操作流程 3.2 写操作流程 四.关键函数 五.随机整数 读写示例 六.对象/数组 读写示例 七.总结 八.参考 一.前言 本文基于VS C ...

最新文章

  1. Android studio 代码字体模糊的处理方法
  2. Java 中的 XML:Java 文档模型的用法
  3. java多线程 门闩_Java线程与并发编程实践----同步器(倒计时门闩,同步屏障)...
  4. 小看--发布-订阅(观察者)模式
  5. 转载:页面加载swf插件:swfobject
  6. lsof找回误删的文件
  7. 深入理解C/C++ [Deep C (and C++)] (1)
  8. 【渝粤教育】电大中专中成药 (2)作业 题库
  9. 关于容斥定理、勾股数公式、排列组合置换公式的总结
  10. 5、基于注解的AOP配置
  11. 用Go建千亿级微服务 分析详细,适合新手理解概念
  12. ECMAScript(pink)
  13. 深圳大学计算机专业保研率,深圳最好的公立大学(本科阶段)南方科技大学,2018级保研率应该会提高到30%...
  14. 爱博精电亮相四川省节能环保品牌推广全川行——乐山站
  15. Sixth season fifteenth and sixteenth episode,things that could have been......(没有如果)
  16. 在线IPv4转换为IPV6,IPV6转为IPV4的工具
  17. python网球比赛模拟主持稿_主持人大赛模拟主持环节情景
  18. 2020美赛E题解题方法
  19. airflow调度方案
  20. 云XR平台支持沉浸式体验应用快速落地

热门文章

  1. 风火全区维护结束 商城第一版新春上线
  2. 交通堵塞?打个直升机赶时间吧!| 一周科技热闻回顾
  3. 现实照片一键动漫化,打造专属自己的漫画脸—— AnimeGAN v2 C++推理
  4. PhotoShop CS3 批量处理图片
  5. magento 赠品_免费赠品发布:10个名片模板(PSD)
  6. Kibana:Kibana 入门 (一)
  7. 基于51单片机数控可调恒流源设计(实物图+原理图+PCB+论文)
  8. 最新版Maven3.6.3下载与安装
  9. 空调温控器方案芯片DSH550
  10. 数据看世界|9幅动态图5个数据指标带你了解新冠肺炎的全球现状!!