前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生下,TencentOS“如意” IO隔离之BPS. IOPS. 权重隔离

云原生下,TencentOS“如意” IO隔离之BPS. IOPS. 权重隔离

作者头像
腾讯 架构师
发布2021-10-14 10:44:50
3K1
发布2021-10-14 10:44:50
举报
文章被收录于专栏:技术运维分享技术运维分享

架构鹅结合TencentOS团队在混部方面的落地实战经验,重点推送了TencentOS Server大规模容器集群混部服务器QoS产品“如意”相关内容。

TencentOS “如意”产品主要应用在离、在线混部场景,目标是为了提高服务器的资源利用率,进而降低业务及客户的服务器成本。“如意”作为一套OS侧的资源隔离方案,主要包括CPU、IO、内存和网络四大模块。针对这四种服务器资源进行QoS(Quality of Service,服务质量),能够将用户的在线、离线业务部署到同一台服务器上,既能保证在线业务的服务质量,又能有效提升资源利用率。

针对“如意”特性中CPU QoS模块网络资源隔离分别推出深度技术解析文章,本篇,架构鹅重点介绍如意IO隔离方案的应用和实践效果。

一、IO隔离应用背景

随着容器的大量使用,资源隔离的需求越来越强烈,比如大量的平台基于容器提供guest OS环境,这些容器之间的IO不进行限制的话,由于共享整机IO资源必将导致大量竞争,进而无法保证容器的Qos。与CPU资源,内存资源不同的是,IO资源不能很方便的计算使用量,因为磁盘的BPS与IOPS都是有限的,并且是相互影响的,综合来讲磁盘的使用成本是多维的。为了更好兼容不同场景的需求,我们对内核现有机制进行大量优化,并引入新的Qos机制。

从IO的方向,IO可以分为读IO与写IO;从IO提交的角度来区分,IO可以分为Buffer IO与Diret IO;从IO随机度来区分,IO可以分为顺序IO与随机IO。实际生产环境中IO模型要复杂很多,更多是多种不同的IO模型混合在一起。不同的存储设备的差异性也是非常大,比如HDD,SATA SSD, NVMe,云盘等。这些因素都给隔离方案带来较多的挑战。以下章节如无额外说明,如意IO隔离方案在大部分场景中对于常见HDD, SATA SSD, NVMe都是适用的。

二、IO隔离原理

2.1 BPS隔离

BPS隔离主要是用于保证容器的磁盘可用带宽,目前支持限制上限与保证下限两种方式。限制上限的方式可以限制每个容器最大可用磁盘带宽,由于容器空闲带宽不能被复用,所以这种方案的资源利用率相对较低,适用于资源利用率要求不高隔离要求高的场景。保证下限的方式保证每个容器最小可用磁盘带宽,在最小带宽满足前提下,各个容器尽可能去争取更高的带宽,这种方式资源利用率相对较高,但是隔离性相对可能不会特别好,不太适用隔离要求高的场景。

默认BPS限制是读写单独控制的,这种方案非常灵活,但是实际使用会增加复杂性。为此,我们也支持对容器配置单一BPS上限,内核会自动分配读写带宽,基本原则上是读操作优先写操作。BPS相关的部分内核接口与配置方法如下:

2.2 IOPS隔离

IOPS隔离主要是用于保证容器的磁盘可用IOPS,目前支持限制上限与保证下限两种方式。限制上限的方式可以限制每个容器最大可用磁盘IOPS,由于容器空闲IOPS不能被复用,所以这种方案的资源利用率相对较低。保证下限的方式保证每个容器最小可用磁盘IOPS,在最小IOPS满足前提下,各个容器尽可能去争取更高的IOPS,这种方式资源利用率相对较高。

默认IOPS限制是读写单独控制的,这种方案非常灵活,但是实际使用会增加复杂性。为此,我们也支持对容器配置单一IOPS上限,内核会自动分配读写IOPS,基本原则上是读操作优先写操作。IOPS相关的部分内核接口与配置方法如下:

2.3 权重隔离

BPS / IOPS隔离方案的鲁棒性较差,因为系统的负载与设备的工况都是变化的,这些变化因子最终会导致磁盘性能的波动,这个波动最终体现在BPS或者IOPS上。由于无法较好的复用空闲资源,部分场景下系统资源利用率不高。为了更好的鲁棒性以及更高的资源利用率,我们也支持权重隔离方案。与BPS / IOPS隔离不同,权重隔离是以权重分配系统资源,可以更好适应不同的负载以及性能波动。我们权重隔离方案目前主要是基于bfq实现的,针对容器场景进行专门优化,使得我们可以实现较好的鲁棒性, 较高的吞吐量,较好的隔离效果。权重隔离的相关配置接口如下所示:

  • CGroup V1

be1与be2的权重比是1:2

echo 100 > be1/blkio.bfq.weight

echo 200 > be2/blkio.bfq.weight

  • CGroup V2

be1与be2的权重比是1:2

echo 100 > be1/io.bfq.weight

echo 200 > be2/io.bfq.weight

三、实验效果

本次测试在INSPUR SA5112M4上单块NVMe(INTEL SSDPE2MX020T4)上测试,测试时每个容器内部运行32个fio线程同时IO,测试效果如下所示:

3.1

Buffer IO 写带宽为1MB/s的效果

3.2

Buffer IO 写IOPS为1024/s的效果

3.3

Buffer IO权重为1:2的效果

3.4

Direct IO BPS为1MB/s的效果

3.5

Direct IO IOPS为1024/s的效果

3.6

Direct IO 权重为1:2的效果

3.7

权重隔离场景下的性能开销,由于篇幅原因,主要列举direct IO的结果:

测试

开权重 KB/s

不开权重KB/s

开销

1

1535380

1540673

0.7%

2

1532529

1521605

0.0%

3

1506826

1529164

1.4%

平均

1524911

1530480

0.7%

四、IO隔离可有效提升资源利用率

综上所述,使用IO隔离方案在常见场景下可以达到较好的隔离效果以及较高的资源利用率。除此之外,我们还支持更多的Qos机制,比如IO抢占,文件句柄限制等等,后续的文章我们再详细介绍。IO隔离方案目前已应用在腾讯互娱的TenC平台,得到较好的效果,可以很好地避免各个容器之间的相互影响。

相关阅读

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档