[go: up one dir, main page]

CN117891583B - 异步并行i/o请求的进程调度方法、装置及设备 - Google Patents

异步并行i/o请求的进程调度方法、装置及设备 Download PDF

Info

Publication number
CN117891583B
CN117891583B CN202410295509.7A CN202410295509A CN117891583B CN 117891583 B CN117891583 B CN 117891583B CN 202410295509 A CN202410295509 A CN 202410295509A CN 117891583 B CN117891583 B CN 117891583B
Authority
CN
China
Prior art keywords
scheduling
candidate
request
results
requests
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.)
Active
Application number
CN202410295509.7A
Other languages
English (en)
Other versions
CN117891583A (zh
Inventor
李锐喆
孙超
赵彤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Carpura Technology Co ltd
Original Assignee
Beijing Carpura Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Carpura Technology Co ltd filed Critical Beijing Carpura Technology Co ltd
Priority to CN202410295509.7A priority Critical patent/CN117891583B/zh
Publication of CN117891583A publication Critical patent/CN117891583A/zh
Application granted granted Critical
Publication of CN117891583B publication Critical patent/CN117891583B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供一种异步并行I/O请求的进程调度方法、装置及设备,涉及进程调度技术领域,该方法包括:响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果;根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;在I/O进程组中各I/O进程中按照最终调度结果进行I/O请求的调度和执行。I/O进程组中的所有I/O进程按照完全相同的最终调度结果进行I/O请求的调度和执行,确保了异步并行I/O请求在进程间调度的一致性;且最终调度结果是基于所有I/O进程的候选调度结果来确定的,并不依赖于某一个或者某一些进程,能够迅速响应I/O请求优先级的改变。

Description

异步并行I/O请求的进程调度方法、装置及设备
技术领域
本发明实施例涉及进程调度技术领域,具体涉及一种异步并行I/O请求的进程调度方法、装置及设备。
背景技术
随着计算机计算性能的提升,应用程序的计算规模也随之增加,然而计算机输入/输出(Input/Output,I/O)性能的提升速度远远跟不上计算性能的提升速度,I/O过程成为不少应用程序的性能瓶颈。为了尽可能地提升I/O性能,现代高性能计算机在硬件层面使用了可进行并行存取的磁盘阵列,在系统层面引入了并行文件系统来尽可能提升I/O性能的上限。为了让应用程序充分利用现代高性能计算机的I/O性能,并行I/O系统应运而生;而为了进一步减少I/O开销对程序性能的影响,又出现了异步I/O系统,使I/O操作和应用程序的计算过程能够在时间上重叠进行。进一步地将并行I/O系统和异步I/O系统进行结合,便可以得到异步并行I/O系统。I/O请求的异步并行处理可以由一组专用的进程或线程组成的I/O进程组来执行,并且使用I/O请求队列来对若干异步I/O请求进行缓存。具体的,当应用程序进行I/O操作时,I/O请求会被先放入I/O请求队列中,I/O进程组则会从I/O请求队列中取出并完成各I/O请求,从I/O请求队列中取出I/O请求的过程被称为I/O请求的调度。在异步并行I/O场景下,I/O进程组中的每个进程都会有I/O请求队列的一个副本,I/O进程组中的各个进程基于I/O请求队列的副本进行I/O请求的调度。
I/O进程组通常以协同工作的方式来完成各I/O请求,这就要求I/O进程组中的所有进程保持完全相同的I/O请求调度结果。当调度结果不完全相同时,则可能会导致数据读/写出错,甚至会导致应用程序的死锁。在正常情况下,应用程序的不同进程之间在I/O请求提交上的顺序可保持完全相同。因此,当采用最直观的先入先出(First Input FirstOutput,FIFO)调度方式时,无需额外处理就能保证I/O进程组中的各进程在I/O请求调度结果上的完全相同(先进先出调度方式的调度结果与应用程序发起I/O请求的顺序相同)。但是,当采用支持优先级动态调整的调度方式时,则可能出现I/O进程组中的各进程间调度结果不一致的情况。例如,开始时I/O进程组中各进程的I/O请求队列中均有A、B、C三个请求;随后,部分进程在收到优先级最高的请求D之后进行调度,确定D为要处理的下一个I/O请求;剩余进程在收到请求D之前进行调度,确定A为要处理的下一个I/O请求;最终出现部分进程要处理请求D、部分进程要处理请求A的情况。综上所述,亟需一种用于实现异步并行I/O请求在进程间一致的调度方法。
发明内容
本发明实施例提供一种异步并行I/O请求的进程调度方法、装置及设备,用以解决现有异步并行I/O请求在进程间调度不一致的问题。
第一方面,本发明实施例提供一种异步并行I/O请求的进程调度方法,包括:
响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果,候选调度结果包括调度设置信息和候选I/O请求;
根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;
在I/O进程组中各I/O进程中按照最终调度结果进行I/O请求的调度和执行。
一种实施例中,I/O进程组中各I/O进程分别确定各自的候选调度结果,包括:
在各I/O进程中分别获取各自的调度设置信息;
分别在各I/O进程的I/O请求队列中,基于各自的调度设置信息确定出各自的候选I/O请求;
在各I/O进程中,根据候选I/O请求与调度设置信息生成各自的候选调度结果。
一种实施例中,根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,包括:
从所有I/O进程的候选调度结果中,把所有I/O进程中优先程度最高的候选调度结果确定为最终调度结果,或者把随机选出的一个进程的候选调度结果确定为最终调度结果;
当两个候选调度结果的调度设置信息不同时,调度设置信息为显式调度控制的候选调度结果的优先程度高于调度设置信息为自动调度方法的候选调度结果;其中,显式调度控制来源于应用程序所发起的会影响I/O请求调度的命令,自动调度方法则是异步I/O系统在没有受到应用程序影响时对I/O请求的自动调度。
一种实施例中,所述方法还包括:
当两个候选调度结果的调度设置信息相同时,候选I/O请求数量不同的候选调度结果的优先程度不同。
一种实施例中,所述方法还包括:
应用程序所发起的会影响I/O请求调度的命令包括以下命令中的一种或多种:同步I/O命令、等待完成命令、暂停调度命令、恢复调度命令和优先调度命令。
一种实施例中,所述方法还包括:
当两个候选调度结果的调度设置信息相同且存在暂停调度命令时,候选I/O请求少的候选调度结果的优先程度高;
当两个候选调度结果的调度设置信息相同且不存在暂停调度命令时,候选I/O请求多的候选调度结果的优先程度高。
一种实施例中,I/O进程组中各I/O进程按照最终调度结果进行I/O请求的调度和执行,包括:
把最终调度结果中的候选I/O请求确定为I/O请求调度结果;
各I/O进程在各自的I/O请求队列中查找符合I/O请求调度结果的待调度I/O请求;
当不存在待调度I/O请求时,进行等待,并在接收到新的I/O命令后重新查找符合I/O请求调度结果的待调度I/O请求。
第二方面,本发明实施例提供一种异步并行I/O请求的进程调度装置,包括:
响应模块,用于响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果;
处理模块,用于根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;
执行模块,用于在I/O进程组中各I/O进程中按照最终调度结果进行I/O请求的调度和执行。
第三方面,本发明实施例提供一种电子设备,包括:
至少一个处理器和存储器;
存储器存储计算机执行指令;
至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如第一方面任一项所述的异步并行I/O请求的进程调度方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面任一项所述的异步并行I/O请求的进程调度方法。
本发明实施例提供的异步并行I/O请求的进程调度方法、装置及设备,通过响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果,候选调度结果包括调度设置信息和候选I/O请求;根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;在I/O进程组中各I/O进程中按照最终调度结果进行I/O请求的调度和执行。I/O进程组中的所有I/O进程按照完全相同的最终调度结果进行I/O请求的调度和执行,确保了异步并行I/O请求在进程间调度的一致性;且最终调度结果是基于所有I/O进程的候选调度结果来确定的,并不依赖于某一个或者某一些进程,能够迅速响应I/O请求优先级的改变。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本发明一实施例提供的异步并行I/O请求的进程调度方法的流程图;
图2为本发明一实施例提供的异步并行I/O请求的进程调度装置的结构示意图;
图3为本发明一实施例提供的电子设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
本发明实施例提供的异步并行I/O请求的进程调度方法,其执行主体包括但不限于支持异步并行I/O系统的服务端、终端等电子设备,电子设备可以被配置为执行本发明任一实施例所提供的方法。其中,服务端包括但不限于: 单台服务器、服务器集群、云端服务器或云端服务器集群等。服务器可以是独立的服务器, 也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network, CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
图1为本发明一实施例提供的异步并行I/O请求的进程调度方法的流程图。如图1所示,本实施例提供的异步并行I/O请求的进程调度方法可以包括:
S101、响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果,候选调度结果包括调度设置信息和候选I/O请求。
本实施例中I/O请求的调度操作是向I/O进程组发送的,用于使I/O进程组调度I/O请求队列中的I/O请求的操作。I/O进程组是指I/O请求的异步并行处理时所需要使用的由一组专用的进程或线程组成的I/O进程组(当采用一组专用的I/O线程时,各I/O线程通常由应用程序的计算进程创建, 因此各I/O线程属于不同的计算进程, 包含I/O线程的所有进程也会组成一个I/O进程组), 其中,在进行I/O操作时, I/O请求会被先放入I/O请求队列中, I/O进程组则会从I/O请求队列中取出并完成各I/O请求,从队列中取出I/O请求的过程被称为I/O请求调度, 有多种调度方式, 在异步并行I/O场景的情况下, I/O进程组中的每个进程都会有I/O请求队列的一个副本, 各进程基于队列副本进行I/O请求的调度,即所述I/O进程组中包含多个I/O进程,每个I/O进程又都配置对应的I/O请求队列,方便每个I/O进程从其对应的I/O请求队列中调取I/O请求。
本实施例中I/O进程组中的每个I/O进程都要基于自身的I/O请求队列来确定候选调度结果,候选调度结果包括调度设置信息和候选I/O请求。调度设置信息用于记录产生候选调度结果的原因,可以分为两大类,一类是I/O系统自身的自动调度方法,另一类是应用程序对I/O系统的显式调度控制。自动调度方法是异步I/O系统在没有受到应用程序影响时对I/O请求的自动调度;显式调度控制来源于应用程序所发起的会影响I/O请求调度的命令,应用程序所发起的会影响I/O请求调度的命令包括以下几种中的一种或多种命令:同步I/O命令、等待完成命令、暂停调度命令、恢复调度命令和优先调度命令。有的异步并行I/O系统只有自动调度方法,有的异步并行I/O系统还同时支持显式调度控制。候选调度结果中包括的候选I/O请求可以是一条或若干条(例如支持多个I/O请求的合并执行时,会有一次调度执行多个I/O请求的情况),也可以是零条即无候选I/O请求。
一种可选的实施方式中,I/O进程组中各I/O进程分别确定各自的候选调度结果,具体可以按照以下步骤进行:
步骤1:在各I/O进程中分别获取各自的调度设置信息。
首先需要获取调度设置信息,使得能根据调度设置信息来确定待调度的候选I/O请求。调度设置信息包括两大类:自动调度方法和显式调度控制。自动调度方法包括先进先出调度方式与优先级调度方式,先进先出调度方式即先进入队列的I/O请求会先被调度;优先级调度的方式根据能容忍的延迟执行的时间大小、 I/O请求读/写数据量的大小等确定I/O请求的优先级,按照优先级的顺序对I/O请求进行调度。显式调度控制包括同步I/O命令、等待完成命令、暂停调度命令、恢复调度命令和优先调度命令。
步骤2:分别在各I/O进程的I/O请求队列中,基于各自的调度设置信息确定出各自的候选I/O请求。
分别提取各I/O进程的I/O请求队列,分别在各I/O进程的I/O请求队列中查找符合各自调度设置信息的I/O请求,确定为候选I/O请求。下面分别针对不同的调度设置信息来说明如何确定候选I/O请求。
对于可以执行同步I/O命令的异步并行I/O系统,其在收到同步I/O命令后,先把同步I/O请求放到I/O请求队列中,然后随即调度和执行同步I/O请求。因此,当调度设置信息为同步I/O命令时,候选调度结果中包含至少一条候选I/O请求。
等待完成命令用于确定相应的若干条异步I/O请求已被执行完毕。异步并行I/O系统在收到等待完成命令后,其首先查看所有相应的若干条异步I/O请求是否均已完成;当其中存在尚未调度的异步I/O请求时,异步I/O系统会立即调度执行这些异步I/O请求,以尽量不降低应用程序的运行速度。应用程序只有在所有相应的若干条异步I/O请求均已完成的情况下,才能继续执行,等待完成命令可能使得队列中后被发起的I/O请求先被调度执行。因此,当调度设置信息为等待完成命令时,候选调度结果包含至少一条候选I/O请求。
暂停调度命令用于暂停对队列中相关的若干I/O请求的调度。暂停调度命令的主要作用就是让用户能暂停对所有I/O请求的调度和执行,从而避免I/O请求竞争使用应用程序的资源;或暂停对部分I/O请求调度或执行,从而提高其他I/O请求的调度优先级。对于可以执行暂停调度命令的异步并行I/O系统,暂停调度命令通常会导致后被发起的I/O请求先被调度执行,也可能导致没有I/O请求被调度,即对应着无候选I/O请求的情况。
在可以执行恢复调度命令的异步并行I/O系统中,恢复调度命令用于恢复对队列中之前被暂停的若干I/O请求的调度。恢复调度命令与暂停调度命令是相对的。当调度设置信息为恢复调度命令时,候选调度结果中包含至少一条候选I/O请求。
在可以执行优先调度命令的异步并行I/O系统中,优先调度命令用于提高队列中若干I/O请求的调度执行优先级。该命令可能使得队列中后被发起的I/O请求先被调度执行。当调度设置信息为优先调度命令时,候选调度结果包含至少一条I/O请求。
在无上述命令的情况下,异步并行I/O系统中默认的调度方法为自动调度方法。当调度设置信息为自动调度方法时,候选调度结果中包含至少一条候选I/O请求。
步骤3:在各I/O进程中,根据候选I/O请求与调度设置信息生成各自的候选调度结果。
在确定了各I/O进程的候选I/O请求与调度设置信息之后,便可以据此生成各I/O进程的候选调度结果。一种可选的实施方式中,可以将候选I/O请求与调度设置信息组合生成候选调度结果。为了降低进程间通信的通信开销,另一种可选的实施方式中,还可以根据候选I/O请求的标记与调度设置信息的标记来生成候选调度结果。其中,候选I/O请求的标记用于对候选I/O请求进行唯一标识,即可以通过候选I/O请求的标记来区分不同的候选I/O请求;调度设置信息的标记用于对调度设置信息进行唯一标识,即可以通过调度设置信息的标记来区分不同的调度设置信息。候选I/O请求的标记例如可以采用关键字表征,在应用程序发起一个I/O请求时,异步I/O系统会为该I/O请求在所有I/O进程间建立同一个关键字,以便于区别不同的I/O请求。
S102、根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果。
在确定了所有I/O进程的候选调度结果之后,便可以基于所有I/O进程的候选调度结果来确定最终调度结果。首先需要对所有I/O进程的候选调度结果进行汇集,例如可以采用消息传递接口(Message Passing Interfaces,MPI)集合通信方式来将所有I/O进程的候选调度结果汇集起来。
一种可选的实施方式中,根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,具体可以包括:由I/O进程组中的目标I/O进程对I/O进程组中所有I/O进程的候选调度结果进行汇集,在目标I/O进程中基于汇集的候选调度结果确定出最终调度结果,并由目标I/O进程将最终调度结果广播至I/O进程组中的每一个I/O进程,目标I/O进程为I/O进程组中的任意一个I/O进程。本实施例中的目标I/O进程只是从I/O进程组中选出的用于负责汇集和分析候选调度结果的进程,与I/O进程组中的其他I/O进程并无主次之分。
在从I/O进程组中选出用于负责汇集和分析的目标I/O进程之后,目标I/O进程可以采用MPI_gatherv进行分布式数据收集,从I/O进程组中的其他I/O进程中收集候选调度结果,然后根据所有I/O进程的候选调度结果确定出最终调度结果,最后目标I/O进程可以采用MPI_Bcast将分析得到的最终调度结果广播式传送至其他I/O进程。只在目标I/O进程中进行分析,可以减少计算开销。
另一种可选的实施方式中,根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,具体可以包括:在I/O进程组中的每个I/O进程中汇集所有I/O进程的候选调度结果,各I/O进程分别基于汇集的候选调度结果确定出最终调度结果。例如可以采用MPI_allgatherv使I/O进程组中的所有进程均进行分布式数据收集,每个I/O进程都会获取到汇集后的候选调度结果信息,然后每个I/O进程都可以在本地确定出最终调度结果。此时无需再对最终调度结果进行广播,减少通信开销。
需要说明的是,上述两种方式均不同于主从式调度方法。所谓主从式调度方法,是将I/O进程组中的一个进程划分为主进程,将I/O进程组中的剩余进程划分为从进程;由主进程基于主进程自身的信息确定要调度执行的I/O请求,在主I进程在确定要调度执行的I/O请求后,将此调度结果广播给所有从进程,以确保所有I/O进程都使用相同的调度结果。但是,主从式调度方法还存在缺点,其无法对I/O请求优先级的改变做到最迅速地响应,从而会导致应用程序运行速度的降低。举例来说,假设I/O进程组中有4个I/O进程(进程号为0、1、2、3)且0号I/O进程为主进程;应用程序发起了一条等待I/O请求C完成的命令,但发起C之前的请求B均未得到调度;有I/O进程先于主进程收到了该等待完成命令,但此时尚未调度执行B;而主进程在收到该等待完成命令前,已经确定要调度执行B,使得只能在完成B的执行后,才能调度C。当B的处理时间很长时,将使得应用程序一直等待C的完成,从而导致应用程序运行速度的降低。
而在本实施例提供的方法中,4个I/O进程即0、1、2、3号进程分别会基于自身的信息确定候选调度结果,也就是说会得到0号候选调度结果、1号候选调度结果、2号候选调度结果和3号候选调度结果。然后再根据0号候选调度结果、1号候选调度结果、2号候选调度结果和3号候选调度结果确定出最终调度结果。既可以分别在0、1、2、3号进程中汇集所有4个候选调度结果,分别确定出最终调度结果;也可以由0、1、2、3号进程中的任意一个进程来汇集所有4个候选调度结果,确定出最终调度结果,在向其他进程广播最终调度结果。需要特别强调的是,无论采用哪种方式,本实施例中的最终调度结果都是基于所有I/O进程的候选调度结果来确定的,并不依赖于某一个或者某一些进程,因此能够迅速响应I/O请求优先级的改变。
S103、在I/O进程组中各I/O进程中按照最终调度结果进行I/O请求的调度和执行。
在确定最终调度结果后,所有I/O进程就可以按照最终调度结果调度和执行相应的若干I/O请求。此过程中可能出现最终调度结果中部分I/O请求尚未进入部分I/O进程请求队列的情况,此时这些I/O进程经过适当等待后就能获得这些I/O请求。
一种可选的实施方式中, I/O进程组中各I/O进程按照最终调度结果进行I/O请求的调度和执行,具体可以包括:把最终调度结果中的候选I/O请求确定为I/O请求调度结果;各I/O进程在各自的I/O请求队列中查找符合I/O请求调度结果的待调度I/O请求;当不存在待调度I/O请求时,进行等待,并在接收到新的I/O命令后重新查找符合I/O请求调度结果的待调度I/O请求。其中,进行等待具体可以包括:进行等待的当前进程进入休眠状态,以释放处理器资源;在收到新的I/O命令时,结束休眠状态。
本实施例提供的异步并行I/O请求的进程调度方法,通过响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果,候选调度结果包括调度设置信息和候选I/O请求;根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;在I/O进程组中各I/O进程中按照最终调度结果进行I/O请求的调度和执行。I/O进程组中的所有I/O进程按照完全相同的最终调度结果进行I/O请求的调度和执行,确保了异步并行I/O请求在进程间调度的一致性;且最终调度结果是基于所有I/O进程的候选调度结果来确定的,并不依赖于某一个或者某一些进程,能够迅速响应I/O请求优先级的改变。
本申请中的应用程序和异步并行I/O系统满足以下基本条件:1)所有进程使用完全相同的自动调度方法,即在所有进程间,自动调度方法对同一I/O请求队列及其中所有I/O请求所得到的候选调度结果均相同;2)应用程序的各个进程按照相同的顺序调用若干显式调度控制的命令。在上述基本条件下,所有进程的候选调度结果的调度设置信息要么都相同,要么至多有两种不同的调度设置信息。并且当有两种不同的调度设置信息时,一种为自动调度方法,另一种为显式调度控制。
在上述实施例的基础上,下面将进一步来详细说明如何根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果。
一种可选的实施方式中,根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,具体可以包括:从所有I/O进程的候选调度结果中,把所有I/O进程中优先程度最高的候选调度结果确定为最终调度结果。也就是说根据候选调度结果的优先程度来确定最终调度结果,而候选调度结果的优先程度可以根据候选调度结果的调度设置信息和/或候选I/O请求数量来确定。具体的,当两个候选调度结果的调度设置信息不同时,调度设置信息为显式调度控制的候选调度结果的优先程度高于调度设置信息为自动调度方法的候选调度结果。当两个候选调度结果的调度设置信息相同时,候选I/O请求数量不同的候选调度结果的优先程度不同。当两个候选调度结果的调度设置信息相同且存在暂停调度命令时,候选I/O请求少的候选调度结果的优先程度高;当两个候选调度结果的调度设置信息相同且不存在暂停调度命令时,候选I/O请求多的候选调度结果的优先程度高。
下面将按照上述方法分情况来说明如何确定出最终调度结果。当所有I/O进程的候选调度结果都相同时,那么这个相同的候选调度结果就是最终调度结果。当所有I/O进程的候选调度结果的调度设置信息都是自动调度方法时,此时候选I/O请求多的候选调度结果的优先程度高,那么可以在所有I/O进程之间找出I/O请求最多的候选调度结果,并把该候选调度结果确定成最终调度结果。当有I/O进程的候选调度结果的调度设置信息是显式调度控制时,找出调度设置信息是显式调度控制的若干候选进程。如果显式调度控制中不存在暂停调度命令时,即存在的是同步I/O命令、等待完成命令、恢复调度命令或优先调度命令时,候选I/O请求多的候选调度结果的优先程度高,则可以从所述若干候选进程中找出I/O请求最多的候选调度结果,并把该候选调度结果确定成最终调度结果;如果显式调度控制中存在的是暂停调度命令时,候选I/O请求少的候选调度结果的优先程度高,则可以从所述若干候选进程中找出I/O请求最少的候选调度结果,把该候选调度结果确定成最终调度结果。
需要说明的是,本实施例中的I/O请求最多/最少指的是候选调度结果中所包括的候选I/O请求的数量最多/最少。候选调度结果所包括的候选I/O请求的数量可以是0、1、2……,仍以I/O进程组中有4个I/O进程(进程号为0、1、2、3)为例,假设4个I/O进程的候选调度结果的调度设置信息都是自动调度方法,0号进程的候选调度结果包括1个I/O请求,1号进程的候选调度结果包括2个I/O请求,2号进程的候选调度结果包括3个I/O请求,3号进程的候选调度结果包括1个I/O请求,显然这属于候选调度结果的调度设置信息相同且不存在暂停调度命令的情况,此时候选I/O请求多的候选调度结果的优先程度高,由于2号进程的候选调度结果包括的I/O请求最多,所以将2号进程的候选调度结果确定为最终调度结果。
在另一种可选的实施方式中,根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,还可以包括:把随机选出的一个进程的候选调度结果确定为最终调度结果。
图2为本发明一实施例提供的异步并行I/O请求的进程调度装置的结构示意图。如图2所示,本实施例提供的异步并行I/O请求的进程调度装置20可以包括:
响应模块201,用于响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果;
处理模块202,用于根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;
执行模块203,用于在I/O进程组中各I/O进程中按照最终调度结果进行I/O请求的调度和执行。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
一种可选的实施方式中,响应模块201用于响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果,具体可以包括:
在各I/O进程中分别获取各自的调度设置信息;
分别在各I/O进程的I/O请求队列中,基于各自的调度设置信息确定出各自的候选I/O请求;
在各I/O进程中,根据候选I/O请求与调度设置信息生成各自的候选调度结果。
一种可选的实施方式中,处理模块202用于根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,具体可以包括:
从所有I/O进程的候选调度结果中,把所有I/O进程中优先程度最高的候选调度结果确定为最终调度结果,或者把随机选出的一个进程的候选调度结果确定为最终调度结果;
当两个候选调度结果的调度设置信息不同时,调度设置信息为显式调度控制的候选调度结果的优先程度高于调度设置信息为自动调度方法的候选调度结果;其中,显式调度控制来源于应用程序所发起的会影响I/O请求调度的命令,自动调度方法则是异步I/O系统在没有受到应用程序影响时对I/O请求的自动调度。
一种可选的实施方式中,当两个候选调度结果的调度设置信息相同时,候选I/O请求数量不同的候选调度结果的优先程度不同。
一种可选的实施方式中,应用程序所发起的会影响I/O请求调度的命令包括以下命令中的一种或多种:同步I/O命令、等待完成命令、暂停调度命令、恢复调度命令和优先调度命令。
一种可选的实施方式中,当两个候选调度结果的调度设置信息相同且存在暂停调度命令时,候选I/O请求少的候选调度结果的优先程度高;
当两个候选调度结果的调度设置信息相同且不存在暂停调度命令时,候选I/O请求多的候选调度结果的优先程度高。
一种可选的实施方式中,执行模块203用于在I/O进程组中各I/O进程中按照所述最终调度结果进行I/O请求的调度和执行,具体可以包括:
把最终调度结果中的候选I/O请求确定为I/O请求调度结果;
各I/O进程在各自的I/O请求队列中查找符合I/O请求调度结果的待调度I/O请求;
当不存在待调度I/O请求时,进行等待,并在接收到新的I/O命令后重新查找符合I/O请求调度结果的待调度I/O请求。
本发明实施例还提供一种电子设备,请参见图3所示,本发明实施例仅以图3为例进行说明,并不表示本发明仅限于此。图3为本发明一实施例提供的电子设备的结构示意图。如图3所示,本实施例提供的电子设备30可以包括:存储器301、处理器302和总线303。其中,总线303用于实现各元件之间的连接。
存储器301中存储有计算机程序,计算机程序被处理器302执行时可以实现上述任一方法实施例的技术方案。
其中,存储器301和处理器302之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可以通过一条或者多条通信总线或信号线实现电性连接,如可以通过总线303连接。存储器301中存储有实现异步并行I/O请求的进程调度方法的计算机程序,包括至少一个可以软件或固件的形式存储于存储器301中的软件功能模块,处理器302通过运行存储在存储器301内的软件程序以及模块,从而执行各种功能应用以及数据处理。
存储器301可以是,但不限于,随机存取存储器(Random Access Memory,简称:RAM),只读存储器(Read Only Memory,简称:ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称:PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称:EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,简称:EEPROM)等。其中,存储器301用于存储程序,处理器302在接收到执行指令后,执行程序。进一步地,上述存储器301内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。
处理器302可以是一种集成电路芯片,具有信号的处理能力。上述的处理器302可以是通用处理器,包括中央处理器(Central Processing Unit,简称:CPU)、网络处理器(Network Processor,简称:NP)等。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。可以理解,图3的结构仅为示意,还可以包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件和/或软件实现。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现上述任一方法实施例的技术方案。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
本公开的保护范围不限于上述的实施例,显然,本领域的技术人员可以对本公开进行各种改动和变形而不脱离本公开的范围和精神。倘若这些改动和变形属于本公开权利要求及其等同技术的范围,则本公开的意图也包含这些改动和变形在内。

Claims (8)

1.一种异步并行I/O请求的进程调度方法,其特征在于,包括:
响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果,所述候选调度结果包括调度设置信息和候选I/O请求,所述调度设置信息包括自动调度方法和显式调度控制,所述自动调度方法是异步I/O系统在没有受到应用程序影响时对I/O请求的自动调度,所述显式调度控制来源于应用程序所发起的会影响I/O请求调度的命令;
根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;
在I/O进程组中各I/O进程中按照所述最终调度结果进行I/O请求的调度和执行;
所述根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,包括:
从所有I/O进程的候选调度结果中,把所有I/O进程中优先程度最高的候选调度结果确定为最终调度结果;
当两个候选调度结果的调度设置信息不同时,调度设置信息为显式调度控制的候选调度结果的优先程度高于调度设置信息为自动调度方法的候选调度结果;
当两个候选调度结果的调度设置信息相同时,候选I/O请求数量不同的候选调度结果的优先程度不同。
2.根据权利要求1所述的方法,其特征在于,所述I/O进程组中各I/O进程分别确定各自的候选调度结果,包括:
在各I/O进程中分别获取各自的调度设置信息;
分别在各I/O进程的I/O请求队列中,基于各自的调度设置信息确定出各自的候选I/O请求;
在各I/O进程中,根据候选I/O请求与调度设置信息生成各自的候选调度结果。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述应用程序所发起的会影响I/O请求调度的命令包括以下命令中的一种或多种:同步I/O命令、等待完成命令、暂停调度命令、恢复调度命令和优先调度命令。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当两个候选调度结果的调度设置信息相同且存在暂停调度命令时,候选I/O请求少的候选调度结果的优先程度高;
当两个候选调度结果的调度设置信息相同且不存在暂停调度命令时,候选I/O请求多的候选调度结果的优先程度高。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述在I/O进程组中各I/O进程中按照所述最终调度结果进行I/O请求的调度和执行,包括:
把所述最终调度结果中的候选I/O请求确定为I/O请求调度结果;
各I/O进程在各自的I/O请求队列中查找符合所述I/O请求调度结果的待调度I/O请求;
当不存在所述待调度I/O请求时,进行等待,并在接收到新的I/O命令后重新查找符合所述I/O请求调度结果的待调度I/O请求。
6.一种异步并行I/O请求的进程调度装置,其特征在于,包括:
响应模块,用于响应于I/O请求的调度操作,I/O进程组中各I/O进程分别确定各自的候选调度结果,所述候选调度结果包括调度设置信息和候选I/O请求,所述调度设置信息包括自动调度方法和显式调度控制,所述自动调度方法是异步I/O系统在没有受到应用程序影响时对I/O请求的自动调度,所述显式调度控制来源于应用程序所发起的会影响I/O请求调度的命令;
处理模块,用于根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果;
执行模块,用于在I/O进程组中各I/O进程中按照所述最终调度结果进行I/O请求的调度和执行;
处理模块,用于根据I/O进程组中所有I/O进程的候选调度结果确定出最终调度结果,包括:
从所有I/O进程的候选调度结果中,把所有I/O进程中优先程度最高的候选调度结果确定为最终调度结果;
当两个候选调度结果的调度设置信息不同时,调度设置信息为显式调度控制的候选调度结果的优先程度高于调度设置信息为自动调度方法的候选调度结果;
当两个候选调度结果的调度设置信息相同时,候选I/O请求数量不同的候选调度结果的优先程度不同。
7.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-5任一项所述的异步并行I/O请求的进程调度方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-5任一项所述的异步并行I/O请求的进程调度方法。
CN202410295509.7A 2024-03-15 2024-03-15 异步并行i/o请求的进程调度方法、装置及设备 Active CN117891583B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410295509.7A CN117891583B (zh) 2024-03-15 2024-03-15 异步并行i/o请求的进程调度方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410295509.7A CN117891583B (zh) 2024-03-15 2024-03-15 异步并行i/o请求的进程调度方法、装置及设备

Publications (2)

Publication Number Publication Date
CN117891583A CN117891583A (zh) 2024-04-16
CN117891583B true CN117891583B (zh) 2024-07-09

Family

ID=90650941

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410295509.7A Active CN117891583B (zh) 2024-03-15 2024-03-15 异步并行i/o请求的进程调度方法、装置及设备

Country Status (1)

Country Link
CN (1) CN117891583B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089049A (zh) * 2023-04-07 2023-05-09 北京卡普拉科技有限公司 基于异步并行i/o请求的进程同步调度方法、装置以及设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758184A (en) * 1995-04-24 1998-05-26 Microsoft Corporation System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
KR102621484B1 (ko) * 2021-11-16 2024-01-05 건국대학교 산학협력단 I/o 프로세스의 스케줄링 방법 및 장치
CN115858175B (zh) * 2023-01-29 2023-07-18 北京卡普拉科技有限公司 异步i/o请求优先级的调度方法、装置、介质及控制设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089049A (zh) * 2023-04-07 2023-05-09 北京卡普拉科技有限公司 基于异步并行i/o请求的进程同步调度方法、装置以及设备

Also Published As

Publication number Publication date
CN117891583A (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
KR101915198B1 (ko) 프로세서간 메시지처리장치 및 방법
CN110941481A (zh) 资源调度方法、装置及系统
US10459773B2 (en) PLD management method and PLD management system
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
EP4123449A1 (en) Resource scheduling method and related device
CN112306719A (zh) 一种任务调度方法与装置
CN112114983B (zh) 一种基于共享内存的通信方法、装置和设备
CN114579285B (zh) 一种任务运行系统、方法及计算设备
JP2008152618A (ja) ジョブ割当プログラム、方法及び装置
CN113760638B (zh) 一种基于kubernetes集群的日志服务方法和装置
CN111880909A (zh) 一种基于分布式的发布数据的方法及装置
US20200252314A1 (en) Method and apparatus for managing network connection, and storage medium
CN114816709A (zh) 任务调度方法、装置、服务器及可读存储介质
CN113660231A (zh) 一种报文解析方法、装置、设备和存储介质
CN115827250A (zh) 一种数据存储方法、装置及设备
CN117891583B (zh) 异步并行i/o请求的进程调度方法、装置及设备
CN113391896B (zh) 任务处理方法及装置、存储介质及电子设备
CN119046376A (zh) 基于分布式调度的数据同步方法、电子设备及存储介质
CN115840621A (zh) 一种多核系统的交互方法及相关装置
CN116089049B (zh) 基于异步并行i/o请求的进程同步调度方法、装置以及设备
CN118819748A (zh) 一种任务调度方法、调度管理系统及多核处理器
CN116974767A (zh) 一种任务调度系统、方法、装置、设备及介质
KR20110018618A (ko) 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
CN113703976B (zh) 一种fpga资源分配方法、装置、设备及可读存储介质
CN119179428A (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