写点什么

使用 Amazon EBS 优化实例突发功能提高应用程序性能并降低成本

  • 2019-10-07
  • 本文字数:2216 字

    阅读完需:约 7 分钟

使用 Amazon EBS 优化实例突发功能提高应用程序性能并降低成本

2017 年,Amazon EC2 引入 C5 计算密集型实例和 M5 通用型实例。2018 年,我们通过向 EC2 C5 和 M5 实例系列添加高速、超低延迟的本地 NVMe 存储,推出了 EC2 C5d 实例和 M5d 实例。EC2 C5/C5d 和 M5/M5d 实例均以 Nitro 系统为基础构建。AWS 构建的这一软件和硬件集合可实现高性能、高可用性、高安全性以及裸机功能,以降低虚拟化开销。


在 Nitro 系统的设计过程中,我们对真实世界的工作负载进行了分析,意识到需要利用更小的实例大小来通过 Amazon EBS 卷提升性能。我们发现,多数应用程序的存储需求是突发性的,具有短而密集的 I/O 周期,而突发的需求之间存在大量空闲时间。为改善这些工作负载的体验,我们研发了适用于小型实例大小的突发功能。可在 EC2 C5/C5d 和 M5/M5d 实例上使用,该功能使 large、xlarge 和 2xlarge 大小的实例每天能够实现与 4xlarge 实例相同的性能至少 30 分钟。


对具有突增 Amazon EBS 需求的应用程序,您可以根据 CPU 和内存需求调整实例大小,同时仍可满足 EBS 经过优化的实例的性能要求。这种更高的性能还让您能够根据 EBS 经过优化的实例性能对工作流的各个部分进行加速。更快的工作流可以加快作业完成速度并提高资源利用率。这种突发功能最终可以通过调整实例大小并提高总体资源利用率来降低成本。


随着这种性能的提升,您将可以处理意外的需求高峰,且不会对应用程序的性能造成影响。现在,您可以依据历史平均趋势来调整实例大小。这种突发功能可让您在不影响客户体验的前提下,提供更佳性能以承受峰值。

利用 Amazon CloudWatch 指标监控突发使用情况

为了更好地了解性能,基于 Nitro 系统的实例提供 Amazon CloudWatch 指标,以帮助您分析使用情况。您可以依据使用情况确定满足需求的更小实例。


在这些实例中,您可以通过实例级 CloudWatch 操作指标(EBSReadOps 和 EBSWriteOps)和传输的字节(EBSReadBytes 和 EBSWriteBytes)来监控使用情况。有关这些指标的更多信息,请参见列出实例的可用 CloudWatch 指标。默认情况下,这些指标支持基本监控(五分钟一次),但您可以启用详细监控(一分钟一次),不过需要额外支付费用。有关更多信息,请参见 Amazon CloudWatch 定价。


对于 large、xlage 和 2xlarge 实例,我们还提供突发均衡指标。 EBSIOBalance% 用于监控实例的 I/O 突发存储桶,EBSByteBalance% 则用于监控实例的字节突发存储桶。这些指标提供相应突发存储桶中留存的 I/O 或字节积分百分比相关的信息。这些指标以百分比的形式表示,其中 100% 表示该实例已累计达到最大积分数。您可以设置均衡过低时触发的警报。


我们启动一个 m5.large 实例来演示这些指标。然后,为改实例附加一个带有 32000 个预配置 IOPS 的 500GB io1 Amazon EBS 卷。基于 Nitro 系统的实例中附加的 Amazon EBS 卷展示为 NVMe 设备。




首先,我们使用 fio 在 /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol02f2f9a66c2ebfd66 中运行大型数据块 (128KiB) 测试,并监控 EBSIOBalance% 和 EBSByteBalance%。


$ sudo fio –filename= /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol02f2f9a66c2ebfd66 –rw=randread –bs=128k –runtime=2400 –time_based=1 –iodepth=32 –ioengine=libaio –direct=1 –name=large-block-test
复制代码


由于这是一项大型数据块工作负载,因此不会产生足够的 IOPS,耗尽 EBSIOBalance%,而是会耗尽 EBSByteBalance%,如下图所示。



然后我们再运行一个小型数据块测试,了解它对 EBSIOBalance% 和 EBSByteBalance% 造成的影响。


$ sudo fio –filename= /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol02f2f9a66c2ebfd66 –rw=randread –bs=16k –runtime=2400 –time_based=1 –iodepth=32 –ioengine=libaio –direct=1 –name=small-block-test
复制代码


由于这是一个小型数据块测试,会比字节/秒产生更高的 IOPS。因此,EBSIOBalance% 比 EBSByteBalance% 下降更快,如下图所示。



只要 EBSIOBalance% 和 EBSByteBalance% 高于 0%,该实例就可以产生突发性能。当实例的 I/O 活动低于基准率时,突发存储桶会重新填充。测试完成后,我们暂停实例中的所有 I/O。这段非活动时间可让实例的突发存储桶重新填充,如下图中的 EBSIOBalance% 和 EBSByteBalance% 所示。



突发存储桶的重新填充速率为基准速率和实例 I/O 活动之间的差值。例如,m5.large 的基准吞吐率为 60MB/s,基准 IOPS 速率为 3600 IOPS。假设实例的 I/O 活动为 10MB/s 和 1000 IOPS。字节存储桶会以 50MB/s(60MB/s 减 10MB/s)的速率填充。IOPS 存储桶会以 2600 IOPS(3600 IOPS 减 1000 IOPS)的速率填充。有关不同实例的基准速率,请参见 Amazon EBS 优化实例。此外,我们每 24 小时对突发存储桶进行填充,这意味着,该实例每天至少可使用 30 分钟的突发性能。

性能增强

我们持续对 Nitro 系统进行改进。通过增强功能集合,我们将 large、xlarge 和 2xlarge EC2 C5/C5d 和 M5/M5d 实例的最大突发带宽从 2.25Gbps 和 2.12Gbps 提高到了 3.5Gbps。我们还将 EC2 C5/C5d 和 M5/M5d 的最大突发 IOPS 从 16000 IOPS 分别提升到了 20000 IOPS 和 18750 IOPS。所有新的 EC2 C5/C5d 和 M5/M5d 更小型实例都可以享受这些性能提升,且无需额外费用。


有关支持这种突发功能的基于 Nitro 系统的实例列表和相应数据,请参见 Amazon EBS 优化实例。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amazon-ebs-case-function-improve-cost-reduce/


2019-10-07 15:501010
用户头像

发布了 1870 篇内容, 共 134.2 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

【Howe 学 JAVA】Java 类集框架2——集合输出

Howe

Java 集合 输出 类集

MacOS使用指南之我并不需要系统菜单栏

lmymirror

macos 高效工作 完美主义 操作系统 新手指南

找到自己的领域,然后封神

一尘观世界

成长 提升 领域 机遇 趋势

Spring Boot可执行JAR的原理

小判

Spring Boot 类加载 Fat-JAR deflate JAR URL

云函数中使用Python-ORM: Peewee

刘宇

裸机Ubuntu18.04 配置实现人脸识别的第三方库

月夜

dlib face_recognition 人脸识别 环境配置

谈一谈自由职业者的心态

Bob Jiang

自由职业 写作 心态 营销

《Linux就该这么学》笔记(一)

编程随想曲

Linux

Web3极客日报#136

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

Mac 自带软件-聚焦搜索

Winann

macos Mac spotlight

回"疫"录(13):不信谣,不传谣

小天同学

疫情 回忆录 现实纪录 纪实 谣言

《CSS 选择器世界》读书笔记

云走

CSS Java html 读书笔记 大前端 张鑫旭

CTO股权”避坑“,你根本不知道我们多努力

赵新龙

TGO鲲鹏会 股权 CTO

CentOS7使用Iptables做网络转发

wong

Centos 7 iptables

我的编程之路-3(熟练)

顿晓

c++ 调试 经历 项目 疑问

Flink 1.10 细粒度资源管理解析

Apache Flink

大数据 flink 流计算 实时计算

抽象

落英亭郎

系统设计 面向对象 抽象

(乱记)“怎样培养优秀孩子”

启润

你觉得你是哪类人?

Janenesome

读书笔记 思考

人生就是一场说走就走的旅行

kimmking

可能是最最最最简单的搭建博客方法

彭宏豪95

GitHub 写作 博客 GitPress

基于Serverless架构的Git代码统计

刘宇

个人的投资原则

史前靓仔

我跑步的时候会想些什么

养牛致富带头人

跑步 运动 锻炼

TL如何在团队中培养出更多前端技术专家

贵重

大前端 团队建设 技术管理

Web3极客日报#137

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

回文串解题记录

晓刚学代码

Java 算法

带你100% 地了解 Redis 6.0 的客户端缓存

程序员历小冰

redis 缓存 redis6.0.0

当你不知道怎么学习新技术时

石君

学习 方法论

引入了绩效管理,团队反而一天不如一天了?(一)

Geek_6rptuk

团队管理 企业文化 绩效

和儿子装一台 Hackintosh

苏锐

DIY Hackintosh 装机

使用 Amazon EBS 优化实例突发功能提高应用程序性能并降低成本_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章