一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向IO转发系统的IO处理框架及IO请求处理方法与流程

2022-03-22 20:19:23 来源:中国专利 TAG:

一种面向io转发系统的io处理框架及io请求处理方法
技术领域
1.本发明涉及一种面向io转发系统的io处理框架及io请求处理方法,属于高性能计算技术领域。


背景技术:

2.高性能存储系统是高性能计算系统的重要组成部分。在高性能计算机的使用过程中,运行在计算节点上的科学计算应用课题需要将计算结果或中间临时状态保存到存储系统之上,以便后续的应用进行分析,或者用于当课题异常退出后使用这些状态进行恢复。高性能计算应用能够从存储系统获得。io性能直接限制了应用执行的效率和计算节点的利用率。存储系统提供的io性能受到io并发度、io请求的类型、多作业干扰等方面的影响。
3.近年来,高性能计算机系统得到实足的发展,计算节点数达到百万核甚至千万核以上,计算规模的增加也意味着科学计算课题规模的增加,而课题规模的增加必然会带来存储系统处理的io并发度的增加,高io并发度会降低存储系统性能。为了缓解计算节点规模增加对存储系统性能的影响,io转发架构被广泛地应用在高性能计算系统中。在这种架构中,来自大规模计算节点的io请求首先汇聚到规模相对较小io转发节点上,io转发节点再访问后端的存储系统完成io请求。io转发架构在降低io并发度上有着巨大优势,大大减少了后端存储系统的负载。
4.传统的io转发服务器在处理io请求时采用单层的io调度策略,在这种调度策略中,通常有两个独立线程用于从计算节点接收io请求和将io请求的结果发送给计算节点,除此之外系统还有大量的worker线程,用于访问存储系统完成计算节点的io执行。这种调度算法实现简单,且通过worker线程的数量可以控制对存储系统的并发度,因此被广泛地应用在高性能计算系统中。
5.目前高性能计算系统已经发生了较大改变,致使传统io转发系统的调度策略已经不能满足目前高性能计算系统系统,高性能计算系统的变化包括:(1)应用的io模式变得越来越丰富:传统高性能计算的io多以大块、写请求为主,io转发系统通常假设其所处理的io请求都是类似的,但近年来ai、高精度科学计算等应用对io访问需求多样,随机读、读写混合等开始出现。
6.(2)多应用的io干扰越来越严重:随着计算节点规模的增大,单个高性能计算系统同时运行多个课题已经成为常态,在这种情况下,多个不同应用的io请求有可能会汇聚到同一个io转发节点上,io转发节点可能需要同时处理来自多个不同应用的不同类型的请求。
7.(3)存储介质的异构性越来越明显:传统存储系统底层通常是基于磁盘构建,介质的io访问延迟是相似的,目前ssd等新型介质的出现,后端存储系统在执行io请求时可能会出现不同的延迟和性能。
8.在高性能计算io转发架构中,io转发服务器需要同时处理来自不同计算节点、不同应用的高并发io请求,这些高并发的io请求相互竞争,如何合理调度这些io请求对于高
性能计算系统的io性能以及存储系统的性能发挥有着重要影响。
9.现有的技术在处理io请求时不区分io请求的类型、特点,这种处理方法使io调度无法根据io进行优化,使io调度存在一定的盲目性;现有技术在io请求处理时采用一维的划分方法,即将所有的io请求放置到几个确定好优先级的队列中,调度算法通过线性地处理队列中的请求来完成io调度,这种调度方法使io请求较难进行合并,也会在后端存储中产生大量的随机访问,降低系统性能;现有的技术无法应用异构存储介质,在底层介质性能差异大的情况下,会造成延迟大的io请求阻塞其他的io请求。


技术实现要素:

10.本发明的目的是提供一种面向io转发系统的io处理框架及io请求处理方法,用于解决高性能计算转发架构下的io转发服务器的io调度问题。
11.为达到上述目的,本发明采用的技术方案是:提供一种面向io转发系统的io处理框架,其特征在于,在每个io请求中增加作业的job id,用于区分io请求的类型,包括以下功能模块:作业粒度的io调度单元,用于在io转发节点上,根据作业的job id将所有的io请求进行分类,以便实现多作业间的io请求调度频率和调度次数的安排,以及实现作业间的io请求区分以及作业间的io请求隔离、编排和qos管控;文件粒度的io调度单元,用于将来自同一作业的io请求按照文件进行分配,并以文件为单位进行调度;io操作级别的io调度单元,用于在io请求调度过程中分析来自同一个文件的多个io请求之间的依赖关系,并根据这些依赖关系,实现合并写io请求和优化预读;还包括一动态资源调度单元,用于根据各个io调度单元对io请求的执行情况,统计各个io分类的io执行平均延迟,对于平均延迟比较高的io分类中io请求,如延迟较高的文件级别或者是作业级别的io请求,采用降低并发度的方法让出系统资源,用于服务其他类别的较快的io请求。
12.还提供一种面向io转发系统的io请求处理方法,基于面向io转发系统的io处理框架,根据io请求携带的作业信息、文件信息和操作类型信息,对io请求进行分类调度和执行,具体包括以下步骤:s1、计算节点把携带作业jobid、文件标志信息、io操作类型的io请求经过网络发送到io转发节点上;s2、io转发节点按照以下步骤对接收到的io请求进行分类:s21、io转发节点存储服务程序从io请求中把jobid字段解析出来,将所有的io请求按照jobid进行分类,将同一个jobid的io请求放入第一级队列中,获得按照jobid进行分类的若干个作业io请求队列;s22、io转发节点存储服务程序从io请求中把文件标志信息取出来,将属于同一个jobid的io请求按照文件标志信息进行分类,将属于相同文件的io请求放入同一个jobid的文件队列中,获得按照文件标志信息进行分类的若干个文件io请求队列; s23、io转发节点存储服务程序从io请求中把属于同一个文件的io请求按照io操作类型将s22中获得的文件io请求队列中的io请求再进一步进行分类,获得按照文件标志
信息进行分类的若干个操作类别的io请求队列;s3、分类完成后,io转发节点的动态资源调度单元执行以下步骤完成对io请求的处理:s31、动态资源调度单元采用io调度算法选择某一个作业io请求队列进行调度;s32、动态资源调度单元采用轮询的方式,公平地从作业io请求队列中选择某一个文件的io请求队列;s33、动态资源调度单元从属于同一个文件的io请求队列中选择一个io请求进行调度;在进行io请求处理时,优先选择元数据进行调度;当元数据调度完成后,再选择数据io的请求进行调度;在进行io请求调度时,分析io请求之间的依赖关系,决定io请求是否可以进行合并,如果不能合并,则按照他们访问的文件范围从小到大的顺序进行调度,如果可以合并,则将io请求操作的文件范围进行合并,形成一个大的io请求进行调度;s34、动态资源调度单元根据选中io请求所在请求队列的io执行时间平均延迟,将io请求放到对应优先级的io执行线程上执行;s35、io请求执行完成后,io执行线程把io请求的执行时间记录到对应的文件的io请求队列中,io请求队列根据所记录的io请求的执行时间评估每个io请求可能的执行时间,作为动态资源调度单元选择执行线程的依据。
13.上述技术方案中进一步改进的方案如下:1. 上述方案中,s23中所述文件操作类型包括元数据请求、读数据请求、写数据请求。
14.2. 上述方案中,s31中所述io调度算法包括现有的基于令牌桶的io调度算法、基于公平调度策略的io调度算法。
15.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明一种面向io转发系统的io处理框架及io请求处理方法,通过多级的io请求处理框架,解决了传统io转发架构下的io调度算法无法应对多作业io区分、io请求类型差异、高并发模式下io访问局部性以及底层存储差异性等问题。
附图说明
16.附图1为本发明中io转发架构的示意图;附图2为io转发节点调度过程示意图;附图3为本发明中多级调度框架示意图。
具体实施方式
17.实施例:本发明提供一种面向io转发系统的io处理框架,其特征在于,在每个io请求中增加作业的job id,用于区分io请求的类型,包括以下功能模块:作业粒度的io调度单元,用于在io转发节点上,根据作业的job id将所有的io请求进行分类,以便实现多作业间的io请求调度频率和调度次数的安排,以及实现作业间的io请求区分以及作业间的io请求隔离、编排和qos管控;
文件粒度的io调度单元,用于将来自同一作业的io请求按照文件进行分配,并以文件为单位进行调度,从一个较长的时间段,维护了文件的局部性,从而使底层可以使用预读以及合并写等功能来减少后端文件系统的网络传输,提高系统性能;io操作级别的io调度单元,用于在io请求调度过程中分析来自同一个文件的多个io请求之间的依赖关系,并根据这些依赖关系,实现合并写io请求和优化预读;还包括一动态资源调度单元,用于根据各个io调度单元对io请求的执行情况,统计各个io分类的io执行平均延迟,对于平均延迟比较高的io分类中io请求,如延迟较高的文件级别或者是作业级别的io请求,采用降低并发度的方法让出系统资源,用于服务其他类别的较快的io请求,从而起到提高整体性能的目的。
18.还提供一种面向io转发系统的io请求处理方法,基于面向io转发系统的io处理框架,根据io请求携带的作业信息、文件信息和操作类型信息,对io请求进行分类调度和执行,具体包括以下步骤:s1、计算节点把携带作业jobid、文件标志信息、io操作类型的io请求经过网络发送到io转发节点上;s2、io转发节点按照以下步骤对接收到的io请求进行分类:s21、io转发节点存储服务程序从io请求中把jobid字段解析出来,将所有的io请求按照jobid进行分类,将同一个jobid的io请求放入第一级队列中,获得按照jobid进行分类的若干个作业io请求队列;s22、io转发节点存储服务程序从io请求中把文件标志信息取出来,将属于同一个jobid的io请求按照文件标志信息进行分类,将属于相同文件的io请求放入同一个jobid的文件队列中,获得按照文件标志信息进行分类的若干个文件io请求队列; s23、io转发节点存储服务程序从io请求中把属于同一个文件的io请求按照io操作类型将s22中获得的文件io请求队列中的io请求再进一步进行分类,获得按照文件标志信息进行分类的若干个操作类别的io请求队列;s3、分类完成后,io转发节点的动态资源调度单元执行以下步骤完成对io请求的处理:s31、动态资源调度单元采用io调度算法选择某一个作业io请求队列进行调度;s32、动态资源调度单元采用轮询的方式,公平地从作业io请求队列中选择某一个文件的io请求队列;s33、动态资源调度单元从属于同一个文件的io请求队列中选择一个io请求进行调度;在进行io请求处理时,优先选择元数据进行调度;当元数据调度完成后,再选择数据io的请求进行调度;在进行io请求调度时,分析io请求之间的依赖关系,决定io请求是否可以进行合并,如果不能合并,则按照他们访问的文件范围从小到大的顺序进行调度,如果可以合并,则将io请求操作的文件范围进行合并,形成一个大的io请求进行调度;s34、动态资源调度单元根据选中io请求所在请求队列的io执行时间平均延迟,将io请求放到对应优先级的io执行线程上执行;s35、io请求执行完成后,io执行线程把io请求的执行时间记录到对应的文件的io
请求队列中,io请求队列根据所记录的io请求的执行时间评估每个io请求可能的执行时间,作为动态资源调度单元选择执行线程的依据。
19.s23中所述文件操作类型包括元数据请求、读数据请求、写数据请求。
20.s31中所述io调度算法包括现有的基于令牌桶的io调度算法、基于公平调度策略的io调度算法。
21.对上述实施例的进一步解释如下:本发明提出一种新的io调度框架,使io调度系统使用不同的维度对io请求进行划分和区分,避免io调度的盲目性,还提出一种多维的调度机制,将io请求分别从作业、文件、io操作等维度进行分别调度,挖掘io请求之间的依赖,维持数据访问局部性特点,还提出了io延迟统计及反馈的方法来解决现有技术无法应用异构存储介质的问题。
22.多级io处理框架:本发明将io转发架构下的io调度分成三个层次,分别应对不同的调度需求,为了实现分层的调度,系统需要在每个io请求中携带着作业的job id作为io类型的区分。
23.对于三个层次的io调度及其调度目标描述如下: (1)作业粒度的io调度:该调度层次主要解决作业之间的io请求区分以及作业之间的io请求隔离及编排。对于一个io转发节点来说,它可能服务来自多个作业的io请求,传统的io调度策略根据io请求的到达顺序进行io安排,无法起到对作业的io请求进行优先级调度和qos保证等功能。作业粒度的io调度则在io转发节点上根据作业的job id将所有的io请求进行分类,根据这些分类可以方便地实现多作业间的io调度频率和调度次数的安排,从而实现对不同作业的io隔离和qos管控功能。
24.(2)文件粒度的io调度:该层次主要将来自同一作业的io请求在文件级别进行分类,并以文件为单位进行调度。由于并发的原因,到达io转发节点的io请求可能失去了文件局部性的特点,这种做法可能造成后端文件系统的访问变成完全随机,这样会大大降低文件系统的性能。基于文件级别的调度,将io请求按照文件进行分配,从一个较长的时间段,维护了文件的局部性,从而使底层可以使用预读以及合并写等功能来减少后端文件系统的网络传输,提高系统性能。
25.(3)io操作级别的io调度:本层次的调度是针对具体文件而言的。对于同一个文件,系统可能有读有写,而且读请求或者写请求的顺序影响着后端文件系统io操作的顺序。本层次的调度则在调度过程中分析同一个文件的多个io请求之间的依赖关系,根据这些依赖关系达到合并io请求,优化预读等功能。
26.除了三层调度的具体目标之外,本调度框架还支持动态资源调整机制,对于每个层次的调度,系统会根据io调度的情况统计io执行的延迟,对于延迟比较高的io请求,如文件级别或者是作业级别,则采用降低并发度的方法来让出系统资源服务其他相应较快的作业或文件,从而起到提高整体性能的目的。
27.io转发节点上有多个worker线程来并发地执行io调度程序选中的io请求。每个worker线程分别处理不同执行时间的io请求。对于io执行时间较长的io请求,worker采用异步的方式增加低延迟io请求的并发数量,从而提高吞吐率;对于执行时间较短的io请求,worker则采用同步io执行方式,减少对于后端系统的压力。
28.附图1描述了该专利面向的io转发架构示意图。在这种架构中,io节点的请求通过
io转发服务发送到io转发节点上。io转发节点对来自计算节点的请求进行重排,并将它提交到后端的并行文件系统上。等在后端并行文件系统执行完成后,io转发节点再将结果返回给对应的计算节点完成io请求的处理。
29.附图2描述了io转发节点的io整个io调度过程。首先io转发节点的io转发服务会不断地从网络接收io请求,并将io请求放入到io请求队列中等待底层的io服务线程执行。一个io转发节点上运行着固定数量的io服务线程,它们并行地从io请求队列中取出io请求,并将它提交到后端文件系统执行,等待执行完成后,它将执行结果返回给对应的计算节点。
30.附图3描述了我们提出的多级io处理框架。其主要特点是,io服务线程在接收到网络消息时,会根据io请求的jobid信息,所属文件标识,io请求的操作等进行分类和重排。io服务线程在选取io请求执行时会按照jobid、文件、io操作三个层次选择调度。
31.采用上述一种面向io转发系统的io处理框架时,其通过多级的io请求处理框架,解决了传统io转发架构下的io调度算法无法应对多作业io区分、io请求类型差异、高并发模式下io访问局部性以及底层存储差异性等问题。
32.为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:并行文件系统:在高性能计算中,为整机提供共享、高并发io访问的存储系统。
33.io转发服务器:在高性能计算系统中,来自计算节点的io请求聚集到规模较小的服务器上,这些服务器接收计算节点的io请求,并通过调用后端并行文件系统的接口来提供存储服务,这类的服务器称作io转发服务器。
34.io请求调度:应用的io操作会形成众多的io请求,这些请求在执行过程中,系统可以对这些io请求进行重新编排、组织从而达到提高系统性能、满足用于io需求的目的,该过程称为io请求调度。
35.上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献