手机或平板扫扫即可继续访问
我热爱SSD!SSD提供了高性能、低延迟的存储访问,从而彻底变革了数据中心。低延迟改变了数据中心的软件堆栈。我在随后的若干博文中将深入讨论延迟的问题,从驱动的延迟开始。
驱动程序/操作系统延迟/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而言,延迟控制得非常好。下图中可以看出,我们如何将延迟控制得非常低(平均低于9us)且范围非常窄(总是优于11us)。
非SSD造成的延迟如此大的变化幅度来源于何处呢?经过深入分析,我们发现,它的根源是处理MSI-X中断及其将此中断传递回OS。许多因素可能影响到这个步骤所花费的时间,从而影响到延迟和服务质量。
那么,我们怎么处理中断带来的延迟问题呢?有意思的是,当前有几件互不相干的事正好解决了这个问题。
它采用轮询的方式查询完成队列,而不是采用MSI-X中断的方式。
在用户空间中运行,避免了从内核空间跳跃到用户空间涉及到的上下文切换
此外,还有在Linux内核的块层对块设备(包括NVMe设备)增加轮询的相关工作正在进行中。可以查阅现有的代码库。
从中可见,SPDK和轮询驱动得到的IOPS和延迟QoS结果优于传统方案,代价是CPU负载的增加。轮询驱动比SPDK的结果略为逊色,但优点在于它与Linux内核中的块层相连,因此可以提供SDPK无法提供的服务。此外,在将轮询驱动集成到上游内核之前,Linux内核的工作群体正在努力对其进行改进。
NVRAM或Intel的OptaneSSD),在驱动程序和操作系统中提供I/O服务的开销也日渐显著。由于过去对存储速度较慢(中断),而现在的存储速度可能非常之快,从前的做法不再适用。这对整个计算机软件堆栈都有影响,涵盖了高速缓存,到分级存储,再到快速主要外部存储多各个领域。该一根本性的转变也带来了前所未有的机会。相关的工作正逐渐渗透到操作系统当中、应用当中,甚至电脑硬件当中。我将在下一篇博文中谈及此事。??
我热爱SSD!SSD提供了高性能、低延迟的存储访问,从而彻底变革了数据中心。低延迟改变了数据中心的软件堆栈。我在随后的若干博文中将深入讨论延迟的问题,从驱动的延迟开始。
驱动程序/操作系统延迟/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而言,延迟控制得非常好。下图中可以看出,我们如何将延迟控制得非常低(平均低于9us)且范围非常窄(总是优于11us)。
非SSD造成的延迟如此大的变化幅度来源于何处呢?经过深入分析,我们发现,它的根源是处理MSI-X中断及其将此中断传递回OS。许多因素可能影响到这个步骤所花费的时间,从而影响到延迟和服务质量。
那么,我们怎么处理中断带来的延迟问题呢?有意思的是,当前有几件互不相干的事正好解决了这个问题。
它采用轮询的方式查询完成队列,而不是采用MSI-X中断的方式。
在用户空间中运行,避免了从内核空间跳跃到用户空间涉及到的上下文切换
此外,还有在Linux内核的块层对块设备(包括NVMe设备)增加轮询的相关工作正在进行中。可以查阅现有的代码库。
从中可见,SPDK和轮询驱动得到的IOPS和延迟QoS结果优于传统方案,代价是CPU负载的增加。轮询驱动比SPDK的结果略为逊色,但优点在于它与Linux内核中的块层相连,因此可以提供SDPK无法提供的服务。此外,在将轮询驱动集成到上游内核之前,Linux内核的工作群体正在努力对其进行改进。
NVRAM或Intel的OptaneSSD),在驱动程序和操作系统中提供I/O服务的开销也日渐显著。由于过去对存储速度较慢(中断),而现在的存储速度可能非常之快,从前的做法不再适用。这对整个计算机软件堆栈都有影响,涵盖了高速缓存,到分级存储,再到快速主要外部存储多各个领域。该一根本性的转变也带来了前所未有的机会。相关的工作正逐渐渗透到操作系统当中、应用当中,甚至电脑硬件当中。我将在下一篇博文中谈及此事。??