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

一种异步输入输出线程处理器资源分配方法及装置与流程

2022-11-12 21:04:16 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种异步输入输出线程处理器资源分配方法及装置。


背景技术:

2.随着计算机数据处理能力的不断增强、各类应用的需求不断提高,应用程序处理数据的计算量也不断增加,相应的,从文件系统中输入或输出(input/output,i/o)的数据量也不断增大。由于i/o数据传输能力的增长速度慢于计算能力的增长速度,故数据i/o速度在许多场景下成为应用程序运行的性能瓶颈。
3.为降低i/o开销带来的影响,可以使用并行i/o技术或异步i/o技术。其中并行i/o技术可以充分利用计算机的并行存储能力,将应用程序的数据分散存放与多个进程上,多个进程协同进行文件数据的读写,从而提高数据读入写出传输速度。例如中国专利cn114138381公开了一种数值程序的处理系统,用于完成分布式计算的多维变量的同步/异步并行读入/写出,但在并行设置下会存在i/o过程与计算过程的重叠。异步i/o技术使用计算机进程或线程以外的i/o专用进程或线程完成数据读入写出传输,使得应用程序无需等待i/o操作的完成即可执行其他计算,使两者可以重叠同时进行,缩短整体耗时。在此基础上,兼顾并行i/o技术和异步i/o技术的并行异步i/o方法可以进一步降低i/o开销对应用程序运行速度的影响。
4.目前的异步i/o技术主要包括两种实现途径,一种是使用专用的i/o进程,一种是使用专用的i/o线程。其中i/o专用进程是应用程序原有计算进程以外的独立进程,在启动应用程序运行时,需要给各i/o进程分配额外的独立计算资源。而各专用的i/o线程由应用程序的计算进程根据需要自动创建,因此在提交应用程序时无需给i/o专用线程分配独立的计算资源。虽然专用线程的方式相较于专用进程,无需分配额外的计算资源,但i/o专用线程会与应用程序计算线程竞争使用处理器资源,为程序运行带来新的开销。


技术实现要素:

5.为解决现有的异步输入输出线程数据传输方式占用处理器资源较大的问题,本技术提供一种异步输入输出线程处理器资源分配方法,从而能够充分降低数据读入和写出的处理器资源开销。
6.一方面,提供了一种异步输入输出线程处理器资源分配方法,包括:判断当前是否存在待处理的异步输入/输出请求,若当前不存在待处理的异步输入/输出请求,则控制输入输出专用线程进入第一休眠状态;当所述输入输出专用线程处于所述第一休眠状态时,若接收到应用程序发起的异步输入/输出请求,则控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。
7.另一方面,提供了一种异步输入输出线程处理器资源分配装置,所述装置包括:第一休眠控制模块,用于判断当前是否存在待处理的异步输入/输出请求,若当前
不存在待处理的异步输入/输出请求,则控制输入输出专用线程进入第一休眠状态;第一休眠转换模块,用于当所述输入输出专用线程处于第一休眠状态时,若接收到应用程序发起的异步输入/输出请求,则控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。
8.另一方面,提供了一种计算机设备,计算机设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,处理器可加载并执行至少一条指令、至少一段程序、代码集或指令集,以实现上述实施例中提供的异步输入输出线程处理器资源分配方法。
9.另一方面,提供了一种计算机可读存储介质,可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,处理器可加载并执行至少一条指令、至少一段程序、代码集或指令集,以实现上述实施例中提供的异步输入输出线程处理器资源分配方法。
10.另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产权或计算机程序包括计算机程序指令,该计算机程序指令存储于计算机可读存储介质中。处理器从计算机可读存储介质读取该计算机指令,并执行还计算机指令,使得该计算机设备执行上述实施例所述的异步输入输出线程处理器资源分配方法。
11.本技术提供的技术方案带来的有益效果至少包括:本发明实施例提供了一种异步输入输出线程处理器资源分配方法,包括判断当前是否存在待处理的异步输入/输出请求,若当前不存在待处理的异步输入/输出请求,则控制输入输出专用线程进入第一休眠状态;当所述输入输出专用线程处于所述第一休眠状态时,若接收到应用程序发起的异步输入/输出请求,则控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。本发明实施例提供的方法能够令输入输出专用线程在没有待处理的异步输入/输出请求时进入第一休眠状态,避免无效的占用处理器资源,提高应用程序的整体效率。
附图说明
12.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
13.图1示出了本技术一个示例性实施例提供的一种异步输入输出线程处理器资源分配方法的实现流程示意图;图2示出了本技术一个示例性实施例提供的一种异步输入输出线程处理器分配装置的结构图;图3示出了本技术一个示例性实施例提供的一种异步输入输出线程处理器分配方法对应的计算机设备的结构示意图。
具体实施方式
14.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
15.传统的使用专用的i/o进程或专用的i/o线程均会占用较大的处理器资源。在一个
具体的示例中,若某应用程序采用1024进程/处理器核进行并行计算,使用16个i/o进程则需要在提交应用程序时申请1040个进程/处理器核,即原进程/处理器核与i/o进程数量之和。若上述应用程序使用16个i/o线程,则在提交应用程序时仍需申请1024个进程/处理器核。
16.在i/o专用线程与应用程序计算线程竞争使用处理器资源时,会带来新的开销。例如某64个处理器核的计算节点上运行着64个计算线程,生成一个i/o专用线程后,该i/o专用线程会与64个计算线程竞争使用64个处理器核。当上述i/o专用线程与64个计算线程都满负荷运行时,不会主动释放处理器资源,操作系统只能通过调度和线程上下文切换使得65个线程分时共享64个处理器核。在此情况下,i/o专用线程会导致约1/64的开销。且i/o专用线程负责的数据读写操作最终由操作系统的专用进程/线程完成,这些操作系统专用进程/线程也会占用处理器资源,带来一定的开销。
17.本技术提供的异步输入输出线程处理器资源分配方法,可以在应用程序的输入输出专用线程和计算线程之间合理分配处理器资源,提高应用程序的整体效率。
18.实施例一、图1示出了申请一个示例性实施例提供的异步输入输出线程处理器资源分配方法的实现流程示意图。
19.参见图1,本发明实施例提供的方法可以包括步骤101至102。
20.步骤101:判断当前是否存在待处理的异步输入/输出请求,若当前不存在待处理的异步输入/输出请求,则控制输入输出专用线程进入第一休眠状态。
21.具体的,在异步i/o系统中,尚未处理的异步i/o请求存放在异步i/o请求队列中。
22.在一些实施例中,步骤101的具体实现过程可以包括:获取i/o专用线程对应的尚未处理的异步i/o请求,若未发现尚未处理的异步i/o请求,则令i/o专用线程进入第一休眠状态。
23.可见,本发明实施例提供的异步i/o线程处理器分配方法可以在i/o专用线程试图获取尚未处理的i/o请求后,发生由活跃状态到休眠状态的切换。
24.步骤102:当所述输入输出专用线程处于所述第一休眠状态时,若接收到应用程序发起的异步输入/输出请求,则控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。
25.在一些实施例中,步骤102的具体实现过程可以包括:当i/o专用线程处于第一休眠状态时,响应应用程序的异步i/o请求,令i/o专用线程恢复到活跃状态。
26.可见,本发明实施例提供的异步i/o线程处理器分配方法可以在应用程序发起一个新的异步i/o请求时,发生由第一休眠状态到活跃状态的切换。
27.在本实施例中,休眠状态即令线程进入睡眠状态,或称阻塞状态,此时线程会让出处理器资源不使用。活跃状态即休眠状态以外的状态,此时线程占用处理器资源。
28.本发明实施例提供的异步i/o线程处理器分配方法能够让i/o专用线程在等待状态时主动释放处理器资源,在等待结束时重新占用处理器资源,避免对处理器资源的无效占用或浪费,提高应用程序的整体效率。
29.在一些实施例中,步骤101和步骤102中所述控制输入输出专用线程进入第一休眠
状态和所述控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态,包括:基于通过操作和释放操作实现所述控制输入输出专用线程进入第一休眠状态和所述控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。
30.具体的,i/o专用线程在第一休眠状态与活跃状态之间的切换可以基于通过和释放(passeren vrijgeven,pv)操作实现,pv操作包含申请资源和释放资源的步骤。
31.例如,i/o专用线程在试图获取尚未处理的i/o请求时,首先进行关于异步i/o请求队列信号量的p操作,若此时异步i/o请求队列为空队列,则p操作可以使i/o专用线程进入第一休眠状态。
32.当应用程序发起新的异步i/o请求时,对应i/o专用线程的计算线程会进行关于异步i/o请求队列的信号量的v操作,则v操作可以使i/o专用线程从所述第一休眠状态进入活跃状态。
33.在一些实施例中,本发明实施例提供的异步输入输出线程处理器资源分配方法还可以包括步骤201和步骤202。
34.步骤201:判断当前是否存在正在进行的文件读写操作,若当前存在正在进行的文件读写操作,则控制所述输入输出专用线程进入第二休眠状态。
35.步骤202:当所述输入输出专用线程处于所述第二休眠状态时,当所述文件读写操作完成,则控制所述输入输出专用线程由所述第二休眠状态转换至活跃状态。
36.具体的,i/o专用线程在使用mpi-i/o或操作系统相应功能进行文件数据读写,此时i/o专用线程需要进入第二休眠状态,待数据读写完成再恢复活跃状态。
37.由以上步骤101至102和步骤201至101可知,i/o专用线程在无要做的任务或使用其他功能进行文件数据读写时,会进入等待状态。一种情况是i/o专用线程获取的尚未处理的异步i/o请求时,发现请求队列是空队列,表明没有要做的任务,则等待应用程序发起新的异步i/o请求。另一种情况是i/o专用线程在使用mpi-i/o或操作系统相应功能进行文件数据读写,此时i/o专用线程需要等待数据读写完成。
38.本发明实施例提供的方法中,i/o专用线程在第二休眠状态与活跃状态之间的切换不适于使用pv操作实现。由于使用pv操作需要对操作系统的相关程序进行修改,在此情景下难以实施。
39.在一些实施例中,步骤201和步骤202中所述控制所述输入输出专用线程进入第二休眠状态和所述控制所述输入输出专用线程由所述第二休眠状态转换至活跃状态,包括:基于进程挂起操作实现所述控制所述输入输出专用线程进入第二休眠状态和所述控制所述输入输出专用线程由所述第二休眠状态转换至活跃状态。
40.具体的,i/o专用线程在第二休眠状态与活跃状态之间的切换可以基于系统的进程挂起功能实现。在一个具体的实施例中,进程挂起功能使用的函数可以包括sleep函数和/或usleep函数,使得某线程可以让自己休眠指定时间长度,并在达到指定长度的时间后自动恢复活跃状态。
41.在一些实施例中,所述进程挂起操作的挂起时间确定过程包括:基于预设的挂起时间阈值和/或读写操作的数据大小,确定所述进程挂起操作的挂起时间。
42.在一个具体的示例中,基于预设的时间长度阈值,确定调用一次sleep或usleep函
数能够使i/o专用线程休眠的时间长度。当i/o专用线程休眠达到预设时长后,即由第二休眠状态恢复至活跃状态。
43.进一步的,当i/o专用线程休眠达到预设时长后,文件数据读写操作尚未完成,则再次调用sleep或usleep函数,使i/o专用线程维持第二休眠状态。
44.在一个具体的示例中,基于待读写的数据大小,预测当前的读写任务需要的时间,基于预测的时间调用sleep或usleep函数,以使i/o专用线程休眠预测的时间长度。
45.具体的,根据待读写的数据大小与预存的历史时间信息进行休眠时间的预测。例如200mb数据的对应的历史时间信息为100毫秒,则当前需读写的数据大小为100mb时,可以设置i/o专用线程休眠的时间长度为50毫秒。
46.在一个具体的示例中,基于预测的读写任务需要的时间令i/o专用线程休眠预测的时间长度后,若文件数据读写操作尚未完成,则再次调用sleep或usleep函数,使i/o专用线程维持第二休眠状态。可选的,基于预设的时间长度阈值或时间长度预测值确定i/o专用线程休眠的时间长度。
47.在一些实施例中,本发明实施例提供的异步输入输出线程处理器资源分配方法还可以包括步骤301和步骤302。
48.步骤301:判断当前是否存在计算线程在等待异步输入/输出请求的完成,若当前存在计算线程在等待尚未完成的异步输入/输出请求,则控制计算线程进入第三休眠状态。
49.步骤302:当所述计算线程处于所述第三休眠状态时,若判定其所等待的所有异步输入/输出请求都已经完成,则控制所述计算线程由所述第三休眠状态转换至活跃状态。
50.具体的,i/o专用线程与对应的计算线程同属一个计算进程,且i/o专用线程由对应的计算线程创建。i/o专用线程与相应的计算线程之间共享变量资源。
51.本发明实施例提供的异步i/o线程处理器分配方法能够让应用程序的计算线程在异步i/o请求未完成即异步i/o线程处于活跃状态时,释放处理器资源,并在异步i/o请求完成时再占用处理器资源。
52.在一些实施例中,步骤301和步骤302中所述控制计算线程进入第三休眠状态和所述控制计算线程由第三休眠状态转换至活跃状态,包括:基于通过操作和释放操作实现所述控制计算线程进入第三休眠状态和所述控制计算线程由第三休眠状态转换至活跃状态。
53.在一些实施例中,计算线程在所述第三休眠状态与活跃状态之间的切换同样可以基于pv操作实现。具体的,设置共享信号量,所述共享信号量为i/o专用线程及其对应的计算线程之间的共享信号量。若当前等待的未完成请求包括异步i/o请求,则对所述共享信号量进行p操作,以使计算线程进入所述第三休眠状态。当i/o专用线程完成了相应的异步i/o请求后,对所述共享信号量进行v操作,以使该计算线程返回活跃状态。
54.综上所述,本发明实施例提供的异步i/o线程处理器分配方法可以使异步i/o专用线程在等待状态时能够主动释放处理器资源、并在等待状态结束时主动使用处理器资源,另一方面使应用程序的计算线程发现异步i/o请求未完成时,主动释放处理器资源,在异步i/o请求完成后再使用处理器资源。通过以上过程,在应用程序管理器资源分配中,令异步i/o线程占据优先地位,即异步i/o线程优先于计算线程,以充分保障数据读入写出的速度,避免计算速度快却受数据传输速度限制的情况,充分利用处理器资源,提高应用程序的整
体效率。
55.实施例二、图2示出了本发明实施例提供的异步输入输出线程处理器资源分配装置示意图。
56.参见图2,本发明实施例提供的异步输入输出线程处理器资源分配装置包括:第一休眠控制模块201,用于判断当前是否存在待处理的异步输入/输出请求,若当前不存在待处理的异步输入/输出请求,则控制输入输出专用线程进入第一休眠状态;第一休眠转换模块202,用于当所述输入输出专用线程处于第一休眠状态时,若接收到应用程序发起的异步输入/输出请求,则控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。
57.在一些实施例中,第一休眠控制模块201和第一休眠转换模块202中所述控制输入输出专用线程进入第一休眠状态和所述控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态,包括:基于通过操作和释放操作实现所述控制输入输出专用线程进入第一休眠状态和所述控制所述输入输出专用线程由所述第一休眠状态转换至活跃状态。
58.在一些实施例中,异步输入输出线程处理器资源分配装置还可以包括:第二休眠控制模块,用于判断当前是否存在正在进行的文件读写操作,若当前存在正在进行的文件读写操作,则控制所述输入输出专用线程进入第二休眠状态;第二休眠转换模块,用于当所述输入输出专用线程处于所述第二休眠状态时,当所述文件读写操作完成,则控制所述输入输出专用线程由所述第二休眠状态转换至活跃状态。
59.在一些实施例中,第二休眠控制模块和第二休眠转换模块中所述控制所述输入输出专用线程进入第二休眠状态和所述控制所述输入输出专用线程由所述第二休眠状态转换至活跃状态,包括:基于进程挂起操作实现所述控制所述输入输出专用线程进入第二休眠状态和所述控制所述输入输出专用线程由所述第二休眠状态转换至活跃状态。
60.在一些实施例中,所述异步输入输出线程处理器资源分配装置还可以包括挂起时间确定模块,用于基于预设的挂起时间阈值和/或读写操作的数据大小,确定所述进程挂起操作的挂起时间。
61.在一些实施例中,异步输入输出线程处理器资源分配装置还可以包括:第三休眠控制模块,用于判断当前是否存在计算线程在等待异步输入/输出请求的完成,若当前存在计算线程在等待尚未完成的异步输入/输出请求,则控制计算线程进入第三休眠状态;第三休眠转换模块,用于当所述计算线程处于所述第三休眠状态时,若判定其所等待的所有异步输入/输出请求都已经完成,则控制所述计算线程由所述第三休眠状态转换至活跃状态。
62.在一些实施例中,第三休眠控制模块和第三休眠转换模块中所述控制计算线程进入第三休眠状态和所述控制计算线程由第三休眠状态转换至活跃状态,包括:基于通过操作和释放操作实现所述控制计算线程进入第三休眠状态和所述控制计算线程由第三休眠状态转换至活跃状态。
63.综上所述,本发明实施例提供的异步输入输出线程处理器资源分配装置能够令异步i/o线程占据优先地位,即异步i/o线程优先于计算线程,以充分保障数据读入写出的速度,避免计算速度快却受数据传输速度限制的情况,充分利用处理器资源,提高应用程序的整体效率。
64.实施例三、图3示出了本技术一个示例性实施例提供的计算机设备的结构示意图,该计算机设备包括:处理器301,包括一个或者一个以上处理核心,处理器301通过运行软件程序以及模块,从而执行各种功能应用以及数据处理。
65.接收器302和发射器303可以实现为一个通信组件,该通信组件可以是一块通信芯片。可选地,该通信组件可以实现包括信号传输功能。也即,发射器303可以用于发射控制信号至图像采集设备以及扫描设备中,接收器3可以用于接收对应的反馈指令。
66.存储器304通过总线305与处理器301相连。
67.存储器304可用于存储至少一个指令,处理器301用于执行该至少一个指令,以实现上述方法实施例中的步骤101至步骤102。
68.实施例四、本技术实施例还提供一种计算机可读存储介质,该可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,以由处理器加载并执行以实现上述异步输入输出线程处理器资源分配方法。
69.实施例五、本技术还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行给计算机指令,使得该计算机设备执行上述实施例中任一所述的异步输入输出线程处理器资源分配方法。
70.可选地,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram, random access memory)、固态硬盘(ssd, solid state drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(reram, resistance random access memory)和动态随机存取存储器(dram, dynamic random access memory)。
71.上述本技术实施例序号仅仅为了描述,不代表实施的优劣。
72.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
73.上述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献