掌桥专利:专业的专利平台
掌桥专利
首页

异步I/O线程处理器资源调度控制方法、装置、介质及设备

文献发布时间:2023-06-19 18:37:28


异步I/O线程处理器资源调度控制方法、装置、介质及设备

技术领域

本发明涉及异步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进程分配额外的独立计算资源。例如应用程序原本采用1024进程/处理器核进行并行计算,如果要使用16个I/O进程,则需要在提交应用程序时申请1024+16=1040个进程/处理器核。

另一种途径是使用专用的I/O线程。各I/O线程由应用程序的计算线程自动创建,然后在相应计算线程的计算节点上运行。

经过申请人的分析,与计算线程同在一个计算节点上的I/O线程,可能会面临以下几种情况:

1)计算节点的处理器上有专门运行I/O线程的处理器核。I/O线程的工作以通信和I/O为主,没有实际计算量,而且以整数计算为主,经简化设计的处理器核足以能支撑I/O线程的运行。随着处理器架构的快速发展,未来可能出现专门用于运行I/O线程的I/O处理器核。

2)计算节点的处理器上没有专门运行I/O线程的处理器核,但在启动应用程序的运行时,已在计算节点上预留了运行I/O线程的处理器核数,即计算线程与I/O线程的总数不超过处理器的总核数。例如在处理器总核数为64的计算节点上,共运行62个计算线程,预留了2个可用于运行I/O线程的处理器核。

3)计算线程与I/O线程的总数超过了处理器的总核数。例如在总核数为64的计算节点上,共运行64个计算线程,新启动的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线程处理器资源调度控制装置框图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图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线程固定在若干处理器核上运行。

一个线程能在哪些处理器核上运行,可通过操作系统的亲和度(affinity)设置命令进行设定。且当I/O线程是计算线程创建的从线程时,其通常会继承计算线程关于处理器核亲和度(affinity)。

本实施例中,允许各I/O线程在多个处理器核上运行和使各I/O线程固定在若干处理器核上运行,可以通过操作系统的亲和度设置命令实现。

具体而言,在应用程序的计算线程创建I/O线程后,利用操作系统的相应命令,将I/O线程的亲和度设置为多个处理器核;在有竞争力动态配置方式下,将应用程序计算线程的亲和度设置为多个处理器核。其中的多个处理器核可以是计算节点上的所有处理器核或部分处理器核。

步骤S102、基于处理器资源配置方式调度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线程无法长期占用处理器资源,因为其调度优先级会随着占用处理器资源时间的增长而降低,这会导致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线程对计算线程的影响。

实施例二

如图2所示,本实施例提供的异步I/O线程处理器资源调度控制装置,包括:

获取模块201,用于响应于应用程序对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线程固定在若干处理器核上运行。

本实施例中,允许各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线程在结束休眠时的动态优先级高于计算线程。

在一些实现方式中,调度模块202还用于:在应用程序发起等待异步I/O请求完成的指令时,若存在尚未完成的I/O请求,需要尽快完成这些I/O请求,则I/O线程在响应被应用程序等待完成的所有I/O请求的过程中,不进行自主休眠。

本实施例的装置,针对I/O线程与计算线程要同时运行的情况,利用操作系统的已有技术基础,实现对I/O线程处理器资源调度的控制,以尽可能使所有I/O线程几乎同时获取到处理器资源,从而实现I/O请求的高效完成,并尽量降低I/O线程对计算线程的影响。

实施例三

本实施例提供一种计算机存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被一个或多个处理器执行时,实现前述实施例的方法。

其中,计算机可读存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。

实施例四

本实施例提供一种计算机设备,包括存储器和一个或多个处理器,存储器上存储有计算机程序,计算机程序被所述一个或多个处理器执行时实现前述实施例的方法。

其中,处理器可以是专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(ProgrammableLogic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器 (Microcontroller Unit, MCU)、微处理器或其他电子元件实现,用于执行上述实施例中的方法。

在本发明实施例所提供的几个实施例中,应该理解到,所揭露的系统和方法,也可以通过其它的方式实现。以上所描述的系统和方法实施例仅仅是示意性的。

需要说明的是,在本文中,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

技术分类

06120115638016