发明内容
有鉴于此,本发明提出一种数据收发控制方法及其装置、计算设备和计算机存储介质,用以解决已有的数据收发模式无法提供系统高性能的问题。
第一方面,本发明提供一种数据收发控制方法,所述方法包括:基于预设的采样周期,对数据收发的进程进行多次采样,采样的对象包括数据收发进程中产生的时间延迟;将采样获得的多个时间延迟作为多个样本,将所述多个样本中的每一个样本与预设阈值进行比较,并对比较结果进行统计;根据统计结果对数据收发进程的工作模式进行调整。
根据本发明所述的方法,将所述多个样本中的每一个样本与预设阈值进行比较,并对比较结果进行统计,包括:判断所述多个样本中的每一个样本是否大于所述预设阈值,并将大于所述预设阈值的样本作为第一集合,将小于或等于所述预设阈值的样本作为第二集合。
根据本发明所述的方法,所述根据统计结果对数据收发进程的工作模式进行调整,包括:如果所述第一集合中的样本数的统计结果高于第一预定数值,使进程进入第一工作模式。
根据本发明所述的方法,所述第一集合中的样本数的统计结果为所述第一集合中的样本数与所述第一集合和所述第二集合的总样本数的比值。
根据本发明所述的方法,所述根据统计结果对数据收发进程的工作模式进行调整,包括:如果所述第二集合中的样本数的统计结果高于第二预定数值,使进程进入第二工作模式。
根据本发明所述的方法,所述第二集合中的样本数的统计结果为所述第一集合中的样本数与所述第一集合和所述第二集合的总样本数的比值。
根据本发明所述的方法,所述第一集合和/或所述第二集合中的样本数为恒定值;所述方法还包括:当得到新的样本时,以新的样本替换所述第一集合或所述第二集合中的最早的样本。
根据本发明所述的方法,所述方法还包括:当进程中发生I/O操作时,判断当前时刻是否符合所述采样周期;如果符合所述采样周期,则对当前I/O操作进行采样;如果不符合所述采样周期,则不做采样,等待下一次符合所述采样周期的时刻到来。
根据本发明所述的方法,所述第一工作模式包括一次循环epoll工作模式。
根据本发明所述的方法,所述第二工作模式包括轮询polling工作模式。
第二方面,本发明还提供一种数据收发控制装置,所述装置包括:采样处理模块,用于基于预设的采样周期,对数据收发的进程进行多次采样,采样的对象包括数据收发进程中产生的时间延迟;统计处理模块,用于将采样获得的多个时间延迟作为多个样本,将所述多个样本中的每一个样本与预设阈值进行比较,并对比较结果进行统计;工作模式处理模块,用于根据统计结果对数据收发进程的工作模式进行调整。
第三方面,本发明还提供一种计算设备,其包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以执行如上所述的数据收发控制方法。
第四方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现如上所述的数据收发控制方法。
利用本发明可以对数据收发进程中的时间延迟进行周期性采样,通过对样本的分析统计,能够掌握数据收发进程中的延迟特性,根据这种延迟特性有针对性地调整数据收发进程的工作模式,能够提高系统性能。
具体实施方式
以下结合附图及实施例,对本发明进行详细描述。应理解,所描述的具体实施例仅用于解释本发明,而并不用于限定本发明。文中的诸如第一、第二等用语仅用来对一个实体(或操作)与另一个实体(或操作)进行区分,而不表示这些实体(或操作)之间存在任何关系或顺序;另外,文中的诸如上、下、左、右、前、后等表示方向或方位的用语,仅表示相对的方向或方位,而非绝对的方向或方位。在没有额外限制的情况下,由语句“包括”限定的要素,不排除在包括所述要素的过程、方法、物品或者设备中还存在其他要素。
本发明对数据收发的进程(有时也称线程)进行周期性采样,通过对样本的分析统计,调整当前的数据收发模式,目的是使数据收发进程的延迟尽可能缩短。以下对本发明的各个方面进行详细描述。
图1示出了本发明实施例的一种数据收发控制方法流程框图,其包括:
S101,基于预设的采样周期,对数据收发的进程进行多次采样,采样的对象包括数据收发进程中产生的时间延迟;
S102,将采样获得的多个时间延迟作为多个样本,将所述多个样本中的每一个样本与预设阈值进行比较,并对比较结果进行统计;
S103,根据统计结果对数据收发进程的工作模式进行调整。
通过上述方案,可以对数据收发进程进行周期性采样,且采样的对象内容包括数据收发进程中的时间延迟,通过对这些样本的分析统计,能够掌握数据收发进程中的延迟特性,根据这种延迟特性有针对性地调整数据收发进程的工作模式,能够缩短延迟时间,提高系统性能。
在本发明的一种实施方式中,可根据应用环境的实际需求,设定所述的采样周期,例如对于延迟敏感程度较高的高性能场景,应设置较短的采样周期。
在数据收发过程中,按照设定的采样周期对进程采样,可将每一次采样称为一个采样点,一个采样点也就是在当前实际有数据收发的时刻,到临近的下一次实际有数据收发的时刻的时间间隔,这个时间间隔就是数据收发的时间延迟。
在本发明的一种实施方式中,可根据应用环境的实际需求,设定所述的预设阈值,例如对于延迟敏感程度较高的高性能场景,应设置较小(或称较短)的阈值。
这里的“阈值”,也是一个时间间隔,将采集样本的时间延迟与该阈值做比较,大于阈值的样本延迟,认为该延迟过大,是不可接受的延迟,可将这类样本延迟称为第一类样本延迟;小于或等于阈值的样本延迟,认为该延迟在可接受的范围内,可将这类样本延迟称为第二类样本延迟。
在本发明的一种实施方式中,利用采样控制器对样本延迟的情况进行统计,得到统计率,并根据统计率采取相应地处理。
具体来讲,对于第一类样本延迟即大于阈值的样本延迟,利用采样控制器计算这些样本的数量与总的采样数量的比值;如果该比值大于预定的第一数值,则认为当前数据收发进程延迟较大,此时,采样控制器令用户进程进入等待队列(睡眠状态),并由下一次I/O事件来唤醒,此时的工作模式为类似于一次循环epoll的工作模式,本发明称为epoll-like模式,是一种相对节省资源的模式,符合当前进程的工作状态。
另一方面,对于第二类样本延迟即小于或等于阈值的样本延迟,采样控制器也计算这些样本的数量与总的采样数量的比值;如果该比值大于预定的第二数值(第二数值与前述的第一数值可以相等,也可以不相等),则认为当前数据收发进程延迟较小,采样控制器令用户进程转入类似于轮询polling的工作模式,本发明称为polling-like模式,是一种相对高效的模式,则进程会不断的轮询来收发数据,而不再引入唤醒延迟,符合当前进程的工作状态。
上述处理方式的好处在于,对数据收发进程进行持续采样,每一次采样数据可以获得当前进程的延迟特性,当高延迟占据大比例的I/O事件时,将进程挂起,进入睡眠状态,在进程被唤醒之前不再询问CPU是否进行收发,进程将在这种节能模式下继续工作;但是,当新的采样数据统计率表明,低延迟已占据大比例的I/O事件时,采样控制器会将进程由节能模式切换为高效模式,以获得最佳性能。
在本发明的一种实施方式中,在持续的采样过程中,随着时间继续滚动,采样控制器会补充新的采样点进来,而抛弃老的采样点,因而每次采样后,采样控制器会重新计算统计率,并根据前述的判断机制,确定是否需要调整当前的进程模式。这样处理的好处是,采样控制器得到的统计率可以持续地更新,动态地反映当前进程的工作状态,确保对当前进程模式的调整准确、高效。
在本发明的一种实施方式中,在进程有实际I/O操作时,应首先判断是否对该I/O操作进行采样,再做下一步处理。具体地,应首先判断当前时刻是否符合采样周期,由于在一个采样周期内只采样一次,如果符合采样周期,说明当前应该进行采样;反之,如果不符合采样周期,说明当前不应该采样,否则得到的样本将不能客观地反映进程的工作状态。进行上述判断处理之后,再进行本发明的采样及统计等处理,提高采样数据的准确度。
以下通过具体的实例,描述本发明实施例的可选的具体处理过程。需要说明的是,本发明的方案并不依赖于具体的算法,在实际应用中,可选用任何已知或未知的硬件、软件、算法、程序或其任意组合等来实现本发明的方案,只要是采用了本发明方案的实质思想,均落入本发明的保护范围。
图2示出了本发明一个实施例的数据收发控制方法的原理示意框图,该方法通过I/O采样控制器来动态判断系统状态,在系统状态满足所设定的条件时,令用户线程/进程进入等待队列(睡眠),并由下一次I/O事件来唤醒,此时的工作模式为epoll-like模式,相对节省模式;当I/O采样控制器判断已经满足polling-like模式的条件时转入polling,进入相对高效模式。
本发明将以上的控制模式称为随机采样预测的线程模型Radom Poll模型,为描述方便可缩写为RPoll模型。以下对RPoll模型中进入两种模式的具体条件进行说明。
●进入epoll-like模式的具体条件:
当I/O采样控制器,在n个(例如10个)采样周期(例如5s)内的采样点延迟大于给定阈值(例如50us)统计率达到预定的高水平时(例如90%),应当进入epoll-like模式。
●进入polling-like模式的具体条件:
当I/O采样控制器,在n个(例如10个)采样周期(例如5s)内的采样点延迟在给定阈值(例如50us)以内的统计率达到预定的高水平时(例如90%),应当进入polling-like模式。
需要说明的是,以上处理过程中涉及到的参数值:采样周期个数n、采样周期的时长、给定阈值以及统计率的阈值,均是可配置的,可根据系统性能要求进行修改。这样设置的好处是,可使这种控制机制始终符合应用环境的要求,最大限度地达到既能节约资源同时又能提供高性能的目的。
图3示出了本发明实施例的一种采样控制器的处理流程图,一个采样周期采集一次数据,并保存,随着时间滚动,如果n个采样周期(假设为10个)完成,假设其中90%(统计率)的采样点大于50us,则认为I/O状态需要进入节能模式(epoll-like)(如果认为实际的唤醒延迟在3-5us左右,在这种情况下唤醒延迟可以忽略);此时会把线程放入等待队列,等待I/O事件唤醒,后续通过唤醒/睡眠的节能模式继续工作;时间继续滚动,会逐渐丢弃老的采样点,每次采样时重新计算统计率,如果在某一次采样时发现目前90%(统计率)的采样点小于50us,则认为I/O状态需要进入高效模式(polling-like),这时进程/线程会不断的轮询来收发数据,不再引入唤醒延迟。
图4示出了本发明实施例判断是否采样的流程框图。在进程有实际I/O操作的时候,首先判断是否要进行采样,即:是否满足一个采样周期内已经采样的条件(一个采样周期只采样一次),如果需要采样,则记录一个时间戳等待下一次I/O事件,开始执行前述的I/O采样控制器的逻辑(如图3),再进行实际的数据收发。
相对于单纯的epoll(如图5)或polling(如图6)模式,epoll可以很好的利用CPU资源,但是对于延迟敏感型的业务有唤醒开销,可能不被接受;polling由于没有唤醒开销,对延迟敏感业务更友好,但在没有实际业务的时候或者I/O本身性能在唤醒开销可以被忽略的量级,与实际负载的动态变化有关系的时候,会空占CPU,导致资源、功耗的浪费。
本发明提出的基于随机采样的模型RPoll用于解决I/O模型的高性能模式和节能模式的自适应问题,可以更好的在CPU资源消耗(包括功耗)和极致I/O性能之间取得平衡,在达到合理利用资源的同时保持更好的性能,尤其对于高性能场景,以及实际负载情况的延迟消耗已经足以覆盖唤醒延迟的情况下,可以让业务在闲时或者网络健康状态不好等情况下,完全主动释放资源,达到最优化的综合效果,在需要的时候又能获得最佳性能,可以同时满足RDMA等高性能场景下的资源平衡。
与本发明实施例的方法相对应地,本发明还提供一种数据收发控制装置、计算设备和计算机存储介质。
其中,所述的计算设备包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行本发明实施例所述的方法中的各步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现本发明实施例所述的数据收发控制方法中的各步骤,包括:
基于预设的采样周期,对数据收发的进程进行多次采样,采样的对象包括数据收发进程中产生的时间延迟;
将采样获得的多个时间延迟作为多个样本,将所述多个样本中的每一个样本与预设阈值进行比较,并对比较结果进行统计;
根据统计结果对数据收发进程的工作模式进行调整。
应当指出,在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机程序指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机程序指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
图7示出了能够实现根据本发明实施例的方法和设备的示例性硬件架构的结构图,例如本发明实施例的设备。其中,计算设备1000包括输入设备1001、输入接口1002、处理器1003、存储器1004、输出接口1005、以及输出设备1006。
其中,输入接口1002、处理器1003、存储器1004、以及输出接口1005通过总线1010相互连接,输入设备1001和输出设备1006分别通过输入接口1002和输出接口1005与总线1010连接,进而与计算设备1000的其他组件连接。
具体地,输入设备1001接收来自外部的输入信息,并通过输入接口1002将输入信息传送到处理器1003;处理器1003基于存储器1004中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器1004中,然后通过输出接口1005将输出信息传送到输出设备1006;输出设备1006将输出信息输出到计算设备1000的外部供用户使用。
计算设备1000可以执行本发明上述的数据收发控制方法中的各步骤,包括:
基于预设的采样周期,对数据收发的进程进行多次采样,采样的对象包括数据收发进程中产生的时间延迟;
将采样获得的多个时间延迟作为多个样本,将所述多个样本中的每一个样本与预设阈值进行比较,并对比较结果进行统计;
根据统计结果对数据收发进程的工作模式进行调整。
处理器1003可以是一个或多个中央处理器(英文:Central Processing Unit,CPU)。在处理器601或处理器701是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
存储器1004可以是但不限于随机存储存储器(RAM)、只读存储器(ROM),可擦除可编程只读存储器(EPROM)、光盘只读存储器(CD-ROM)、硬盘等中的一种或多种。存储器1004用于存储程序代码。可以理解,本发明实施例提供的任一模块或全部模块的功能可以用央处理器1003实现。
本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处可参见方法实施例部分的说明。