CN112667356A - 时延可预测的NVMe存储虚拟化方法和系统 - Google Patents
时延可预测的NVMe存储虚拟化方法和系统 Download PDFInfo
- Publication number
- CN112667356A CN112667356A CN202011620231.4A CN202011620231A CN112667356A CN 112667356 A CN112667356 A CN 112667356A CN 202011620231 A CN202011620231 A CN 202011620231A CN 112667356 A CN112667356 A CN 112667356A
- Authority
- CN
- China
- Prior art keywords
- delay
- virtual machine
- virtual
- queue
- queues
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种时延可预测的NVMe存储虚拟化方法和系统,包括:步骤1:输入虚拟机类型和延时指标;步骤2:分配物理列队,计算限流阈值;步骤3:负载运行一个周期,限制非延时敏感虚拟机I/O,收集性能数据;步骤4:根据性能数据进行物理列队重分配;步骤5:判断延时指标是否达标,若达标则执行步骤6,若没有达标则执行步骤7;步骤6:调整限流阈值;步骤7:判断负载是否结束,若没有结束则返回步骤3继续执行。本发明有效解决了现有NVMe虚拟化方法存在的隔离性不足缺陷,在复杂云环境中可以有效减少运行在线负载的延时敏感虚拟机的性能受其他虚拟机负载的干扰情况,为其提供上界可预测的延时表现。
Description
技术领域
本发明涉及存储虚拟化技术领域,具体地,涉及一种时延可预测的NVMe存储虚拟化方法和系统。
背景技术
随着存储虚拟化技术的发展,主流云服务商们提供的NVMe云存储服务或产品基本都具备接近原生的性能,包括吞吐量、延时和尾延时等等。因此,性能可预测性将成为他们的竞争力的决定性因素。可预测性这一概念是对隔离性的推广,它表征的是性能的可度量性,即确定的性能范围。它不如隔离性严格,但比隔离性更加实用,因为隔离需要以超额配给为代价,其收益往往与投入不成正比。对于大多数商业线上应用而言,可预测性便足以满足它们对于性能稳定性的要求。而毫无疑问,稳定性是用户对云服务最关键的需求。在实际生产环境中,任何性能抖动都极有可能会造成直接的经济损失,所以如果云服务供应商不能按照约定提供足够稳定的交付,租户可能会拒绝支付相应费用。同时,可预测的性能还能够吸引更多对性能有苛刻要求的服务上云,为云计算的发展带来新的动力。
然而,现有的NVMe虚拟化栈并不具备保障这种可预测性的能力。当多个虚拟机共享同一块物理磁盘时,尽管每个虚拟机都有独占一块虚拟磁盘的错觉,但事实上这些虚拟磁盘都具备独立访问物理磁盘的能力,从而会对其他虚拟磁盘的性能产生干扰,尤其是在各虚拟机负载不均衡时,这种干扰可能导致数倍的性能恶化。考虑到这一缺陷,将可预测性引入到当前的NVMe虚拟化软件栈的设计中。这意味着关注的虚拟机总是可以获得固定的性能分配,不受其他虚拟机的干扰。分配额应该在系统初始化时确定,只有当相关租户意识到可能的后果并最终同意时才能更改。当然,可预测性是以整个系统吞吐量的牺牲为代价的,因此,本发明设计将会基于工业界中的一个普遍设定:对延时敏感的高优先级虚拟机往往和另外一些低实时性要求的运行离线重负载的虚拟机运行在相同的硬件环境下,以提高整个系统的物理资源利用率。本发明主要目标就是保障对延时敏感的虚拟机的延时可预测性,将在确定的系统设置下为这些虚拟机内的I/O负载的延迟提供一个上界,并基于实时微积分证明该上界的有效性,而系统整体的吞吐量则在一定程度上可以被适当牺牲。
专利文献CN104363159A(申请号:CN201410724630.3)公开了一种基于软件定义网络的开放虚拟网络构建系统,包括网络拓扑信息探测模块、网络性能探测模块、网络资源整合模块、网络资源呈现模块、用户虚拟节点选择模块、虚拟网络管理模块、网络资源虚拟化模块、主机资源虚拟化模块和用户交互界面模块;一种基于软件定义网络的开放虚拟网络构建方法,包括步骤:(1)用户登录开放虚拟网络构建系统;(2)系统收集网络资源信息并向用户进行直观显示;(3)用户为特定业务进行资源的发现,并提出服务请求;(4)系统向用户提供虚拟网络定制服务。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种时延可预测的NVMe存储虚拟化方法和系统。
根据本发明提供的时延可预测的NVMe存储虚拟化方法,包括:
步骤1:输入虚拟机类型和延时指标;
步骤2:分配物理列队,计算限流阈值;
步骤3:负载运行一个周期,限制非延时敏感虚拟机I/O,收集性能数据;
步骤4:根据性能数据进行物理列队重分配;
步骤5:判断延时指标是否达标,若达标则执行步骤6,若没有达标则执行步骤7;
步骤6:调整限流阈值;
步骤7:判断负载是否结束,若没有结束则返回步骤3继续执行。
优选的,虚拟机类型包括:延时敏感虚拟机和非延时敏感虚拟机;
通过共享内存的方式在主机驱动中为虚拟机内的每一对NVMe I/O队列建立影子虚拟队列,并映射到主机端NVMe驱动的物理队列;
为每一个虚拟机启动一个I/O指令轮询线程,并分别绑定单独的CPU,在I/O流程中负责I/O指令的转发;当虚拟机在预设时间内没有I/O指令下发时,暂停其I/O轮询线程并出让CPU,直到有新I/O指令流到来;
所述虚拟机包括:
调度器:周期性的对系统资源的分配以及系统参数进行调整;
探测器:包括嵌入在轮询线程内的性能探针和全局数据处理器,为调度器提供实时系统运行数据,包括实时I/O指令数和指令级I/O时延。
优选的,将物理队列分为:
1对1物理队列:被1对1地分配给高优先级虚拟队列;
虚拟机绑定的物理队列:与虚拟机绑定,所有低优先级的虚拟队列与其他同属于一个虚拟机的低优先级虚拟队列共享物理队列。
优选的,基于多级的负载感知的队列分配算法,在每一个调度周期的开始,通过调度器对I/O队列做动态分配,所述多级的负载感知的队列分配算法包括:
多级虚拟队列权重更新算法:更新所有的虚拟队列权重,作为虚拟队列排序依据;
物理队列分配算法:根据排序结果分配物理队列。
优选的,基于I/O指令节流机制,系统整体的I/O指令提交速率v与延时敏感虚拟机的I/O速率成正比,表示为:
v=p*(c*T+1)
得到虚拟机瞬时提交的指令数b,它与延时敏感虚拟机的I/O队列深度d成正比:
b=d*(c*T+1)
因此,系统的到达曲线表示为:
α(t)=v*T+b=p*(c*T+1)*T+d*(c*T+1)
获取服务曲线:
β(t)=R*T+Th
基于实时微积分理论,根据到达曲线和服务曲线得到延时上界:
其中,c为非延时敏感虚拟机的个数,p为延时敏感虚拟机的每秒进行读写操作的次数,T为限流阈值;R表示硬件每秒处理命令的速度,Th表示I/O命令的最小完成延时;探测器实时抓取系统运行时延数据并反馈给调度器,调度器内的决策器对比该数据与延时目标,增大或减小限流阈值。
根据本发明提供的时延可预测的NVMe存储虚拟化系统,包括:
模块M1:输入虚拟机类型和延时指标;
模块M2:分配物理列队,计算限流阈值;
模块M3:负载运行一个周期,限制非延时敏感虚拟机I/O,收集性能数据;
模块M4:根据性能数据进行物理列队重分配;
模块M5:判断延时指标是否达标,若达标则调用模块M6,若没有达标则调用模块M7;
模块M6:调整限流阈值;
模块M7:判断负载是否结束,若没有结束则回调模块M3继续执行。
优选的,虚拟机类型包括:延时敏感虚拟机和非延时敏感虚拟机;
通过共享内存的方式在主机驱动中为虚拟机内的每一对NVMe I/O队列建立影子虚拟队列,并映射到主机端NVMe驱动的物理队列;
为每一个虚拟机启动一个I/O指令轮询线程,并分别绑定单独的CPU,在I/O流程中负责I/O指令的转发;当虚拟机在预设时间内没有I/O指令下发时,暂停其I/O轮询线程并出让CPU,直到有新I/O指令流到来;
所述虚拟机包括:
调度器:周期性的对系统资源的分配以及系统参数进行调整;
探测器:包括嵌入在轮询线程内的性能探针和全局数据处理器,为调度器提供实时系统运行数据,包括实时I/O指令数和指令级I/O时延。
优选的,将物理队列分为:
1对1物理队列:被1对1地分配给高优先级虚拟队列;
虚拟机绑定的物理队列:与虚拟机绑定,所有低优先级的虚拟队列与其他同属于一个虚拟机的低优先级虚拟队列共享物理队列。
优选的,基于多级的负载感知的队列分配算法,在每一个调度周期的开始,通过调度器对I/O队列做动态分配,所述多级的负载感知的队列分配算法包括:
多级虚拟队列权重更新算法:更新所有的虚拟队列权重,作为虚拟队列排序依据;
物理队列分配算法:根据排序结果分配物理队列。
优选的,基于I/O指令节流机制,系统整体的I/O指令提交速率v与延时敏感虚拟机的I/O速率成正比,表示为:
v=p*(c*T+1)
得到虚拟机瞬时提交的指令数b,它与延时敏感虚拟机的I/O队列深度d成正比:
b=d*(c*T+1)
因此,系统的到达曲线表示为:
α(t)=v*T+b=p*(c*T+1)*T+d*(c*T+1)
获取服务曲线:
β(t)=R*T+Th
基于实时微积分理论,根据到达曲线和服务曲线得到延时上界:
其中,c为非延时敏感虚拟机的个数,p为延时敏感虚拟机的每秒进行读写操作的次数,T为限流阈值;R表示硬件每秒处理命令的速度,Th表示I/O命令的最小完成延时;探测器实时抓取系统运行时延数据并反馈给调度器,调度器内的决策器对比该数据与延时目标,增大或减小限流阈值。
与现有技术相比,本发明具有如下的有益效果:
本发明有效解决了现有NVMe虚拟化方法存在的隔离性不足缺陷,在复杂云环境中可以有效减少运行在线负载的延时敏感虚拟机的性能受其他虚拟机负载的干扰情况,为其提供上界可预测的延时表现。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为延时可预测的NVMe虚拟化方案系统架构图;
图2为虚拟队列权重更新算法的伪代码图;
图3为微基准随机写测试平均延时结果图;
图4为微基准随机读测试平均延时结果图;
图5为两虚拟机模拟真实负载实验结果图;
图6为四虚拟机模拟真实负载实验结果图;
图7为本发明方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
本发明提出了一种延时可预测的NVMe存储虚拟化方法,该方法基于中介透传(mediated-passthrough)虚拟化方案,在提供接近原生的虚拟化性能的基础上,能够保障延时敏感虚拟机的延时可预测性,图1展示了该方案下的系统架构图。该方案实现在系统内核层,可以向虚拟机提供具备完整NVMe特性的虚拟NVMe磁盘。它沟通虚拟机和底层的物理磁盘,通过影子I/O队列和I/O轮询机制来实现高效的NVMe指令转发,并通过I/O队列调度和I/O指令节流机制实现对延时敏感虚拟机延时可预测的支持。
将共享NVMe存储的虚拟机分为两类:延时敏感虚拟机和非延时敏感虚拟机。为了让主机可以分辨它们,在创建虚拟NVMe SSD时会将它们标记为是否延时敏感,当这些虚拟SSD被直通给虚拟机使用时,相应的虚拟机就会被标记为是否延时敏感,之后来自不同类型的虚拟机的I/O指令会被以不同的方式被处理。
影子I/O队列和I/O轮询机制保障了虚拟化的性能。通过共享内存的方式在主机驱动中为虚拟机内的每一对NVMe I/O队列建立影子虚拟队列,然后将这些虚拟队列映射到主机端NVMe驱动的物理队列,从而有效缩短了虚拟机I/O指令的处理路径,最小化了虚拟化带来的额外软件栈开销。轮询机制则用于取代传统的中断模式,在I/O流程中负责I/O指令的转发,可以有效降低延时。为了更好地控制每一个虚拟机的I/O指令流,为每一个虚拟机启动一个专用I/O指令轮询线程,并分别绑定到单独的CPU,以避免虚拟机间控制流的互相干扰。此外,考虑到轮询会一直占用CPU资源,为其增加一个优化:当某一虚拟机在一段时间内没有I/O指令下发时,暂停其I/O轮询线程并出让CPU,直到重新有I/O指令流到来。
在此基础上,引入另外两种机制,重新设计了NVMe虚拟化软件栈,相关系统组件如图1所示。除常规模块之外,额外增加了两个新模块:调度器和探测器。调度器是一个全局控制器,它负责周期性的对系统资源的分配以及关键系统参数进行调整。而探测器则包含嵌入在轮询线程内的性能探针和一个全局数据处理器,负责为调度器提供所需的实时系统运行时数据,包括实时I/O指令数和指令级I/O时延等等。它们相互配合,实现提出的I/O队列动态调度和I/O指令节流机制,可以有效保障系统的延时可预测性。
不同于常见的预分配物理队列的方式,提出一种I/O队列动态调度的机制,这要求所有的物理队列被组织成物理队列池,可以按需被灵活地分配给不同虚拟机,分配物理队列的动作则由图1中的调度器周期性地去完成。由于要保证高优先级的虚拟队列获得的服务质量,将物理队列分为两类:1对1物理队列和虚拟机绑定的物理队列。前者会被1对1地分配给高优先级虚拟队列,而后者则是与虚拟机相绑定的,所有低优先级的虚拟队列都会与其他同属于一个虚拟机的低优先级虚拟队列共享物理队列。通过这种方式,总能保障高优先级虚拟机所获得的I/O服务能力。
在每一个调度周期的开始,调度器会对I/O队列做动态分配,其核心是一个多级的负载感知的队列分配算法,它包含两部分:多级虚拟队列权重更新算法和物理队列分配算法,前者负责更新所有的虚拟队列权重,作为虚拟队列排序依据,后者则负责根据排序结果分配物理队列。一个较简单的虚拟队列权重更新算法的伪代码如图2所示。
该算法分别更新两种类型的虚拟队列的权重。对于延时敏感的虚拟队列来说,它一般需要使用1对1的物理队列,而且不希望它们经常切换物理队列,所以将它们的权重设置为接近最大值以保证其始终具备高优先级。同时,根据各自实际负载情况在它们之间作区分,当1对1物理队列数量不足以满足它们的使用需求时,前一个周期内处理的I/O指令较少的队列会更优先获得专用的物理队列,以平衡它们的性能。而对于非延时敏感虚拟队列,将它们的权重设置为它们上一周期完成的I/O指令数,从而保障负载较重的队列有较高的获得物理队列的权利。
当所有虚拟队列被按照权重进行排序后,物理队列分配算法就按照优先级从前到后为它们分配物理队列。高优先级虚拟队列将使用1对1物理队列,其余的将绑定到为相应虚拟机的保留的物理队列上。当然,在该框架下,更复杂的队列分配算法同样能够得到支持,可以根据实际需求进行定制。
提出I/O指令节流机制,控制虚拟机下发到硬件的指令的速度以保证I/O指令延时的可预测性。因为硬件处理I/O指令的速度是恒定的,短时间内过量的指令提交必然会带来延时的剧烈增长,限制非延时敏感虚拟机的I/O指令下发速度,严格控制其对延时敏感虚拟机的I/O性能的抢占。引入了一个I/O限流阈值T,它确保了系统范围内所有的虚拟机的I/O指令下发速度都在最慢的虚拟机(一般是延时敏感虚拟机)的T倍以内,这样可以按照期望精确地控制下发到硬件的I/O指令的速率,它对保障延时敏感虚拟机的延时可预测性效果显著。不妨假设有c个非延时敏感虚拟机和一个延迟敏感虚拟机共同运行,并且对延迟敏感的虚拟机的IOPS为p,那么系统发送到硬件的实时总命令提交速率为v=p(cT+1),只要v不超过硬件的处理速率上限,每个命令的等待时间就会有确定的界限,这一结论会在下一节中被形式化地证明。显然,阈值T的存在会影响非延时敏感虚拟机的吞吐量。因此,虽然较小的T值可以提供更好的可预测性,它对系统整个系统的吞吐量的牺牲也更大。因此,T的取值应该根据硬件处理速度的最佳上限来计算,而不宜太小。最佳硬件处理速度上限的含义是,只要命令提交速率不超过该上限,则相应的完成延迟不会有显著增加,这一指标对每一种型号的NVMe SSD来说都是固定的,所以可以由系统管理员统一确定。不过,在实践中延时虚拟机对指令延时的要求可能比上述情况更严格或更宽松,因此,对T的约束也有不同。针对这种情况,引入另一个可定制的系统参数——延迟敏感型虚拟机的延迟目标。一旦该目标被设置,它将成为T值的主要决定因素。此时,具体的T值就需要根据延时敏感虚拟机I/O负载的实时性能表现进行调整,以保证虚拟机的延时稳定在该目标附近,这一动作由调度器和探测器共同完成。探测器负责抓取系统运行时时延数据并反馈给调度器,调度器内的决策器会对比该数据与延时目标,增大或减小T值,最终使其稳定在最佳值处。
可预测性分析:
给出NVMe虚拟化栈中的I/O指令延时上界是一个典型的确定性排队系统问题,因此,将实时微积分引入到NVMe虚拟化系统,用以证明其延时的可预测性。实时微积分中有两个基本概念,到达曲线和服务曲线。到达曲线表示在任意时刻来自于事件源的事件数量的上限,在本系统,为简化起见,将所有I/O大小固定为4K,因此它指的是虚拟机总的I/O指令提交速率。服务曲线是指系统可以提供的流量保障,具体而言,它量化了NVMe设备的I/O服务能力。根据实时微积分理论,一旦系统的到达曲线和服务曲线被确定,就可以推导出事件流的虚拟延时。据此对系统进行抽象分析。为简化分析过程,假设系统中有c个相同的非延时敏感虚拟机与1个对延迟敏感的虚拟化共同运行,其中延迟敏感虚拟机的IOPS和I/O队列深度分别为p和d,给出以下详细分析。
到达曲线:
得益于I/O指令节流机制,系统整体的I/O指令提交速率与延时敏感虚拟机的I/O速率成正比,表示如下:
v=p*(c*T+1)
类似地,可以得到虚拟机瞬时提交的指令数,它与延时敏感虚拟机的I/O队列深度成正比:
b=d*(c*T+1)
因此,系统的到达曲线表示如下:
α(t)=v*T+b=p*(c*T+1)*T+d*(c*T+1)
服务曲线:
服务曲线比较简单,因为NVMe SSD的处理能力是恒定的。用R表示硬件每秒处理命令的速度,用Th表示I/O命令的最小完成延时,可以得到服务曲线如下:
β(t)=R*T+Th
得益于I/O队列调度机制,总能保证延时敏感虚拟机的服务曲线。
延时上界:
由实时微积分理论,可以由到达曲线和服务曲线得到延时上界:
该值可以充分约束延时敏感虚拟机的指令延时上限。下界的存在则是显然的,而且并非必要。至此,在理论上证明了本系统的延时可预测性。
实验:
为从实践角度验证本系统对延时可预测性的支持,设计了多组微基准和宏基准测试实验对其性能进行详细的展示。实验中还设置了多个对照组,包括MDev-NVMe、SPDK和virtio等主流I/O虚拟化框架。将本系统命名为LP-NVMe。
实验配置:
实验采用的NVMe设备是480GB的Intel Optane SSD 900P,它可以提供500K以上的4K随机I/O吞吐量和低至10μs的延时。服务器平台配置则为双14核心Intel Xeon E5-2680v4 CPUs,睿频2.4GHz,28线程,系统内存为64GB。服务器运行Ubuntu 18.0464bit操作系统,Linux 5.0版本内核。虚拟机镜像为Ubuntu 18.04服务器版操作系统,原生Linux 5.0内核。实验使用KVM+Qemu的方式启动和管理虚拟机,虚拟机硬件配置为3虚拟CPU核心和4GB系统内存。NVMe设备的存储空间提前使用fdisk进行分区,每个分区为连续的40GB存储空间,供虚拟机使用。
实验采用Fio(Flexible I/O tester)作为负载生成工具。为了能充分测评不同负载环境下的系统性能,设计了多组不同的负载配置。其中,微基准负载通过调整Fio提供的基本参数生成,其具体配置如表1所示。在每个测试用例中,在相同硬件环境下启动两个虚拟机,VM-1(延时敏感)和VM-2(非延时敏感)。在VM-1中,运行恒定的轻负载。而VM-2中的负载则在不同测试用例中有所不同,具体而言,它从与VM-1负载一样轻逐渐增加到足够占满NVMe磁盘的性能。因此,可以观察到VM-1在VM-2负载变化的影响下的性能波动。表2则给出了模拟两个虚拟机和四个虚拟机的真实负载场景下的测试用例配置。使用Fio重放Web用户服务器的I/O跟踪数据。原始跟踪数据来自佛罗里达国际大学的生产系统,它记录了实际生产过程中产生的大量块I/O请求及其时间戳,类型(读或写),功能(顺序或随机)和大小。由于这些块I/O请求的密度很高,每10秒将它们汇总一次,并生成相应的Fio任务。模拟的任务将保留原始数据的吞吐量和读写操作的比例,并根据已计数的连续请求的平均数来设置I/O队列深度。这些模拟的真实任务在每个测试用例中均在对延迟敏感的VM-1中运行,其余的VM则运行Fio模拟的重离线工作负载以抢占资源。
表1微基准负载(rand-read缩写为rr,rand-write缩写为rw,n表示numjobs,d表示iodepth)
表2模拟真实负载配置
微基准测试:
微基准测试的延时结果分别展示在图3和图4中。由于900P的随机读写性能差距极小,两张图的结果非常相似,因此可以统一解释。每张图中都展示了每种虚拟化框架的6个测试用例的结果,在这6个测试用例中,VM-2上的工作负载从与VM-1相同的单线程轻任务开始增长,直到足以单独占满NVMe磁盘的性能。这种对VM-1的抢占力度的上升导致MDev-NVMe和SPDK中VM-1的负载平均延时的恶化。因为这两种框架都缺乏对隔离性的支持,所以不平衡的工作负载很容易破坏VM之间的性能分配。由于Virtio对高性能NVMe SSD的支持较差,所以它的性能最差,并且不同测试用例间的变化不大,甚至在系统压力不足的低负载争用情况下表现更差。与前三者不同,LP-NVMe不仅可以提供极具竞争力的超低延迟,并且还能在干扰发生变化时维持该延迟,这一结果充分体现了LP-NVMe对延时可预测性的支持。
宏基准测试:
为了展示LP-NVMe对真实负载的适应性,继续测试其在模拟的两虚拟机和四虚拟机真实负载场景下的表现。在两种场景中,VM-1作为延时敏感虚拟机,运行的FIO任务每10秒更改一次,以重放web用户服务器的I/O追踪数据,而其他所有VM均运行“numjob=4”和“iodepth=32”的重Fio离线负载。每个测试用例的总运行时间均为2500秒,因此,获得了250个性能采样结果,其中主要关注VM-1的平均延迟和IOPS。由于微基准测试结果已经展示了LP-NVMe的卓越性能优势,因此在这里仅将其与同样具备高性能的原生MDev-NVMe虚拟化框架进行对比。
图5展示了两虚拟机场景的结果,使用两条折线描述VM-1的平均延时,使用灰色直方图表示其对应的IOPS。与原生框架相比,LP-NVMe的延迟在整个运行周期中优化了50%以上,从大约75μs到35μs。此外,延时的抖动也从约20μs优化到了5μs,并且延时结果也与VM-1的工作负载密度的变化关联较弱。这种优化来自对I/O路径的自适应精确控制,因此VM-1可以始终获得稳定和高质量的服务。四虚拟机场景的结果展示在图6中,可以看到,LP-NVMe仍可将VM-1的平均延时减少40%以上,从约85μs到50μs,并将抖动减少60%以上,从约40μs到15μs。但是,由于此时系统资源的竞争更加激烈,因此与两虚拟机场景相比,稳定性略有下降。总而言之,这些优化表明,LP-NVMe在真实动态工作负载下仍能保持延时可预测性。
如图7,根据本发明提供的一种时延可预测的NVMe存储虚拟化方法,包括:
步骤1:输入虚拟机类型和延时指标;
步骤2:分配物理列队,计算限流阈值;
步骤3:负载运行一个周期,限制非延时敏感虚拟机I/O,收集性能数据;
步骤4:根据性能数据进行物理列队重分配;
步骤5:判断延时指标是否达标,若达标则执行步骤6,若没有达标则执行步骤7;
步骤6:调整限流阈值;
步骤7:判断负载是否结束,若没有结束则返回步骤3继续执行。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种时延可预测的NVMe存储虚拟化方法,其特征在于,包括:
步骤1:输入虚拟机类型和延时指标;
步骤2:分配物理列队,计算限流阈值;
步骤3:负载运行一个周期,限制非延时敏感虚拟机I/O,收集性能数据;
步骤4:根据性能数据进行物理列队重分配;
步骤5:判断延时指标是否达标,若达标则执行步骤6,若没有达标则执行步骤7;
步骤6:调整限流阈值;
步骤7:判断负载是否结束,若没有结束则返回步骤3继续执行。
2.根据权利要求1所述的时延可预测的NVMe存储虚拟化方法,其特征在于,虚拟机类型包括:延时敏感虚拟机和非延时敏感虚拟机;
通过共享内存的方式在主机驱动中为虚拟机内的每一对NVMeI/O队列建立影子虚拟队列,并映射到主机端NVMe驱动的物理队列;
为每一个虚拟机启动一个I/O指令轮询线程,并分别绑定单独的CPU,在I/O流程中负责I/O指令的转发;当虚拟机在预设时间内没有I/O指令下发时,暂停其I/O轮询线程并出让CPU,直到有新I/O指令流到来;
所述虚拟机包括:
调度器:周期性的对系统资源的分配以及系统参数进行调整;
探测器:包括嵌入在轮询线程内的性能探针和全局数据处理器,为调度器提供实时系统运行数据,包括实时I/O指令数和指令级I/O时延。
3.根据权利要求1所述的时延可预测的NVMe存储虚拟化方法,其特征在于,将物理队列分为:
1对1物理队列:被1对1地分配给高优先级虚拟队列;
虚拟机绑定的物理队列:与虚拟机绑定,所有低优先级的虚拟队列与其他同属于一个虚拟机的低优先级虚拟队列共享物理队列。
4.根据权利要求1所述的时延可预测的NVMe存储虚拟化方法,其特征在于,基于多级的负载感知的队列分配算法,在每一个调度周期的开始,通过调度器对I/O队列做动态分配,所述多级的负载感知的队列分配算法包括:
多级虚拟队列权重更新算法:更新所有的虚拟队列权重,作为虚拟队列排序依据;
物理队列分配算法:根据排序结果分配物理队列。
5.根据权利要求1所述的时延可预测的NVMe存储虚拟化方法,其特征在于,基于I/O指令节流机制,系统整体的I/O指令提交速率v与延时敏感虚拟机的I/O速率成正比,表示为:
V=p*(c*T+1)
得到虚拟机瞬时提交的指令数b,它与延时敏感虚拟机的I/O队列深度d成正比:
b=d*(c*T+1)
因此,系统的到达曲线表示为:
α(t)=v*T+b=p*(c*T+1)*T+d*(c*T+1)
获取服务曲线:
β(t)=R*T+Th
基于实时微积分理论,根据到达曲线和服务曲线得到延时上界:
其中,c为非延时敏感虚拟机的个数,p为延时敏感虚拟机的每秒进行读写操作的次数,T为限流阈值;R表示硬件每秒处理命令的速度,Th表示I/O命令的最小完成延时;探测器实时抓取系统运行时延数据并反馈给调度器,调度器内的决策器对比该数据与延时目标,增大或减小限流阈值。
6.一种时延可预测的NVMe存储虚拟化系统,其特征在于,包括:
模块M1:输入虚拟机类型和延时指标;
模块M2:分配物理列队,计算限流阈值;
模块M3:负载运行一个周期,限制非延时敏感虚拟机I/O,收集性能数据;
模块M4:根据性能数据进行物理列队重分配;
模块M5:判断延时指标是否达标,若达标则调用模块M6,若没有达标则调用模块M7;
模块M6:调整限流阈值;
模块M7:判断负载是否结束,若没有结束则回调模块M3继续执行。
7.根据权利要求6所述的时延可预测的NVMe存储虚拟化系统,其特征在于,虚拟机类型包括:延时敏感虚拟机和非延时敏感虚拟机;
通过共享内存的方式在主机驱动中为虚拟机内的每一对NVMeI/O队列建立影子虚拟队列,并映射到主机端NVMe驱动的物理队列;
为每一个虚拟机启动一个I/O指令轮询线程,并分别绑定单独的CPU,在I/O流程中负责I/O指令的转发;当虚拟机在预设时间内没有I/O指令下发时,暂停其I/O轮询线程并出让CPU,直到有新I/O指令流到来;
所述虚拟机包括:
调度器:周期性的对系统资源的分配以及系统参数进行调整;
探测器:包括嵌入在轮询线程内的性能探针和全局数据处理器,为调度器提供实时系统运行数据,包括实时I/O指令数和指令级I/O时延。
8.根据权利要求6所述的时延可预测的NVMe存储虚拟化系统,其特征在于,将物理队列分为:
1对1物理队列:被1对1地分配给高优先级虚拟队列;
虚拟机绑定的物理队列:与虚拟机绑定,所有低优先级的虚拟队列与其他同属于一个虚拟机的低优先级虚拟队列共享物理队列。
9.根据权利要求6所述的时延可预测的NVMe存储虚拟化系统,其特征在于,基于多级的负载感知的队列分配算法,在每一个调度周期的开始,通过调度器对I/O队列做动态分配,所述多级的负载感知的队列分配算法包括:
多级虚拟队列权重更新算法:更新所有的虚拟队列权重,作为虚拟队列排序依据;
物理队列分配算法:根据排序结果分配物理队列。
10.根据权利要求6所述的时延可预测的NVMe存储虚拟化系统,其特征在于,基于I/O指令节流机制,系统整体的I/O指令提交速率v与延时敏感虚拟机的I/O速率成正比,表示为:
v=p*(c*T+1)
得到虚拟机瞬时提交的指令数b,它与延时敏感虚拟机的I/O队列深度d成正比:
b=d*(c*T+1)
因此,系统的到达曲线表示为:
α(t)=V*T+b=p*(c*T+1)*T+d*(c*T+1)
获取服务曲线:
β(t)=R*T+Th
基于实时微积分理论,根据到达曲线和服务曲线得到延时上界:
其中,c为非延时敏感虚拟机的个数,p为延时敏感虚拟机的每秒进行读写操作的次数,T为限流阈值;R表示硬件每秒处理命令的速度,Th表示I/O命令的最小完成延时;探测器实时抓取系统运行时延数据并反馈给调度器,调度器内的决策器对比该数据与延时目标,增大或减小限流阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011620231.4A CN112667356B (zh) | 2020-12-30 | 2020-12-30 | 时延可预测的NVMe存储虚拟化方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011620231.4A CN112667356B (zh) | 2020-12-30 | 2020-12-30 | 时延可预测的NVMe存储虚拟化方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667356A true CN112667356A (zh) | 2021-04-16 |
CN112667356B CN112667356B (zh) | 2023-01-31 |
Family
ID=75412104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011620231.4A Active CN112667356B (zh) | 2020-12-30 | 2020-12-30 | 时延可预测的NVMe存储虚拟化方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667356B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138422A (zh) * | 2021-12-10 | 2022-03-04 | 上海交通大学 | 可扩展性的NVMe存储虚拟化方法和系统 |
CN114138422B (zh) * | 2021-12-10 | 2024-05-28 | 上海交通大学 | 可扩展性的NVMe存储虚拟化方法和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678003A (zh) * | 2013-12-18 | 2014-03-26 | 华中科技大学 | 一种实时性增强的虚拟cpu调度方法 |
CN104011685A (zh) * | 2012-12-26 | 2014-08-27 | 华为技术有限公司 | 一种虚拟机系统的资源管理方法、虚拟机系统和装置 |
CN104618158A (zh) * | 2015-01-28 | 2015-05-13 | 上海交通大学 | 嵌入式网络虚拟化环境中VirtIO网络虚拟化工作方法 |
US20150363180A1 (en) * | 2014-06-13 | 2015-12-17 | International Business Machines Corporation | Software deployment in a distributed virtual machine environment |
CN108733490A (zh) * | 2018-05-14 | 2018-11-02 | 上海交通大学 | 一种基于资源共享自适应配置的GPU虚拟化QoS控制系统及方法 |
CN109905329A (zh) * | 2019-01-04 | 2019-06-18 | 东南大学 | 一种虚拟化环境下任务类型感知的流队列自适应管理方法 |
CN111444012A (zh) * | 2020-03-03 | 2020-07-24 | 中国科学院计算技术研究所 | 一种保证延迟敏感应用延迟slo的动态调控资源方法及系统 |
CN111722786A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 基于NVMe设备的存储系统 |
CN111782355A (zh) * | 2020-06-03 | 2020-10-16 | 上海交通大学 | 一种基于混合负载的云计算任务调度方法及系统 |
CN111880750A (zh) * | 2020-08-13 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 磁盘读写资源的分配方法、装置、设备及存储介质 |
-
2020
- 2020-12-30 CN CN202011620231.4A patent/CN112667356B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104011685A (zh) * | 2012-12-26 | 2014-08-27 | 华为技术有限公司 | 一种虚拟机系统的资源管理方法、虚拟机系统和装置 |
CN103678003A (zh) * | 2013-12-18 | 2014-03-26 | 华中科技大学 | 一种实时性增强的虚拟cpu调度方法 |
US20150363180A1 (en) * | 2014-06-13 | 2015-12-17 | International Business Machines Corporation | Software deployment in a distributed virtual machine environment |
CN104618158A (zh) * | 2015-01-28 | 2015-05-13 | 上海交通大学 | 嵌入式网络虚拟化环境中VirtIO网络虚拟化工作方法 |
CN108733490A (zh) * | 2018-05-14 | 2018-11-02 | 上海交通大学 | 一种基于资源共享自适应配置的GPU虚拟化QoS控制系统及方法 |
CN109905329A (zh) * | 2019-01-04 | 2019-06-18 | 东南大学 | 一种虚拟化环境下任务类型感知的流队列自适应管理方法 |
CN111722786A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 基于NVMe设备的存储系统 |
CN111444012A (zh) * | 2020-03-03 | 2020-07-24 | 中国科学院计算技术研究所 | 一种保证延迟敏感应用延迟slo的动态调控资源方法及系统 |
CN111782355A (zh) * | 2020-06-03 | 2020-10-16 | 上海交通大学 | 一种基于混合负载的云计算任务调度方法及系统 |
CN111880750A (zh) * | 2020-08-13 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 磁盘读写资源的分配方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138422A (zh) * | 2021-12-10 | 2022-03-04 | 上海交通大学 | 可扩展性的NVMe存储虚拟化方法和系统 |
CN114138422B (zh) * | 2021-12-10 | 2024-05-28 | 上海交通大学 | 可扩展性的NVMe存储虚拟化方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112667356B (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10331492B2 (en) | Techniques to dynamically allocate resources of configurable computing resources | |
EP3254196B1 (en) | Method and system for multi-tenant resource distribution | |
TWI629599B (zh) | 虛擬磁碟的io口調度方法及其調度裝置 | |
JP6381956B2 (ja) | 動的仮想マシンサイジング | |
CN105988872B (zh) | 一种cpu资源分配的方法、装置及电子设备 | |
JP5954074B2 (ja) | 情報処理方法、情報処理装置、及びプログラム。 | |
US11113782B2 (en) | Dynamic kernel slicing for VGPU sharing in serverless computing systems | |
Verner et al. | Scheduling processing of real-time data streams on heterogeneous multi-GPU systems | |
US20160196157A1 (en) | Information processing system, management device, and method of controlling information processing system | |
US11327810B2 (en) | Managing virtual machine memory balloon using time series predictive data | |
KR20100074920A (ko) | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 | |
CN114356543A (zh) | 一种基于Kubernetes的多租户机器学习任务资源调度方法 | |
CN104917839A (zh) | 一种用于云计算环境下的负载均衡方法 | |
CN115599512A (zh) | 在图形处理单元上调度作业 | |
CN104598311A (zh) | 一种面向Hadoop的实时作业公平调度的方法和装置 | |
US10846138B2 (en) | Allocating resources of a memory fabric | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN112667356B (zh) | 时延可预测的NVMe存储虚拟化方法和系统 | |
Pastorelli et al. | Practical size-based scheduling for MapReduce workloads | |
Peng et al. | A throughput-oriented nvme storage virtualization with workload-aware management | |
CN114579284A (zh) | 任务调度方法及装置 | |
CN106155810A (zh) | 软件定义混合储存系统中工作负载感知的输入输出调度器 | |
US20230315515A1 (en) | Scheduling And Load-Balancing Replication-Based Migrations of Virtual Machines | |
JP7478918B2 (ja) | 分散型異機種混在システムに基づくタスクインテリジェント処理方法 | |
CN113900824A (zh) | 一种云平台虚拟资源高速调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |