聊聊QD=1:下一代非易失性存储(NG-NVM)对PCIe SSD和SSD驱动器意味着什么
聊聊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驱动器意味着什么相关推荐
- SNIA NVM 峰会: NVDIMMs、编程模型及下一代非易失性存储
SNIA NVM 峰会: NVDIMMs.编程模型及下一代非易失性存储 Stephen Bates (@stepbates) 今年1月25日,我有幸参加了于加州圣何塞举办的SNIANVM峰会.SNIA ...
- 英特尔在中国投资55亿美元非易失性存储项目投产
美国英特尔公司在中国投资55亿美元建设的世界最先进非易失性存储器制造工厂,于25日在辽宁省大连市金普新区正式投产. 英特尔公司是全球最大的个人计算机零件和CPU制造商.2015年10月,英特尔在中国的 ...
- 【Computer Organization笔记23】非易失性存储:磁表面存储设备,磁盘的访问过程,RAID技术
本次笔记内容: P45 计算机组成原理(45) P46 计算机组成原理(46) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...
- ESP32学习笔记(23)——NVS(非易失性存储)接口使用
一.简介 非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据. NVS适合存储一些小数据,如果对象占用空间比较大,使用负载均衡的FAT文件系统. 如果NVS分区被截断,比如更改分 ...
- Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例
Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例 NVS非易失性存储库介绍 非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据.本文档将详细介绍 NVS 常用 ...
- 【MicroPython ESP32】NVS数据非易失性存储示例讲解说明
[MicroPython ESP32]NVS数据非易失性存储示例讲解说明 ✨本案例基于Thonny平台开发.✨
- [ESP8266学习笔记]components_nvs 非易失性存储 Non-Volatile Storage(NVS),保存数据到flash
1.简介 有时我们需要保存一些信息,然后在下次启动时使用. 我们希望这些数据在掉电的时候不会丢失.esp8266没有自己的rom,所以我们需要保存在外部flash中. 官方已经为我们提供了很多api, ...
- ESP32-IDF开发实例-非易失性存储(NVS)数据存取
非易失性存储(NVS)数据存取 ESP32是一系列高度集成的.专为移动设备.可穿戴电子产品设计的物联网模块,其集成了天线开关.RF balun.功率放大器.低接收噪声放大器,滤波器.电源管理模块等,可 ...
- ESP32-C3入门教程 基础篇⑪——Non-Volatile Storage (NVS) 非易失性存储参数的读写
文章目录 一.前言 二.NVS介绍 三.操作流程 3.1 读操作流程 3.2 写操作流程 四.关键函数 五.随机整数 读写示例 六.对象/数组 读写示例 七.总结 八.参考 一.前言 本文基于VS C ...
最新文章
- Android studio 代码字体模糊的处理方法
- Java 中的 XML:Java 文档模型的用法
- java多线程 门闩_Java线程与并发编程实践----同步器(倒计时门闩,同步屏障)...
- 小看--发布-订阅(观察者)模式
- 转载:页面加载swf插件:swfobject
- lsof找回误删的文件
- 深入理解C/C++ [Deep C (and C++)] (1)
- 【渝粤教育】电大中专中成药 (2)作业 题库
- 关于容斥定理、勾股数公式、排列组合置换公式的总结
- 5、基于注解的AOP配置
- 用Go建千亿级微服务 分析详细,适合新手理解概念
- ECMAScript(pink)
- 深圳大学计算机专业保研率,深圳最好的公立大学(本科阶段)南方科技大学,2018级保研率应该会提高到30%...
- 爱博精电亮相四川省节能环保品牌推广全川行——乐山站
- Sixth season fifteenth and sixteenth episode,things that could have been......(没有如果)
- 在线IPv4转换为IPV6,IPV6转为IPV4的工具
- python网球比赛模拟主持稿_主持人大赛模拟主持环节情景
- 2020美赛E题解题方法
- airflow调度方案
- 云XR平台支持沉浸式体验应用快速落地
热门文章
- 风火全区维护结束 商城第一版新春上线
- 交通堵塞?打个直升机赶时间吧!| 一周科技热闻回顾
- 现实照片一键动漫化,打造专属自己的漫画脸—— AnimeGAN v2 C++推理
- PhotoShop CS3 批量处理图片
- magento 赠品_免费赠品发布:10个名片模板(PSD)
- Kibana:Kibana 入门 (一)
- 基于51单片机数控可调恒流源设计(实物图+原理图+PCB+论文)
- 最新版Maven3.6.3下载与安装
- 空调温控器方案芯片DSH550
- 数据看世界|9幅动态图5个数据指标带你了解新冠肺炎的全球现状!!