SPDK QOS机制解析

天翼云开发者社区
• 阅读 96

本文关键词:intel spdk bdev qos

序: intel spdk软件在存储领域应用广泛。因其可以高效管理linux系统的nvme ssd盘,又支持vhost-user协议可以对接qemu虚拟机,在云计算领域通常被用来做本地盘云主机的存储管理软件。如此优秀的一款软件,有必要仔细分析其内部的实现机制,本篇文章主要介绍spdk qos机制。

spdk qos做在bdev层,是面向块设备的qos,不是面向客户端的qos。面向客户端的qos需要做在协议层,部分协议例如iscsi协议本身有qos机制,不过这部分机制不在spdk qos里面讨论, spdk qos可以理解为就是bdev qos。

spdk qos机制: 目前共支持4种qos,分别是IOPS qos,BPS qos,BPS rqos,BPS wqos。4种qos均放在spdk_bdev_qos->rate_limits数组里面,因此新增加qos也很简单,可直接在数组里面新增qos类型,比如IOPS rqos和IOPS wqos。增加新类型qos后,在bdev_qos_set_ops,bdev_qos_is_iops_rate_limit等qos接口里面也需要增加对应逻辑。

为支持多核访问同一个bdev的qos需求,spdk采用io任务委托提交的方式向bdev层提交io。具体方式是在多个核中选取一个io任务提交核用于执行bdev_io提交,其余未被选中的核通过bdev_io_submit提交bdev_io时,需要使用spdk_thread_send_msg向提交核发送一个消息,提交核收到消息后使用_bdev_io_submit执行提交,当判断需要qos时,使用bdev_qos_io_submit向qos提交bdev_io,qos完成限速后再通过bdev_io_do_submit向bdev驱动提交request。完整的提交流程见下图: SPDK QOS机制解析

当多种qos同时配置时,qos生效策略为都通过才算qos通过,其中任何一种qos要求不满足,就排队不向驱动提交。bdev_io向驱动提交前,和bdev_io从驱动返回后,每种配置的qos均需要更改quota配额。qos生效策略可见下图bdev_qos_io_submit函数。 SPDK QOS机制解析

触发bdev qos执行的方式有两种。一种是新io触发,新io提交会主动触发qos检查并依次提交qos queue中的io;另一种是定时poll,在无新io下发的场景使用,原qos queue中的io在poll(bdev_channel_poll_qos)的运作机制下进行提交,一次poll任务的默认间隔时间是1ms(SPDK_BDEV_QOS_TIMESLICE_IN_USEC)。

bdev qos机制可能带来不连续突发请求的性能抖动,若qos设置太小,主机每次突发请求都较大,会导致qos的poll提交生效,某些io的时延可能达到SPDK_BDEV_QOS_TIMESLICE_IN_USEC。

spdk qos命令: spdk支持动态调整bdev qos参数,使用bdev_set_qos_limit命令,若相关limit参数设置为0,则相关limit取消(SPDK_BDEV_QOS_LIMIT_NOT_DEFINED),具体命令帮助信息如下图。 SPDK QOS机制解析

实验验证: 理论知识分析完毕,接下来实践一下spdk qos功能。模拟本地盘云主机场景,先搭建qemu虚拟机通过vhost-user协议跑一下环境IO性能。环境搭建可参考spdk软件包中doc/vhost.md文档,步骤略过。仅介绍搭建好的环境情况如下,物理机spdk中创建一个1G大小的内存盘Malloc0,然后通过Vhost-BLK挂载到虚拟机,虚拟机硬盘随机读性能约80W IOPS。 SPDK QOS机制解析

物理机上执行命令bdev_set_qos_limit,把IOPS限制到1W,执行命令如下: SPDK QOS机制解析

然后看一下虚拟机的性能,可以看到IOPS已经下降到1W以下,此时带宽为38M。IOPS qos限制正确生效。 SPDK QOS机制解析

接下来,再限制一下带宽,看看带宽qos对IOPS业务的影响。把带宽限制到20M,物理机上执行命令如下: SPDK QOS机制解析

相对于1W IOPS,20M带宽限制更严格。看一下环境,虚拟机IOPS业务性能的确是受到更严格的带宽限制影响,带宽下降到20M以下,IOPS下降到5000左右。带宽qos限制正确生效。 SPDK QOS机制解析

接下来解除带宽限制,注意限制参数填写0即可。 SPDK QOS机制解析

可以看到IOPS恢复到1W IOPS。 SPDK QOS机制解析

接下来解除IOPS限制,注意限制参数填写0即可。 SPDK QOS机制解析

可以看到IOPS恢复到80W IOPS。实验完毕。 SPDK QOS机制解析

总结: spdk qos机制清晰明了,使用也很方便,能够满足本地盘云主机使用场景。但是由于不同spdk进程的bdev不能共享,因此多个spdk进程协作qos无法实现。这对希望使用spdk作为客服端对接分布式存储的同学来说不是一个好消息,当多个spdk客户端使用分布式存储提供的同一个盘时,无法正确做qos限速。这往往需要一个额外的qos方案。

点赞
收藏
评论区
推荐文章
初识DevOps
基本概念和延伸的思考DevOps,是Development(开发)和Operations(运维)组成的复合词,一般译为“开发运维一体化”。看到这个概念,首先会产生几个问题:开发是什么,哪些环节是开发?运维是什么,哪些环节是运维?开发人员写好代码在本地调试,环境出问题了自己来调整,这是开发工作还是运维工作?系统故障后,运维人员发现是配置文件内容出错了就改成了正
天翼云高可用虚拟IP(HAVIP)实践
(一)产品概述天翼云高可用虚拟IP(HighAvailabilityVirtualIPAddress,简称HAVIP)是一种可用独立创建和删除的私有网络IP地址资源。通过在VIPCIDR中申请一个私有网络IP地址,然后与高可用软件(如高可用软件Keepalived)配合使用,可用在VPC中搭建高可用的主备集群服务,提高VPC中服务的可用性。限制和说明
一个关于SDWAN单臂部署方案验证的实验
假设有这样一张网络,其中RTA和PCA表示某公司的A分支,通过中国电信CT路由器接入互联网ISP;RTB和PCB表示某公司的B分支,通过中国联通CU路由器接入互联网ISP。DNS(8.8.8.8)表示某互联网应用。为实现A分支私网192.168.2.0/24和B分支私网192.168.3.0/24的互通,现计划使用某厂商的SDWAN方案进打通两个内网,像下图
高性能API网关Kong介绍
本文关键词:高性能、API网关、Kong、微服务1.Introduction是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(Allinone)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规模成倍增长,API的管理难度也在日益增加,使用API网关发布和管
SPDK对接Ceph性能优化
关键词:SPDK、NVMeOF、Ceph、CPU负载均衡SPDK是intel公司主导开发的一套存储高性能开发套件,提供了一组工具和库,用于编写高性能、可扩展和用户态存储应用。它通过使用一些关键技术实现了高性能:1.将所有必需的驱动程序移到用户空间,以避免系统调用并且支持零拷贝访问2.IO的完成通过轮询硬件而不是依赖中断,以降低时延3.使用消息传递,以避免IO
如何选择天翼云云硬盘
天翼云提供普通云盘(SATA)、高效云盘(SAS)、SSD云盘(SSD)三种类型的云硬盘,这三种类型有什么区别,又分别适用于什么场景呢?今天就来说一说这个问题。首先我们了解一下什么是云硬盘。云硬盘即云主机使用的存储设备,购买云主机后操作系统、应用软件数据都保存在云硬盘上。本质上它是天翼云分布式存储池中划分出来的一个虚拟磁盘设备,在使用上和普通服务器的硬盘没有
3A网络 3A网络
5个月前
理解 virt、res、shr 之间的关系(linux 系统篇)
理解virt、res、shr之间的关系(linux系统篇)前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过t
3A网络 3A网络
5个月前
开发一个不需要重写成 Hive QL 的大数据 SQL 引擎
开发一个不需要重写成HiveQL的大数据SQL引擎学习大数据技术的核心原理,掌握一些高效的思考和思维方式,构建自己的技术知识体系。明白了原理,有时甚至不需要学习,顺着原理就可以推导出各种实现细节。各种知识表象看杂乱无章,若只是学习
这波无感升级有点秀——天翼云QEMU组件热升级方案来了
虚拟化技术作为云计算时代的核心技术,近年来应用越来越广泛。目前,大多数云厂商提供的云主机都是基于KVM/QEMU虚拟化技术实现的。而随着虚拟化技术的发展,QEMU组件也在不断引入新功能并进行功能优化和问题修复。在公有云场景中,如何在不影响存量虚拟机业务的情
如何实现云数据治理中的数据安全?
云计算被定义为计算资源的共享池,已经在不同的应用领域广泛部署和使用。在云计算中,数据治理在提高整体性能和确保数据安全方面发挥着至关重要的作用。本研究从管理和技术应用两方面探讨如何实现云数据治理中的数据
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
278
文章
0
粉丝
1
获赞