[0034] 以下结合附图对本发明作进一步说明,请参阅图1。本发明主要针对的是如图1所示的多服务混部场景,服务混部所依赖的虚拟化技术主要为Docker容器技术。根据服务性能指标类型,将服务分为尾部延迟敏感型服务与吞吐量优先型服务。其中尾部延迟敏感型服务代表实际公有云集群中需要实时响应的现代应用。这类应用的请求通常被切分为多个子请求并发执行以提高响应速度,其响应时间取决于最慢的子请求,因此选用尾部延迟作为该类服务的性能指标能够更加准确的反映服务运行情况。吞吐量优先型服务代表公有云集群中用于填补资源闲置的批处理服务,这类服务不要求实时响应,因此选用典型的吞吐量作为其性能指标。
[0035] 由于该混部场景中每个服务均会受到其他服务的性能干扰,包括相同类型与相异类型服务,因此本发明需要针对服务受到的双重性能干扰做出优化,其中不同类型服务的性能干扰主要通过磁盘I/O资源划分的方式进行隔离,而针对相同服务类型的性能优化主要通过对服务设置优先级,错开优化时机来实现。
[0036] 图2展示了本发明提出的基于服务特征的多服务混部场景下容器I/O隔离性优化方法中关于吞吐量优化的主要流程。该流程中的数据收集即为服务吞吐量数据的收集,由于本发明提出的优化方法是通过收集性能数据并采用反馈调节的方式进行优化,因此需要一定的优化生效时间,因此服务吞吐量数据的收集周期设定为10s。
[0037] 在图2所示流程中最关键的部分在于制定吞吐量优化决策,吞吐量数据收集后需要与服务预设的吞吐量基准值进行对比,判断当前服务运行是否正常,如果其吞吐量满足基准值,则忽略本次吞吐量数据并等待下一周期。如果其吞吐量未达到基准值,则需要调用吞吐量优化算法进行优化。吞吐量优化算法具体如下:
[0038]
[0039] 其中Th′(k,t+1)表示下一周期吞吐量优先型服务k的磁盘资源分配值,Th(k,t)表示在t时刻k服务的实时吞吐量,ThSLO(k)表示服务k预先设定的吞吐量基准值。该吞吐量优化算法主要解决的问题在于当出现吞吐量违规时如何为每个服务分配合适的磁盘I/O资源。由于吞吐量与磁盘I/O资源具有明显的正相关线性关系,因此本发明直接采用基准值代换的方式,将吞吐量基准值作为该服务优化时磁盘I/O资源的分配值。
[0040] 图3显示了本发明所提出的服务优先级的影响因素,其中Thdif表示当前服务进行磁盘I/O并发控制后的吞吐量变化,该变化值将直接决定服务优先级的高低。其变化值越大,表明该服务对当前磁盘资源的影响力越大,因此需要优先进行磁盘I/O并发控制以优化尾部延迟。反之则表明其影响力小,服务优先级低。吞吐量变化值主要受两个因素影响,分别是Vio以及Thcur,其中Vio表示该服务的尾部延迟违规度,服务违规度越高,该服务需要施加的磁盘I/O并发控制程度越高,其吞吐量变化值越大,违规度计算如下所示:
[0041]
[0042] 其中Lcur表示该服务当前的尾部延迟,LSLO代表该服务的尾部延迟基准值。Thcur表示该服务当前的吞吐量大小,该值是Thdif的基数,该值越大,则Thdif越大。
[0043] 因此Thdif的计算公式,也即服务优先级的计算公式如下所示:
[0044]
[0045] 通过Vio与LSLO的比值,结合当前服务吞吐量的值Thcur,能够推测并计算出该服务在进行I/O并发控制后的吞吐量变化预测值Thdif,从而判断该服务的优先级,为后续尾部延迟优化提供优化顺序指导。
[0046] 结合前述优先级划分方法,本发明提出了基于服务优先级的尾部延迟错峰优化方法。
[0047] 图4给出了尾部延迟错峰优化的整体流程图,主要包括尾部延迟数据收集,服务优先级计算,尾部延迟优化决策以及磁盘I/O并发控制。在该流程开始时,需要首先收集各个延迟敏感型服务的尾部延迟与吞吐量数据,然后通过与其尾部延迟基准值进行比较,判断当前服务是否需要进行尾部延迟优化,若符合基准值则忽略本次数据,等待下一周期。若其性能不符合,则需要对尾部延迟敏感型服务进行优先级排序,根据排序结果调用尾部延迟优化算法进行磁盘I/O并发控制。
[0048] 该流程中的尾部延迟数据收集主要通过收集一段时间内所有请求的响应时间,并将其按时间长短进行排序,取响应排序中指定位置的响应时间作为该时间点的近似尾部延迟值。
[0049] 该流程中的尾部延迟优化决策主要通过调用尾部延迟优化算法实现,该优化算法用于计算当前违规服务的理想并发等级。具体如下所示:
[0050]
[0051]
[0052] 其中P(l,t)指l服务(l服务是尾部延迟敏感型服务)在t时刻的I/O并发等级,TlSLO(l)指l服务的尾部延迟基准值,而Tl(l,t)表示l服务在t时刻的实时尾部延迟,P(l,t+1)表示l服务在下一周期可能需要调整的I/O并发程度,且该调整幅度至少是1,从而保证多周期迭代步长的有效性,避免出现调整幅度过小的情况。P′(l,t+1)则代表了最终的I/O并发数的计算结果,为避免I/O并发等级被设置为负数或零的不合理现象出现,需要将P(l,t+1)与1进行比较,保证新的并发等级至少是1。
[0053] 根据前述优化流程,本发明提出基于服务特征的多服务混部场景下容器I/O隔离性优化方法。
[0054] 图5给出了本发明的整体架构图。该优化方法的主要思路是通过识别分类混部场景中服务的类型,并循环收集各个服务的性能数据,实时判断当前服务的运行状态,并根据服务类型对违规服务进行及时优化,从而保证多服务混部场景下容器I/O隔离性,其具体流程如算法1所示。
[0055] 算法1会循环收集性能数据,保证服务数据收集的实时性,并且当混部场景中的服务出现性能违规时,算法1会根据服务类型调用相应的优化方法。违规服务如果是吞吐量优先型服务,则调用吞吐量优化方法,根据相应优化方法的计算结果重新对磁盘I/O资源进行分配。如果违规服务是尾部延迟敏感型服务,则需要先对服务进行优先级划分,然后调用尾部延迟优化方法,并根据优先级排序结果重新对服务的并发等级进行设置。
[0056]
[0057]
[0058] 本发明提出的基于服务特征的多服务混部场景下容器I/O隔离性优化方法的具体步骤是:
[0059] 步骤1:识别当前混部场景中服务的类型与数量,并分类各个服务的性能指标类型与基准值。
[0060] 步骤2:收集当前混部场景中各个服务的实时性能数据,包括吞吐量优先型服务的吞吐量,以及延迟敏感型服务的尾部延迟。
[0061] 步骤3:判断当前吞吐量优先型服务的吞吐量是否符合预先设定的基准值,若符合则跳转至步骤5,否则跳转到步骤4。
[0062] 步骤4:调用吞吐量优化算法,制定磁盘I/O资源分配方案,进行吞吐量优化。
[0063] 步骤5:判断当前延迟敏感型服务的尾部延迟是否符合预先设定的基准值,若符合则跳转至步骤7,否则跳转到步骤6。
[0064] 步骤6:先调用服务优先级划分算法为延迟敏感型服务设置优先级,然后调用尾部延迟优化算法计算各个服务合理的I/O并发等级,并优化尾部延迟。
[0065] 步骤7:循环步骤1到步骤6,保证当前混部场景的I/O隔离性能够维持正常。
[0066] 下面分别对上述实施步骤进行详细说明。
[0067] (1)步骤1
[0068] 识别当前混部场景中服务的类型与数量及其性能指标,包括:
[0069] 服务类型,即根据其需求的性能指标类型将服务划分为尾部延迟敏感型服务和吞吐量优先型服务。
[0070] 服务数量,即各个类型服务的数量,并为每个服务设定独立的标号用于性能数据的统计。
[0071] 服务性能基准值,即各个服务需求的性能基准,当服务实时性能数据满足该基准时认为该服务运行正常,当所有服务均正常运行时,认为该场景的I/O隔离性未遭到破坏。
[0072] (2)步骤2
[0073] 按周期循环收集场景中各个服务的吞吐量与尾部延迟数据。
[0074] 其中吞吐量的收集需要使用性能监控工具IOSTAT,利用Docker为每个容器创建虚拟磁盘并分配独立磁盘设备号,通过收集每个容器对应虚拟磁盘的IOPS计算得到实时吞吐量。
[0075] 尾部延迟作为一种统计型性能指标,其实时数据收集较为复杂。本发明中尾部延迟的收集主要通过收集一小段时间中所有请求的响应时间,对其排序后取该序列中处于尾部的响应时间作为该时间点的近似尾部延迟。
[0076] (3)步骤3
[0077] 将收集到的吞吐量数据与该服务的吞吐量基准进行对比,若服务的当前吞吐量小于预设的吞吐量基准值,表示该服务处于性能违规状态,需要进行优化,跳转至步骤4。若服务当前的吞吐量大于吞吐量基准值,则该服务运行正常,不需要进行优化,跳转至步骤5。
[0078] (4)步骤4
[0079] 在本步骤中将调用吞吐量优化算法,即将违规的吞吐量优先型服务的吞吐量基准值作为该服务制定磁盘I/O资源分配值,从而完成吞吐量优化工作。
[0080] (5)步骤5
[0081] 将收集到的尾部延迟数据与该服务的尾部延迟指标进行对比,若服务当前尾部延迟大于服务尾部延迟基准值,则该服务处于性能违规状态,需要进行优化,跳转至步骤6。若服务当前尾部延迟小于基准值,则该服务运行正常,不需要进行优化,跳转至步骤7。
[0082] (6)步骤6
[0083] 本步骤主要是为需要优化的延迟敏感型服务划分优先级,并调用尾部延迟优化算法。
[0084] 其中服务优先级的划分需要计算每个服务尾部延迟的违规度Vio并收集其该服务的吞吐量,根据这两个影响因素计算当前服务优先级。
[0085] 根据服务优先级计算结果为优先级最高的服务调用尾部延迟优化算法,完成尾部延迟优化工作。
[0086] (7)步骤7
[0087] 为保证当前混部场景的容器I/O隔离性能够维持正常,需要循环步骤(1)至步骤(6),从而在服务性能受损,I/O隔离性遭到破坏时及时进行优化。