顶会FAST24最佳论文|阿里云块存储架构演进的得与失-4.EBS不同架构性能提升思路

news2024/10/6 21:48:51

3.1 平均延迟与长尾延迟

虚拟磁盘(VD)的延迟是由其底层架构决定的,具体而言,取决于请求所经历的路径。以EBS2为例,VD的延迟受制于两跳网络(从BlockClient到BlockServer,再至ChunkServer)的延迟、软件栈处理时间(即BlockClient、BlockServer和Pangu组件的处理时间)以及SSD的I/O操作时间。因此,延迟的弹性本质上是粗粒度的,不同架构(比如EBS2和EBS3)下的各种时间开销级别不同。针对不同代际的EBS,在其最繁忙的生产集群的前10%中,测量了8 KiB随机读写操作的平均延迟构成。由于EBS1已不再部署且其硬件(如HDD和10Gbps网络)已过时,故未将其纳入比较。

图片

  • 硬件处理的主导作用:不论是EBS2还是EBS3,大部分总延迟都是由硬件处理造成的,包括第一跳和第二跳网络(橙色和粉色标记)以及磁盘I/O(黄色标记)。

  • EBS3的特性:尽管EBS3在前端增加了EC(纠错编码)和压缩处理的时间,但因数据体积减小,网络传输时间(即第二跳延迟)相应减少,这使得EBS3与EBS2的总体延迟相近。这一结果反映了EBS3在优化数据处理与传输时间之间的平衡。

  • 读写差异:读操作与写操作的主要区别在于硬盘I/O延迟。值得注意的是,EBS2采用的是TLC SSD,而EBS3则使用QLC SSD。这两种类型SSD在性能特性上有所不同,特别是写入速度和耐久性,这也会影响它们的I/O延迟表现。

扩展阅读:

  • 深度剖析:大容量QLC SSD为何遭疯抢?

  • 全景解析SSD IO QoS性能优化

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

上述分析侧重于平均延迟,但长尾延迟QoS(即极端情况下的延迟)也是衡量存储系统性能的关键指标。长尾延迟通常受软件处理的不确定性、资源竞争、以及硬件突发状况等因素影响。在EBS2和EBS3中,通过优化软件栈处理流程,比如分离客户端I/O与后台任务(如垃圾回收),以及采用更高效的数据处理算法,可以减少由软件引起的大延迟事件,从而改善整体的长尾延迟表现。

3.2 IOPS与吞吐带宽

系统整体的IOPS和吞吐量上限主要受到BlockClient的限制。BlockClient作为客户端请求与后端存储服务交互的前端组件,它的处理和转发能力直接影响了整个系统能够处理的IOPS和数据吞吐量。具体来说,BlockClient处理请求从内核空间到用户空间的转换,并进一步到硬件卸载(如FPGA或专用加速器),这一系列操作构成了性能的瓶颈。

  • EBS2的改进在EBS2中,通过引入用户空间TCP堆栈处理I/O请求,将I/O处理从内核空间转移到用户空间,以减少内核态与用户态之间的切换开销,从而提升性能。

  • EBS3的进一步优化EBS3在此基础上更进一步,利用通用FPGA(Field-Programmable Gate Array)硬件卸载技术,直接绕过CPU处理数据移动、数据块CRC校验和数据包传输,显著提升了I/O处理能力。EBS3配备2x100G网络,但此时瓶颈转移到了PCIe总线带宽上

  • 吞吐量与IOPS随HT数量增加:下图展示了BlockClient在不同优化措施下,最大吞吐量和IOPS的变化情况。结果显示,对于EBS2,当使用2x25Gbps网络时,吞吐量主要受限于网络能力。而在EBS3的2x100G网络配置下,瓶颈变为PCIe带宽。只要网络带宽允许,增加超线程(HT)数量就能提升IOPS

图片

为了更好地适应不同工作负载的需求,引入了自适应性能级别(AutoPL)的虚拟磁盘。这意味着用户可以根据实际需求动态调整IOPS和吞吐量,而不需要改变磁盘的容量配置。这种机制为用户提供了一种灵活的方式来应对瞬时或周期性的性能高峰。

  • Base + Burst策略:为了高效分配IOPS和吞吐量给不同的虚拟磁盘(VDs),采用基础(Base)与突发(Burst)相结合的策略。

    • 基础吞吐量:确保每个VD都能获得一个最低的、稳定的IOPS和吞吐量保障(Base throughput),满足基本的性能需求,确保服务质量。

    • 突发吞吐量:在基础之上,系统会根据当前资源的可用情况,尽力满足VD的额外性能需求(Burst throughput)。这种策略允许VD在需要时短时间内超过其基础配额,以应对短暂的高负载情况,而不会长期影响其他VD的性能。

3.3 容量

在EBS的设计中,实现容量弹性的能力是其作为云块存储服务的基本要求之一。为了满足这一需求,EBS引入了多项关键特性来增强其在容量管理上的灵活性和效率,具体包括以下两点:

  • 分段设计带来的无缝VD调整:EBS利用分段设计(Segmentation Design)实现了虚拟磁盘(VD)容量的无缝调整,即用户可以轻松地对VD进行扩容或缩容操作,这一过程通过添加或移除所谓的“SegmentGroups”来完成。SegmentGroups作为存储空间分配的逻辑单元,使得EBS能够快速响应用户对存储容量变化的需求,而无需中断服务。目前,EBS支持的虚拟磁盘容量范围从1 GiB到64 TiB,覆盖了从小型应用到大型数据库等多种存储需求场景。

图片

  • 快速克隆:server-less应用的特点之一是需要在短时间内快速分配大量资源,如虚拟磁盘。为此,EBS利用了Pangu文件系统的硬链接特性,这一特性允许在存储集群内部通过下载单个快照来克隆多个磁盘,大大加快了资源部署的速度。基于这一技术,EBS2能够实现令人印象深刻的性能指标:在1分钟内创建多达10,000个虚拟磁盘,每个磁盘大小为40 GiB。这样的能力对于需要频繁创建和复制存储环境的场景(如开发测试、大规模部署、灾备演练等)来说,是极其宝贵的,它极大提升了资源分配的效率和响应速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1908034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

顾客排队购买蛋挞问题(算法与数据结构设计)

课题内容和要求 顾客排队买蛋挞问题。有N个顾客排队,每人最多买M个。烘焙员每次烘焙1到K个蛋挞放入盘中,顾客只能购买盘中的蛋挞,未达到M个需重新排队。输出每个顾客购买情况和完成顺序。 例如—— 输入:N9,K5&#x…

游戏软件缺少d3dx9_42.dll怎么修复?五种方法助你轻松解决

D3DX9_42.dll的丢失是一种常见的操作系统异常问题,由于日常使用电脑时的不当操作,可能会导致一些dll文件的丢失,D3DX9_42.dll就是其中之一。对于这种情况,我们可以通过谨慎的修复来解决。以下是一种科学的解决D3DX9_42.dll丢失的方…

【面试题】串联探针和旁挂探针有什么区别?

在网络安全领域中,串联探针和旁挂探针(通常也被称为旁路探针)是两种不同部署方式的监控设备,它们各自具有独特的特性和应用场景。以下是它们之间的主要区别: 部署方式 串联探针:串联探针一般通过网关或者…

刷题(day01)

1、leetcode485.最大连续1的个数 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.…

Linux环境部署Python Web服务

“姑娘,再见面就要靠运气了,可别装作不认识,那句“好久不见”可干万别打颤…” 将使用 Python 编写的后端 API 部署到 Linux 环境中,可以按照以下详细步骤操作。本文将涵盖环境准备、API 编写、使用 Gunicorn 作为 WSGI 服务器、配…

C#反射基本应用

1、反射 反射是.NET Framework的一个特性,它允许在运行时获取类型的信息以及动态创建对象,调用方法,以及访问字段和属性。 2、代码 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy…

运维锅总详解系统设计原则

本文对CAP、BASE、ACID、SOLID 原则、12-Factor 应用方法论等12种系统设计原则进行分析举例,希望对您在进行系统设计、理解系统运行背后遵循的原理有所帮助! 一、CAP、BASE、ACID简介 以下是 ACID、CAP 和 BASE 系统设计原则的详细说明及其应用举例&am…

【小鸡案例】表单focus和blur事件用法

input中有2个属性,一个是focus获取焦点,一个是blur失去焦点。获取焦点就是我们点击输入框时输入框被选中;失去焦点即点击输入框以外的区域,今天就用这两种属性做一个点击输入框的动画效果。 先写个输入框,代码如下&am…

如何使用 pytorch 创建一个神经网络

我已发布在:如何使用 pytorch 创建一个神经网络 SapientialM.Github.io 构建神经网络 1 导入所需包 import os import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets, transforms2 检查GPU是否可用 dev…

Nacos 进阶篇---集群:选举心跳健康检查劳动者(九)

一、引言 本章将是我们第二阶段,开始学习集群模式下,Nacos 是怎么去操作的 ? 本章重点: 在Nacos服务端当中,会去开启健康心跳检查定时任务。如果是在Nacos集群下,大家思考一下,有没有必要所有的…

[FreeRTOS 基础知识] 任务通知 概念

文章目录 任务通知 定义FreeRTOS 任务通知机制 任务通知 定义 实时操作系统(RTOS)的任务通知机制是一种用于任务间通信和同步的机制。在FreeRTOS中,任务通知允许一个任务向另一个任务发送通知,表明某个事件已经发生或者某些条件已…

鸿蒙语言基础类库:【@ohos.url (URL字符串解析)】

URL字符串解析 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入…

【9-2:RPC设计】

RPC 1. 基础1.1 定义&特点1.2 具体实现框架1.3 应用场景2. RPC的关键技术点&一次调用rpc流程2.1 RPC流程流程两个网络模块如何连接的呢?其它特性RPC优势2.2 序列化技术序列化方式PRC如何选择序列化框架考虑因素2.3 应用层的通信协议-http什么是IO操作系统的IO模型有哪…

【Excel技巧大揭秘】如何轻松绕过Excel工作表保护密码?

在日常工作中,我们时常会遇到设置了工作表保护的Excel文件,本意是为了数据安全,但偶尔在急需编辑文件时却遗忘了密码,这无疑让人感到头疼。面对这样的困境,别担心,本文将为您揭秘两种高效解决策略&#xff…

go语言day12 包 init() time包 file包

包 包中的 结构体 及结构体属性 方法 都可以通过设置首字母大小写来实现权限访问,首字母大写任何包中都可以访问,首字母小写只在同包中可以访问。 再导入包go文件时,可以给.go文件取别名。 在导入的包名前加入 _ 意思是调用该包的初始…

OpenHarmony 入门——单元测试UnitTest快速入门

引言 OpenHarmony 的单元测试(UnitTest)是一个关键的软件开发过程,它确保代码的各个部分能够按预期工作,OpenHarmony的测试框架中提供了很多种的单元测试,今天简单介绍下UnitTest 类型的TDD测试。 OpenHarmony 的TDD …

尚品汇-(十五)

&#xff08;1&#xff09;快速入门 SpringBoot形式创建 Maven形式创建&#xff1a; 加入依赖&#xff1a; 创建启动类&#xff1a; 设置头文件 就想Jsp的<%Page %>一样 &#xff0c;Thymeleaf的也要引入标签规范。不加这个虽然不影响程序运行&#xff0c;但是你的idea…

【楚怡杯】职业院校技能大赛 “Python程序开发”赛项样题三

Python程序开发实训 &#xff08;时量&#xff1a;240分钟&#xff09; 中国XX 实训说明 注意事项 1. 请根据提供的实训环境&#xff0c;检查所列的硬件设备、软件清单、材料清单是否齐全&#xff0c;计算机设备是否能正常使用。 2. 实训结束前&#xff0c;在实训平台提供的…

vue项目实现堆叠卡片拖动切换效果

实际效果 实现流程 1. 实现卡片位置堆叠 将父元素的 position 设置成relative &#xff0c;卡片的position 设置成 absolute 即可。 2. 消除图片的移动 如果卡片上有图片&#xff0c;默认拖动的时候就会导致像上图一样变成了选中图片移动&#xff0c;从而没法触发拖动事件。消…

用Vue3和Plotly.js绘制交互式3D小提琴图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue 中使用 Plotly.js 创建小提琴图 应用场景介绍 小提琴图是一种统计图&#xff0c;用于显示数据的分布和中心趋势。它结合了箱线图和密度图的特点&#xff0c;可以直观地展示数据的分散性和形状。 代码基本…