CN115794750B - 异步i/o系统文件打开/关闭的控制方法、装置及设备 - Google Patents
异步i/o系统文件打开/关闭的控制方法、装置及设备 Download PDFInfo
- Publication number
- CN115794750B CN115794750B CN202310069782.3A CN202310069782A CN115794750B CN 115794750 B CN115794750 B CN 115794750B CN 202310069782 A CN202310069782 A CN 202310069782A CN 115794750 B CN115794750 B CN 115794750B
- Authority
- CN
- China
- Prior art keywords
- file
- closing
- closed
- opening
- asynchronous
- 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
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种异步I/O系统文件打开/关闭的控制方法、装置及设备,该方法包括:响应于文件打开申请,获取待打开文件的当前打开/关闭状态,若当前打开/关闭状态指示待打开文件处于打开状态,则不再重复打开该文件;响应于文件关闭申请,将待关闭文件的文件未来访问计数减少1,根据待关闭文件的文件未来访问计数确定是否需要立即关闭待关闭文件。通过当前打开/关闭状态的指示,避免对文件的重复打开操作,有效地减少了文件的打开次数;通过文件未来访问计数的指示,确定是否关闭文件,避免在不必要的情况下对文件进行关闭操作,有效地减少了文件的关闭次数。有效减少异步I/O系统文件打开/关闭次数,进而提高异步I/O系统的工作效率。
Description
技术领域
本发明实施例涉及I/O请求处理技术领域,具体涉及一种异步I/O系统文件打开/关闭的控制方法、装置及设备。
背景技术
随着计算机计算性能的提升,应用程序的计算规模也随之水涨船高,然而计算机I/O性能的提升速度远远跟不上计算性能的提升速度,I/O过程成为了不少应用程序的性能瓶颈。为了尽可能地提升I/O性能,现代高性能计算机在硬件层面使用了可进行并行存取的磁盘阵列,在系统层面引入了并行文件系统来尽可能提升计算机层面I/O性能的上限。为了让应用程序充分利用现代高性能计算机的I/O性能,并行I/O系统应运而生;而为了进一步减少I/O开销对程序性能的影响,又出现了异步I/O系统,使I/O操作和应用程序的计算过程能够在时间上重叠。此外,当前还出现了并行I/O系统和异步I/O系统的合体,即异步并行I/O系统。
异步I/O系统(包括异步并行I/O系统)在应用程序发起I/O请求时,会将I/O请求缓存到队列中,而异步I/O系统中的I/O进程或I/O线程会从队列中取出并处理完各I/O请求。各条I/O请求记录了读入或写出数据所对应文件的文件名信息。异步I/O系统必须要有独立于应用程序的文件打开/关闭控制;如果没有,则可能出现因应用程序提前关闭了异步I/O请求对应的文件,而使得无法进行数据读/写的情况。
对于文件打开/关闭控制的实现,现有技术中通常的做法是:异步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请求对应的文件名的记录,则将该记录的文件未来访问计数增加1;
若不存在异步I/O请求对应的文件名的记录,则在文件打开/关闭历史信息表中新增一条记录,并将该记录的文件名设置为异步I/O请求对应的文件名,当前打开/关闭状态设置为关闭状态,文件未来访问计数设置为1。
一种实施例中,当前打开/关闭状态采用指针表示,打开状态下指针为对应的文件指针,关闭状态下指针为空。
一种实施例中,所述方法还包括:
获取异步I/O系统中打开的文件数量;
若打开的文件数量大于预设文件数量阈值时,则关闭文件未来访问计数最小的文件,直至异步I/O系统中打开的文件数量小于等于预设文件数量阈值。
一种实施例中,根据待关闭文件的文件未来访问计数确定是否需要立即关闭待关闭文件,包括:
当待关闭文件的文件未来访问计数从1变为0时,立即关闭待关闭文件。
一种实施例中,根据待关闭文件的文件未来访问计数确定是否需要立即关闭待关闭文件,包括:
当待关闭文件的文件未来访问计数从1变为0时,不关闭待关闭文件,并将待关闭文件的当前打开/关闭状态更新为延时关闭。
一种实施例中,文件打开/关闭历史信息表的记录还包括延时关闭后I/O请求计数,所述方法还包括:
当一个文件的文件未来访问计数从1变为0时,将该文件的延时关闭后I/O请求计数设置为0:
响应于应用程序发起的异步I/O请求,将文件打开/关闭历史信息表中文件未来访问计数为0的各条记录中的延时关闭后I/O请求计数增加1;
当文件的文件未来访问计数为0,且延时关闭后I/O请求计数大于等于预设发起请求数阈值时,立即关闭该文件。
一种实施例中,所述方法还包括:
获取异步I/O系统中处于延时关闭状态的文件数量;
当异步I/O系统中处于延时关闭状态的文件数量大于等于预设延时关闭文件数量阈值时,则从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,直至异步I/O系统中延时关闭的文件数量小于预设延时关闭文件数量阈值。
一种实施例中,文件打开/关闭历史信息表的记录还包括文件打开时间,所述方法还包括:
在打开一个文件时,将该文件的文件打开时间设置为当前时间;
从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,包括:
关闭文件未来访问计数为0且文件打开时间最早的文件。
一种实施例中,文件打开/关闭历史信息表的记录还包括文件未来访问计数归0时间,所述方法还包括:
当一个文件的文件未来访问计数从1变为0时,将该文件的文件未来访问计数归0时间设置为当前时间;
从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,包括:
关闭文件未来访问计数为0且文件未来访问计数归0时间最早的文件。
第二方面,本发明实施例提供一种异步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系统在处理完I/O请求时发起的文件关闭申请,获取待关闭文件的文件名,将待关闭文件的文件未来访问计数减少1,根据待关闭文件的文件未来访问计数确定是否需要立即关闭待关闭文件。通过当前打开/关闭状态的指示,避免对文件的重复打开操作,有效地减少了文件的打开次数;通过文件未来访问计数的指示,确定是否关闭文件,避免在不必要的情况下对文件进行关闭操作,有效地减少了文件的关闭次数。综上所述,本发明实施例提供的异步I/O系统文件打开/关闭的控制方法、装置及设备,可以有效地减少异步I/O系统文件打开/关闭次数,进而提高异步I/O系统的工作效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本发明一实施例提供的异步I/O系统文件打开/关闭的控制方法的流程图;
图2为本发明一实施例提供的异步I/O系统文件打开/关闭的控制装置的结构示意图;
图3为本发明一实施例提供的电子设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
为了减少异步I/O系统文件打开/关闭次数,提高异步I/O系统的工作效率,本申请提出了一种针对异步I/O系统的文件控制方法,请参考图1。图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请求对应文件名的记录;如果存在相应记录,则把该记录中的文件未来访问计数增加1;如果不存在,则在文件打开/关闭历史信息表中新增一条记录,设置该记录的文件名,把文件未来访问计数设置为1,并初始化其他信息(例如把文件当前打开/关闭状态设置为关闭状态)。也就是说,在一种可选的实施方式中,在响应于异步I/O系统在开始处理I/O请求时发起的文件打开申请之前,所述方法还包括:响应于应用程序发起的异步I/O请求,获取异步I/O请求对应的文件名;根据异步I/O请求对应的文件名在文件打开/关闭历史信息表进行查找;若存在异步I/O请求对应的文件名的记录,则将该记录的文件未来访问计数增加1;若不存在异步I/O请求对应的文件名的记录,则在文件打开/关闭历史信息表中新增一条记录,并将该记录的文件名设置为异步I/O请求对应的文件名,当前打开/关闭状态设置为关闭状态,文件未来访问计数设置为1。
当异步I/O系统开始处理一个I/O请求时,会发起文件打开申请。从文件打开申请中可以获取待打开文件的文件名,根据待打开文件的文件名可以在异步I/O系统的文件打开/关闭历史信息表中找到相应记录(一定会有相应记录),从该记录中可以获取到待打开文件的当前打开/关闭状态。若当前打开/关闭状态指示待打开文件处于打开状态,则不再重复打开该文件,可以有效减少文件的打开次数;若当前打开/关闭状态指示待打开文件处于关闭状态,则打开该文件并在文件打开/关闭历史信息表中将该文件的当前打开/关闭状态更新为打开状态,以免在下次需要打开该文件时的重复打开。具体的,当为关闭状态时,可以打开相应文件,记录相应文件指针,把文件当前打开/关闭状态设置为打开状态,最后把相应文件指针返回。
S102、响应于异步I/O系统在处理完I/O请求时发起的文件关闭申请,获取待关闭文件的文件名,将待关闭文件的文件未来访问计数减少1,根据待关闭文件的文件未来访问计数确定是否需要立即关闭待关闭文件。
异步I/O系统在处理完一个I/O请求时,会发起文件关闭申请。从文件关闭申请中可以获取到待关闭文件的文件名,异步I/O系统可以根据待关闭文件的文件名,从文件打开/关闭历史信息表中找到相应记录(一定会有相应记录)。将该记录中的文件未来访问计数减少1。
最后再根据待关闭文件的文件未来访问计数来确定是否需要关闭待关闭文件,避免在不必要的情况下(文件未来访问计数不为0,即队列中存在I/O请求会访问该文件)对文件进行关闭操作。具体实现时可以采用以下两种方式:即时关闭方式和延时关闭方式。对于即时关闭方式来说,具体实现如下:当文件未来访问计数从1变为0时(即队列中当前的所有I/O请求都不会访问相应文件),则把该文件确定为需要立即关闭的文件。也就是说,在一种可选的实施方式中,当待关闭文件的文件未来访问计数从1变为0时,立即关闭待关闭文件。对于延时关闭方式来说,具体实现如下:当文件未来访问计数从1变为0时,暂时不关闭相应文件,即允许延时关闭相应文件。也就是说,在另一种可选的实施方式中,当待关闭文件的文件未来访问计数从1变为0时,不关闭待关闭文件,并将待关闭文件的当前打开/关闭状态更新为延时关闭。这种方式的主要考虑是,应用程序后续可能发起对相应文件的读/写请求。通过延时关闭,进一步减少该文件的打开和关闭次数。
本实施例提供的异步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系统中打开的文件数量小于等于预设文件数量阈值。例如可以通过统计异步I/O系统的文件打开/关闭历史信息表中当前打开/关闭状态为打开状态的记录数量,来获取异步I/O系统中打开的文件数量。当打开的文件数量大于预设文件数量阈值时,则不得不关闭I/O请求队列中未调度请求还会访问的文件,即不得不关闭未来访问计数还大于0的文件。在这种情况下,为了尽可能地减少异步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变为0时,把延时关闭后I/O请求计数设置为0(即变为延时关闭状态)。当应用程序发起一个异步I/O请求时,异步I/O系统会查看文件打开/关闭历史信息表,会把文件未来访问计数为0的各条记录中的延时关闭后I/O请求计数增加1。当一条记录的延时关闭后I/O请求计数达到或超过预设发起请求数阈值时,则把相应的文件确定为需要立即关闭的文件。
也就是说,在一种可选的实施方式中,文件打开/关闭历史信息表的记录还可以包括延时关闭后I/O请求计数,当一个文件的文件未来访问计数从1变为0时,将该文件对应记录中的延时关闭后I/O请求计数设置为0:响应于应用程序发起的异步I/O请求,将文件打开/关闭历史信息表中文件未来访问计数为0的各条记录中的延时关闭后I/O请求计数增加1;当文件的文件未来访问计数为0,且延时关闭后I/O请求计数大于等于预设发起请求数阈值时,立即关闭该文件。
例如还可以按照预设延时关闭文件数量阈值进行控制,该阈值可以是用户给定值、异步I/O系统给定值或者异步I/O系统中动态变化的值(例如当异步I/O系统当前打开着的文件越多,该阈值越小)。具体地:查看文件打开/关闭历史信息表,确定当前处于延时关闭状态的文件数量,当文件数量达到或超过预设延时关闭文件数量阈值时,则选出若干个处于延时关闭状态的文件,随后关闭这些文件。其中,选出若干个处于延时关闭状态的文件的具体策略可以是:选出未来访问计数归0时间最早的延时关闭状态的文件,作为需要立即关闭的文件;选出文件打开时间最早的延时关闭状态的文件,作为需要立即关闭的文件。
也就是说,在一种可选的实施方式中,获取异步I/O系统中处于延时关闭状态的文件数量,例如可以通过统计文件打开/关闭历史信息表中当前打开/关闭状态为延时关闭的记录数量来确定异步I/O系统中处于延时关闭状态的文件数量;当异步I/O系统中处于延时关闭状态的文件数量大于等于预设延时关闭文件数量阈值时,则从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,直至异步I/O系统中延时关闭的文件数量小于预设延时关闭文件数量阈值。例如可以随机地从处于延时关闭状态的文件中选出需要立即关闭的文件,也可以按照预设规则从处于延时关闭状态的文件中选出需要立即关闭的文件。
在异步I/O系统中延时关闭的文件数量大于等于预设延时关闭文件数量阈值时,为了有效地选出需要关闭的文件,一种可选的实施方式中,文件打开/关闭历史信息表中的记录还可以包括文件打开时间,在打开一个文件时,将该文件的文件打开时间设置为当前时间;从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭具体可以包括:关闭文件未来访问计数为0且文件打开时间最早的文件。另一种可选的实施方式中,文件打开/关闭历史信息表中的记录还可以包括文件未来访问计数归0时间,当一个文件的文件未来访问计数从1变为0时,将该文件的文件未来访问计数归0时间设置为当前时间;从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭具体可以包括:关闭文件未来访问计数为0且文件未来访问计数归0时间最早的文件。
上述按照预设发起请求数阈值进行控制的方法与按照预设延时关闭文件数量阈值进行控制的方法可以结合使用。
需要补充说明的是,当存在需要立即关闭的文件时,关闭该文件,然后把该文件在文件打开/关闭历史信息表的相应记录中的文件当前打开/关闭状态设置为关闭状态(即把相应文件指针设置为空);进一步的,还可以将这条记录从文件打开/关闭历史信息表中删除。
异步并行I/O系统在退出运行前,需要关闭所有尚未关闭的文件。另外,应用程序在运行过程中,可能会需要异步I/O系统确认已经关闭了某个文件。为此,需要向应用程序提供关闭异步I/O系统所打开文件的功能。响应于应用程序发起的文件关闭命令,异步I/O系统根据命令所指定的文件名,在文件打开/关闭历史信息表中查找相应记录,如果不存在相应记录、或相应记录中的当前打开/关闭状态为关闭状态,则不进行任何操作,并完成该命令;否则,异步I/O系统关闭相应文件(其中会更新文件打开/关闭历史信息表)后,然后完成该命令。
图2为本发明一实施例提供的异步I/O系统文件打开/关闭的控制装置的结构示意图。如图2所示,本实施例提供的异步I/O系统文件打开/关闭的控制装置20可以包括文件打开模块201和文件关闭模块202。
文件打开模块201,用于响应于异步I/O系统在开始处理I/O请求时发起的文件打开申请,获取待打开文件的文件名,从异步I/O系统的文件打开/关闭历史信息表中获取待打开文件的当前打开/关闭状态,若当前打开/关闭状态指示待打开文件处于打开状态,则不再重复打开该文件;若当前打开/关闭状态指示待打开文件处于关闭状态,则打开该文件并在文件打开/关闭历史信息表中将该文件的当前打开/关闭状态更新为打开状态;文件打开/关闭历史信息表包括至少一条记录,每条记录包括文件名、当前打开/关闭状态和文件未来访问计数;
文件关闭模块202,用于响应于异步I/O系统在处理完I/O请求时发起的文件关闭申请,获取待关闭文件的文件名,将待关闭文件的文件未来访问计数减少1,根据待关闭文件的文件未来访问计数确定是否需要立即关闭待关闭文件。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例还提供一种电子设备设备,请参见图3所示,本发明实施例仅以图3为例进行说明,并不表示本发明仅限于此。图3为本发明一实施例提供的电子设备的结构示意图。如图3所示,本实施例提供的电子设备30包括:存储器301、处理器302和总线303。其中,总线303用于实现各元件之间的连接。
存储器301中存储有计算机程序,计算机程序被处理器302执行时可以实现上述任一方法实施例的技术方案。
其中,存储器301和处理器302之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可以通过一条或者多条通信总线或信号线实现电性连接,如可以通过总线303连接。存储器301中存储有实现异步I/O系统文件打开/关闭的控制方法的计算机程序,包括至少一个可以软件或固件的形式存储于存储器301中的软件功能模块,处理器302通过运行存储在存储器301内的软件程序以及模块,从而执行各种功能应用以及数据处理。
存储器301可以是,但不限于,随机存取存储器(RandomAccess Memory,简称:RAM),只读存储器(Read OnlyMemory,简称:ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称:PROM),可擦除只读存储器(ErasableProgrammable Read-OnlyMemory,简称:EPROM),电可擦除只读存储器(ElectricErasable Programmable Read-OnlyMemory,简称:EEPROM)等。其中,存储器301用于存储程序,处理器302在接收到执行指令后,执行程序。进一步地,上述存储器301内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。
处理器302可以是一种集成电路芯片,具有信号的处理能力。上述的处理器302可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称:CPU)、网络处理器(NetworkProcessor,简称:NP)等。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。可以理解,图3的结构仅为示意,还可以包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件和/或软件实现。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现上述任一方法实施例的技术方案。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
本公开的保护范围不限于上述的实施例,显然,本领域的技术人员可以对本公开进行各种改动和变形而不脱离本公开的范围和精神。倘若这些改动和变形属于本公开权利要求及其等同技术的范围,则本公开的意图也包含这些改动和变形在内。
Claims (11)
1.一种异步I/O系统文件打开/关闭的控制方法,其特征在于,包括:
响应于异步I/O系统在开始处理I/O请求时发起的文件打开申请,获取待打开文件的文件名,从异步I/O系统的文件打开/关闭历史信息表中获取所述待打开文件的当前打开/关闭状态,若当前打开/关闭状态指示所述待打开文件处于打开状态,则不再重复打开该文件;若当前打开/关闭状态指示所述待打开文件处于关闭状态,则打开该文件并在所述文件打开/关闭历史信息表中将该文件的当前打开/关闭状态更新为打开状态;所述文件打开/关闭历史信息表包括至少一条记录,每条记录包括文件名、当前打开/关闭状态和文件未来访问计数;
响应于异步I/O系统在处理完I/O请求时发起的文件关闭申请,获取待关闭文件的文件名,将所述待关闭文件的文件未来访问计数减少1,根据所述待关闭文件的文件未来访问计数确定是否需要立即关闭所述待关闭文件;
所述根据所述待关闭文件的文件未来访问计数确定是否需要立即关闭所述待关闭文件,包括:当所述待关闭文件的文件未来访问计数从1变为0时,不关闭所述待关闭文件,并将所述待关闭文件的当前打开/关闭状态更新为延时关闭;
获取所述异步I/O系统中处于延时关闭状态的文件数量;
当所述异步I/O系统中处于延时关闭状态的文件数量大于等于预设延时关闭文件数量阈值时,则从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,直至所述异步I/O系统中处于延时关闭状态的文件数量小于所述预设延时关闭文件数量阈值。
2.根据权利要求1所述的方法,其特征在于,所述响应于异步I/O系统在开始处理I/O请求时发起的文件打开申请之前,所述方法还包括:
响应于应用程序发起的异步I/O请求,获取所述异步I/O请求对应的文件名;
根据所述异步I/O请求对应的文件名在所述文件打开/关闭历史信息表进行查找;
若存在所述异步I/O请求对应的文件名的记录,则将该记录的文件未来访问计数增加1;
若不存在所述异步I/O请求对应的文件名的记录,则在所述文件打开/关闭历史信息表中新增一条记录,并将该记录的文件名设置为所述异步I/O请求对应的文件名,当前打开/关闭状态设置为关闭状态,文件未来访问计数设置为1。
3.根据权利要求1所述的方法,其特征在于,所述当前打开/关闭状态采用指针表示,打开状态下指针为对应的文件指针,关闭状态下指针为空。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述异步I/O系统中打开的文件数量;
若所述打开的文件数量大于预设文件数量阈值时,则关闭文件未来访问计数最小的文件,直至所述异步I/O系统中打开的文件数量小于等于所述预设文件数量阈值。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述待关闭文件的文件未来访问计数确定是否需要立即关闭所述待关闭文件,包括:
当所述待关闭文件的文件未来访问计数从1变为0时,立即关闭所述待关闭文件。
6.根据权利要求1所述的方法,其特征在于,所述文件打开/关闭历史信息表的记录还包括延时关闭后I/O请求计数,所述方法还包括:
当一个文件的文件未来访问计数从1变为0时,将该文件的延时关闭后I/O请求计数设置为0;
响应于应用程序发起的异步I/O请求,将所述文件打开/关闭历史信息表中文件未来访问计数为0的各条记录中的延时关闭后I/O请求计数增加1;
当文件的文件未来访问计数为0,且延时关闭后I/O请求计数大于等于预设发起请求数阈值时,立即关闭该文件。
7.根据权利要求1所述的方法,其特征在于,所述文件打开/关闭历史信息表的记录还包括文件打开时间,所述方法还包括:
在打开一个文件时,将该文件的文件打开时间设置为当前时间;
所述从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,包括:
关闭文件未来访问计数为0且文件打开时间最早的文件。
8.根据权利要求1所述的方法,其特征在于,所述文件打开/关闭历史信息表的记录还包括文件未来访问计数归0时间,所述方法还包括:
当一个文件的文件未来访问计数从1变为0时,将该文件的文件未来访问计数归0时间设置为当前时间;
所述从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,包括:
关闭文件未来访问计数为0且文件未来访问计数归0时间最早的文件。
9.一种异步I/O系统文件打开/关闭的控制装置,其特征在于,包括:
文件打开模块,用于响应于异步I/O系统在开始处理I/O请求时发起的文件打开申请,获取待打开文件的文件名,从异步I/O系统的文件打开/关闭历史信息表中获取所述待打开文件的当前打开/关闭状态,若当前打开/关闭状态指示所述待打开文件处于打开状态,则不再重复打开该文件;若当前打开/关闭状态指示所述待打开文件处于关闭状态,则打开该文件并在所述文件打开/关闭历史信息表中将该文件的当前打开/关闭状态更新为打开状态;所述文件打开/关闭历史信息表包括至少一条记录,每条记录包括文件名、当前打开/关闭状态和文件未来访问计数;
文件关闭模块,用于响应于异步I/O系统在处理完I/O请求时发起的文件关闭申请,获取待关闭文件的文件名,将所述待关闭文件的文件未来访问计数减少1,根据所述待关闭文件的文件未来访问计数确定是否需要立即关闭所述待关闭文件;
所述文件关闭模块用于根据所述待关闭文件的文件未来访问计数确定是否需要立即关闭所述待关闭文件,具体包括:当所述待关闭文件的文件未来访问计数从1变为0时,不关闭所述待关闭文件,并将所述待关闭文件的当前打开/关闭状态更新为延时关闭;
用于获取所述异步I/O系统中处于延时关闭状态的文件数量,当所述异步I/O系统中处于延时关闭状态的文件数量大于等于预设延时关闭文件数量阈值时,则从处于延时关闭状态的文件中选出需要立即关闭的文件并进行关闭,直至所述异步I/O系统中处于延时关闭状态的文件数量小于所述预设延时关闭文件数量阈值的模块。
10.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-8任一项所述的异步I/O系统文件打开/关闭的控制方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8任一项所述的异步I/O系统文件打开/关闭的控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310069782.3A CN115794750B (zh) | 2023-02-07 | 2023-02-07 | 异步i/o系统文件打开/关闭的控制方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310069782.3A CN115794750B (zh) | 2023-02-07 | 2023-02-07 | 异步i/o系统文件打开/关闭的控制方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794750A CN115794750A (zh) | 2023-03-14 |
CN115794750B true CN115794750B (zh) | 2023-06-13 |
Family
ID=85430121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310069782.3A Active CN115794750B (zh) | 2023-02-07 | 2023-02-07 | 异步i/o系统文件打开/关闭的控制方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794750B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033529A (zh) * | 2022-08-11 | 2022-09-09 | 北京卡普拉科技有限公司 | 一种异步i/o适配方法、系统、存储介质及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077084B (zh) * | 2014-07-22 | 2017-07-21 | 中国科学院上海微系统与信息技术研究所 | 分布式随机访问文件系统及其访问控制方法 |
CN107864215B (zh) * | 2017-11-21 | 2020-10-20 | 中国科学院上海微系统与信息技术研究所 | 对等网络文件系统、访问控制/管理方法/系统、及终端 |
CN113672966B (zh) * | 2020-05-13 | 2024-09-13 | 上海亦净网络科技有限公司 | 文件访问控制方法和系统 |
US12050553B2 (en) * | 2020-10-01 | 2024-07-30 | Netapp, Inc. | Supporting a lookup structure for a file system implementing hierarchical reference counting |
CN113886334A (zh) * | 2021-10-12 | 2022-01-04 | 西安热工研究院有限公司 | 使用虚拟文件句柄操作存档文件的方法、系统及存储介质 |
-
2023
- 2023-02-07 CN CN202310069782.3A patent/CN115794750B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033529A (zh) * | 2022-08-11 | 2022-09-09 | 北京卡普拉科技有限公司 | 一种异步i/o适配方法、系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115794750A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102564165B1 (ko) | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 | |
RU2597520C2 (ru) | Контроллер памяти и способ работы такого контроллера памяти | |
US9256542B1 (en) | Adaptive intelligent storage controller and associated methods | |
US9996262B1 (en) | Method and apparatus to abort a command | |
EP2798502B1 (en) | Data migration for composite non-volatile storage device | |
US11010094B2 (en) | Task management method and host for electronic storage device | |
CN110941395B (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
KR102236419B1 (ko) | 액세스 요청을 관리하기 위한 방법, 장치, 기기 및 저장 매체 | |
CN111124267B (zh) | 数据写入的方法、设备和计算机程序产品 | |
US9239742B2 (en) | Embedded systems and methods for threads and buffer management thereof | |
US5371857A (en) | Input/output interruption control system for a virtual machine | |
KR20080105390A (ko) | 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치 | |
CN118312102A (zh) | Io请求处理方法、装置、存储设备及存储介质 | |
CN109062857B (zh) | 一种能高速实现多处理器间通信的新型消息控制器及其通信方法 | |
CN117742793B (zh) | 数据缓存指令的指令合并电路、方法及芯片 | |
CN114003366A (zh) | 一种网卡收包处理方法及装置 | |
CN115794750B (zh) | 异步i/o系统文件打开/关闭的控制方法、装置及设备 | |
CN110399219B (zh) | 内存访问方法、dmc及存储介质 | |
CN108228104B (zh) | 数据传输方法及固态硬盘控制器 | |
KR20210061583A (ko) | 적응형 딥러닝 가속 장치 및 방법 | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN114020792B (zh) | 实时数据库补历史数据方法、系统、存储介质及服务器 | |
JP2009059276A (ja) | 情報処理装置およびプログラム | |
CN111414148A (zh) | 面向高性能处理器的混合型fifo数据存储方法及装置 | |
US12086463B2 (en) | Abort handling by host controller for storage device |
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 |