首页 / 专利库 / 专利权 / 发明 / 管理输入/输出操作的方法、装置和计算机程序产品

管理输入/输出操作的方法、装置和计算机程序产品

阅读:182发布:2021-04-11

专利汇可以提供管理输入/输出操作的方法、装置和计算机程序产品专利检索,专利查询,专利分析的服务。并且本公开的 实施例 涉及用于管理输入/输出(I/O)操作的方法、装置和 计算机程序 产品。在此公开的用于管理I/O操作的方法包括估计即将发生的随机I/O操作要 访问 的存储设备中的第一存储区域,第一数据被存储在估计的第一存储区域中。该方法还包括在随机I/O操作被执行之前,将第一数据从第一存储区域预先读取到与存储设备相关联的高速缓存中。以此方式,本公开的实施例能够针对随机I/O操作实现缓存预取,从而有效提高数据访问的性能。,下面是管理输入/输出操作的方法、装置和计算机程序产品专利的具体信息内容。

1.一种用于管理输入/输出(I/O)操作的方法,包括:
估计即将发生的随机I/O操作要访问的存储设备中的第一存储区域,第一数据被存储在估计的所述第一存储区域中;以及
在所述随机I/O操作被执行之前,将所述第一数据从所述第一存储区域预先读取到与所述存储设备相关联的高速缓存中。
2.根据权利要求1所述的方法,其中所述存储设备包括多个存储区域,并且估计所述第一存储区域包括:
估计所述随机I/O操作将访问所述多个存储区域的相应概率;以及
将所述多个存储区域中与最高概率相关联的存储区域确定为所述第一存储区域。
3.根据权利要求1所述的方法,其中估计所述第一存储区域包括:
获得用于估计即将发生的随机I/O操作要访问的所述存储设备中的存储区域的预测模型
利用所述预测模型来估计所述第一存储区域。
4.根据权利要求3所述的方法,其中获得所述预测模型包括:
获取历史随机I/O操作的集合;
确定所述历史随机I/O操作的集合中的每个随机I/O操作的一个或多个特征;以及从所述历史随机I/O操作的集合中的所述历史随机I/O操作的相应特征来获得所述预测模型。
5.根据权利要求3所述的方法,还包括:
执行所述随机I/O操作;
基于所述执行的结果,确定所述预先读取是否命中;
基于所述预先读取是否命中的所述确定的结果,确定所述预测模型的命中率;以及响应于所述命中率低于预定阈值,更新所述预测模型。
6.根据权利要求5所述的方法,其中执行所述随机I/O操作包括:
响应于确定所述随机I/O操作访问的是所述存储设备中的第二存储区域,确定被存储在所述第二存储区域中的第二数据是否被预先读取到所述高速缓存中;
响应于确定所述第二数据被预先读取到所述高速缓存中,从所述高速缓存来访问所述第二数据;以及
响应于确定所述第二数据尚未被读取到所述高速缓存中,从所述存储设备访问所述第二数据。
7.根据权利要求5所述的方法,其中确定所述预先读取是否命中包括:
响应于确定所述随机I/O操作访问的是所述存储设备中的第二存储区域,确定所述第二存储区域是否被包括在估计的所述第一存储区域中;
响应于确定所述第二存储区域被包括在所述第一存储区域中,确定所述预先读取命中;以及
响应于确定所述第二存储区域未被包括在所述第一存储区域中,确定所述预先读取未命中。
8.根据权利要求1所述的方法,其中所述随机I/O操作包括随机读操作和随机写操作中的一种。
9.根据权利要求1所述的方法,其中所述随机I/O操作由与所述存储设备相关联的数据库发起。
10.一种用于管理输入/输出(I/O)操作的装置,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述装置执行动作,所述动作包括:
估计即将发生的随机I/O操作要访问的存储设备中的第一存储区域,第一数据被存储在估计的所述第一存储区域中;以及
在所述随机I/O操作被执行之前,将所述第一数据从所述第一存储区域预先读取到与所述存储设备相关联的高速缓存中。
11.根据权利要求10所述的装置,其中所述存储设备包括多个存储区域,并且估计所述第一存储区域包括:
估计所述随机I/O操作将访问所述多个存储区域的相应概率;以及
将所述多个存储区域中与最高概率相关联的存储区域确定为所述第一存储区域。
12.根据权利要求10所述的装置,其中估计所述第一存储区域包括:
获得用于估计即将发生的随机I/O操作要访问的所述存储设备中的存储区域的预测模型;
利用所述预测模型来估计所述第一存储区域。
13.根据权利要求12所述的装置,其中获得所述预测模型包括:
获取历史随机I/O操作的集合;
确定所述历史随机I/O操作的集合中的每个随机I/O操作的一个或多个特征;以及从所述历史随机I/O操作的集合中的所述历史随机I/O操作的相应特征来获得所述预测模型。
14.根据权利要求12所述的装置,其中所述动作还包括:
执行所述随机I/O操作;
基于所述执行的结果,确定所述预先读取是否命中;
基于所述预先读取是否命中的所述确定的结果,确定所述预测模型的命中率;以及响应于所述命中率低于预定阈值,更新所述预测模型。
15.根据权利要求14所述的装置,其中执行所述随机I/O操作包括:
响应于确定所述随机I/O操作访问的是所述存储设备中的第二存储区域,确定被存储在所述第二存储区域中的第二数据是否被预先读取到所述高速缓存中;
响应于确定所述第二数据被预先读取到所述高速缓存中,从所述高速缓存来访问所述第二数据;以及
响应于确定所述第二数据尚未被读取到所述高速缓存中,从所述存储设备访问所述第二数据。
16.根据权利要求14所述的装置,其中确定所述预先读取是否命中包括:
响应于确定所述随机I/O操作访问的是所述存储设备中的第二存储区域,确定所述第二存储区域是否被包括在估计的所述第一存储区域中;
响应于确定所述第二存储区域被包括在所述第一存储区域中,确定所述预先读取命中;以及
响应于确定所述第二存储区域未被包括在所述第一存储区域中,确定所述预先读取未命中。
17.根据权利要求10所述的装置,其中所述随机I/O操作包括随机读操作和随机写操作中的一种。
18.根据权利要求10所述的装置,其中所述随机I/O操作由与所述存储设备相关联的数据库发起。
19.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1-9中的任一项所述的方法。

说明书全文

管理输入/输出操作的方法、装置和计算机程序产品

技术领域

[0001] 本公开的实施例总体涉及数据存储领域,具体涉及用于管理输入/输出(I/O)操作的方法、装置和计算机程序产品。

背景技术

[0002] 缓存预取(cache prefetch)是由计算机处理器使用的技术,该技术用于将指令或数据在其实际被需要之前从较慢的存储设备预先读取到高速缓存中,从而提高访问效率。缓存预取的性能取决于其预测未来I/O模式的能。在传统方案中,缓存预取通常仅适用于顺序I/O模式,即请求访问的数据在存储设备中被存储的地址范围是顺序的(例如,对音频或视频数据的访问)。这些方案往往不适用于诸如数据库访问的随机I/O模式,其中请求访问的数据在存储设备中被存储的地址范围是随机或伪随机分布的。
发明内容
[0003] 本公开的实施例提供了用于管理输入/输出(I/O)操作的方法、装置和计算机程序产品。
[0004] 在本公开的第一方面,提供了一种用于管理I/O操作的方法。该方法包括:估计即将发生的随机I/O操作要访问的存储设备中的第一存储区域,第一数据被存储在估计的第一存储区域中;以及在随机I/O操作被执行之前,将第一数据从第一存储区域预先读取到与存储设备相关联的高速缓存中。
[0005] 在本公开的第二方面,提供了一种用于管理I/O操作的装置。该装置包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时使得装置执行动作,该动作包括:估计即将发生的随机I/O操作要访问的存储设备中的第一存储区域,第一数据被存储在估计的第一存储区域中;以及在随机I/O操作被执行之前,将第一数据从第一存储区域预先读取到与存储设备相关联的高速缓存中。
[0006] 在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令。该机器可执行指令在由设备执行时使该设备执行根据本公开的第一方面所描述的方法的任意步骤。
[0007] 提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。附图说明
[0008] 通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
[0009] 图1示出了本公开的实施例能够在其中被实施的示例环境的示意图;
[0010] 图2示出了传统方案中的缓存预取机制的示意图;
[0011] 图3示出了根据本公开的实施例的用于管理I/O操作的示例方法的流程图
[0012] 图4示出了根据本公开的实施例的用于获得预测模型的示例方法的流程图;
[0013] 图5示出了根据本公开的实施例的用于更新预测模型的示例方法的流程图;
[0014] 图6示出了根据本公开的实施例的用于更新预测模型的自反馈系统的示意图;
[0015] 图7A示出了根据本公开的实施例的实现针对随机I/O操作进行缓存预取的缓存预取管理器的示意框图
[0016] 图7B示出了根据本公开的实施例的缓存预取管理器中的有限状态机的示意图;以及
[0017] 图8示出了可以用来实施本公开内容的实施例的示例设备的示意性框图。
[0018] 在各个附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

[0019] 下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0020] 在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
[0021] 如上所述,缓存预取是由计算机处理器使用的技术,该技术用于将指令或数据在其实际被需要之前从较慢的存储设备预先读取到高速缓存中,从而提高访问效率。缓存预取的性能取决于其预测未来I/O模式的能力。
[0022] 在传统方案中,缓存预取通常仅适用于顺序I/O模式,即请求访问的数据在存储设备中被存储的地址范围是顺序的(例如,对音频或视频数据的访问)。一些传统方案依赖于I/O操作所涉及的数据的大小(也称为“I/O大小”)来表征顺序数据流,从而导致类似大小的随机I/O将触发无效的缓存预取。一些传统方案为了避免上述问题而延迟预取,从而浪费了进行有效预取的某些机会。此外,这些方案往往不适用于诸如数据库访问的随机I/O模式,其中请求访问的数据在存储设备中被存储的地址范围是随机或伪随机分布的。随机I/O模式将导致根据传统方案的预取方案被停用。
[0023] 本公开的实施例提出了一种用于管理I/O操作的方案,以解决上述问题和其他潜在问题中的一个或多个。该方案基于统计学方法实现了针对随机I/O操作的新的预取机制。针对顺序I/O操作,传统方案可以被沿用。这使得该方案能够实现针对顺序I/O模式和随机I/O模式两者的缓存预取,从而提高系统的整体性能。此外,该方案能够预测未来I/O操作的模式,并且能够自动调整预测模型的参数,从而提高针对随机I/O操作进行的缓存预取的命中率。
[0024] 以下将结合附图来详细讨论本公开的示例实施例。
[0025] 图1示出了本公开的实施例能够在其中被实现的示例环境100的框图。如图1所示,环境100包括主机110、存储处理器120以及存储设备130。应当理解,仅出于示例性的目的描述环境100的结构,而不暗示对于本公开的范围的任何限制。例如,本公开的实施例还可以被应用到与环境100不同的环境中。
[0026] 在环境100中,主机110可以例如是运行用户应用的任何物理计算机、虚拟机服务器等等。主机110可以向存储处理器120发送输入/输出(I/O)请求,例如用于从存储设备130读取数据和/或向存储设备130写入数据等。响应于接收到来自主机110的读请求,存储处理器120可以从存储设备130读取数据,并且将所读取的数据返回给主机110。响应于接收到来自主机110的写请求,存储处理器120可以向存储设备130写入数据。存储设备130可以包括多个盘131-1、131-2……131-N(统称为或者单独地称为“盘131”)。在此所述的“盘”可以指代任何目前已知或者将来开发的非易失性存储介质,例如磁盘、光盘或固态盘(SSD)等等。
[0027] 如图1所示,存储处理器120可以包括高速缓存121,其用于将经常访问的数据临时存储在诸如动态随机访问存储器(DRAM)的高速存储介质中,以提高系统的访问性能。例如,来自主机110的I/O请求将首先被转发至高速缓存121。当I/O请求所针对的数据已经被缓存在高速缓存121中时(也称为“缓存命中”),则可以通过直接访问高速缓存121中的数据来对I/O请求进行响应。反之,如果I/O请求所针对的数据未被缓存在高速缓存121中(也称为“缓存未命中”),则I/O请求将被转发至存储设备130,以从存储设备130访问相应数据。
[0028] 在一些情况下,存储处理器120可以在数据实际被需要之前将数据从存储设备130预先读取到高速缓存121中。例如,存储处理器120可以基于先前I/O的访问模式来确定何时对存储设备130上的数据进行预取以及要预取多少数据量。预取的数据量过小将导致后续I/O很有可能仍然需要从存储设备130来访问数据,从而无法提高数据访问的性能。预取的数据量过大将导致对高速缓存121中的有限资源的浪费。
[0029] 在一些实施例中,存储处理器120可以利用以下两种预取机制之一来实现缓存预取:读更多(read more)和提前读(read ahead)。第一种预取机制是指比主机所请求的数据相比读取更多的数据。第二种预取机制是指高速缓存基于主机当前读取的地址以及该高速缓存认为主机接下来将要访问的地址来发起单独的缓存页面的读取。
[0030] 图2示出了根据本公开的实施例的缓存预取机制的示意图。图2示出了读更多的预取机制。如图2所示,主机发起的读请求210例如请求读取起始地址为0x0并且长度为0x800的数据。该请求被发送(201)至高速缓存121,高速缓存121确定该数据未被缓存,因此从底层存储设备130加载该数据。高速缓存121可以基于以下将详细描述的预测方法来估计是否需要读取更多的数据。如图2所示,在此假设高速缓存121估计出需要读取更多的数据并且估计出即将发生的I/O操作所涉及的地址范围(例如,起始地址为0x0并且长度为0x1000)。因此,高速缓存121可以向存储设备130发送(202)请求,以读取起始地址为0x0并且长度为
0x1000的数据。存储设备130将起始地址为0x0并且长度为0x1000的数据返回(203)给高速缓存121,以存储在高速缓存121的缓存页面中。高速缓存121可以仅将主机所需要的起始地址为0x0并且长度为0x800的数据220返回(204)给主机。然后,另一读请求230被发送(205)至高速缓存121,其例如请求读取起始地址为0x400并且长度为0x600的数据。因为该数据已经被预先存储在高速缓存121处,因此高速缓存121无须从存储设备130加载该数据,而是直接将该数据240返回(205)给主机。
[0031] 为了能够预测即将发生的I/O操作所涉及的地址范围,本公开的实施例提出了基于贝叶斯推理的地址范围预测机制。贝叶斯推理一种统计推理方法,其中贝叶斯定理被用于在更多证据或信息可用时更新假设的概率。贝叶斯推理是统计学中的一项重要技术,广泛应用于机器学习等诸多领域。在一些实施例中,可以基于贝叶斯推理来获得预测模型,以实现对随机模式的I/O操作的地址分布的预测。具体地,可以通过获得预定地址空间中的I/O概率质量函数来估计针对该预定地址空间的未来随机I/O操作的地址分布概率,从而基于估计的未来随机I/O操作所涉及的地址范围来实现缓存预取。
[0032] 如上所述,I/O操作的模式可以分为顺序I/O和随机I/O。顺序I/O是指请求访问的数据在存储设备中被存储的地址范围是顺序的(例如,对音频或视频数据的访问)。随机I/O是指请求访问的数据在存储设备中被存储的地址范围是随机或伪随机分布的(例如,来自数据库的I/O访问请求)。在一些实施例中,随机模式的I/O操作的地址分布可以被近似为若干高斯分布(即,正态分布)的组合。
[0033] 贝叶斯推理得出后验概率作为两个前因的结果,两个前因即先验概率和从观察到的数据的统计模型得到的“似然函数”。贝叶斯推理根据如下公式(1)来计算后验概率:
[0034]
[0035] 其中P(Ci)即先验概率,其是在作为当前证据的数据被观察到之前对假设的概率的估计。P(Ci|X)即后验概率,是在给定X(即,X被观察到)的情况下Ci的概率。P(X)是在给定Ci的情况下观察到X的概率。P(X)是证据X的似然函数,其表明证据与给定假设的兼容性。似然函数是证据X的函数,而后验概率是假设Ci的函数。
[0036] 因此,关于贝叶斯推理的关键点在于其通过应用贝叶斯规则提供了一种将新证据与先验信念相结合的原则性方法。此外,贝叶斯规则可以被迭代地应用:在观察到一些证据之后,得到的后验概率可以被视为先验概率,并且新的后验概率可以从新证据被得到。该过程称为“贝叶斯更新”。
[0037] 图3示出了根据本公开的实施例的用于缓存预取的示例方法300的流程图。方法300例如可以在如图1所示的存储处理器120处被执行。应当理解,方法300还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0038] 在框310处,存储处理器120估计即将发生的随机I/O操作要访问的存储设备中的存储区域(本文中也称为“第一存储区域”)。
[0039] 在一些实施例中,存储处理器120可以利用基于贝叶斯推理来获得用于估计即将发生的随机I/O操作要访问的所述存储设备中的存储区域的预测模型,并且利用该预测模型来估计第一存储区域。
[0040] 在一些实施例中,可以首先对预测模型进行初始化,也即获得初始预测模型。在此所述的“初始化”指代确定预测模型的一组初始参数。经初始化的预测模型能够被用于估计即将发生的随机I/O操作要访问的存储区域。当获得初始预测模型之后,可以利用该预测模型来估计即将发生的随机I/O操作要访问的存储设备中的存储区域。如以下进一步描述的,可以基于随机I/O操作的实际执行结果来确定预测模型的命中率。当预测模型的命中率不能满足要求时,该预测模型(例如,其参数)可以被更新。经更新的预测模型可以被用于估计后续即将发生的随机I/O操作要访问的存储设备中的存储区域。以此方式,预测模型能够随着缓存预取的执行而被持续地更新。
[0041] 图4示出了根据本公开的实施例的用于获得预测模型的示例方法400的流程图。方法400例如可以在如图1所示的存储处理器120处被执行。应当理解,方法400还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0042] 在框410处,存储处理器120获取历史随机I/O操作的集合作为训练数据集。在一些实施例中,可以在预定时间间隔内采集实际发生的历史随机I/O操作来作为训练数据集。
[0043] 在框420处,确定训练数据集中的每个历史随机I/O操作的一个或多个特征。在一些实施例中,可以针对每个历史随机I/O操作确定其地址范围、请求访问的数据大小、优先级、类型等特征。以此方式,每个I/O操作X可以利用由多个特征组成的特征向量来表示:X={x1,x2,…xn},其中n≥1并且xi(其中i≥1并且i≤n)表示该I/O操作的一个特征。
[0044] 在框430处,从训练数据集中的历史随机I/O操作的相应特征来获得预测模型。
[0045] 在一些实施例中,假设基于地址递增的顺序存在m个地址范围,例如第一地址范围为0x0到0x100000(表示为“0x0:0x100000”),第二地址范围0x100000到0xA00000等等,则训练的预测模型将能够预测即将发生的I/O操作属于m个地址范围中的哪个地址范围。基于以上讨论的贝叶斯推理的原理,这相当于确定最大后验概率P(Ci|X),其中Ci表示I/O操作的地址范围属于m个地址范围中的第i个地址范围,X表示从训练数据集中观察到的I/O操作的特征。根据以上公式(1),为了获得最大的P(Ci|X),需要获得最大的P(X|Ci)P(Ci)/P(X),其中对于发出I/O请求的给定应用而言P(X)可以是恒定的,因此仅需要计算P(X|Ci)P(Ci)的最大值。在一些实施例中,针对m个地址范围而言,通常可以假定这些地址范围的先验概率是相同的,即P(C1)=P(C2)=…=P(Cm),其中P(Ci)(i≥1并且i≤m)可以基于训练数据集来被计算。P(X|Ci)同样可以基于训练数据集被计算,但是由于训练数据集中的每个I/O操作包含多个特征,因此可能需要进行多轮迭代来确定P(X1|Ci)、P(X1|Ci)、……P(Xn|Ci)中的每一个。以此方式,能够从训练数据集获得P(X|Ci)和P(Ci)进而获得后验概率P(Ci|X),从而得到初始预测模型。该初始预测模型能够估计出即将发生的I/O操作所属的类别(即,所涉及的地址范围)。
[0046] 当估计出即将发生的I/O操作所涉及的存储区域时,在框320处,存储处理器120在随机I/O操作实际被执行之前,将估计的存储区域中的数据(以下也称为“第一数据”)从估计的存储区域预先读取到与存储设备130相关联的高速缓存121中。
[0047] 在一些实施例中,响应于估计出即将发生的随机I/O操作所涉及的地址范围,如图1所示的存储处理器120可以执行缓存预取操作。具体地,存储处理器120可以在随机I/O操作被执行之前,从估计的存储区域读取数据,并且将所读取的数据存储在高速缓存121中。
[0048] 如上所述,在一些实施例中,存储处理器120可以基于实际发生的随机I/O操作来确定预测模型的命中率,进而基于该命中率来对预测模型进行更新。
[0049] 图5示出了根据本公开的实施例的用于更新预测模型的示例方法500的流程图。例如,方法500可以在方法300之后被执行。应当理解,方法500还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
[0050] 在框510处,存储处理器120执行随机I/O操作。在一些实施例中,响应于确定该随机I/O操作访问的是存储设备中的第二存储区域,存储处理器120可以确定被存储在第二存储区域中的第二数据是否被预先读取到高速缓存121中。如果第二数据已经被预先读取到高速缓存121中,则可以从高速缓存121来访问该第二数据;否则,可以从存储设备130访问该第二数据。
[0051] 在框520处,存储处理器120基于随机I/O操作的执行结果,确定缓存预取是否命中。在一些实施例中,如果随机I/O请求实际请求访问的第二存储区域被包括在估计的第一存储区域中,则表示上述缓存预取命中;否则,则表示上述缓存预取未命中。
[0052] 在框530处,存储处理器120基于缓存预取是否命中的确定结果,来确定预测模型的命中率。在框540处,存储处理器120确定预测模型的命中率是否低于预定阈值
[0053] 当预测模型的命中率低于预定阈值时,在框550处,预测模型可以被更新。在一些实施例中,可以通过获得新的训练数据集来更新该预测模型。附加地或备选地,在另一些实施例中,可以将上述得到的后验概率P(Ci|X)作为新的先验概率P(Ci),并且然后计算新的后验概率P(Ci|X)。这种方式等同于利用新的证据来更新概率,其也被称为概率自迭代。如图6所示,其实际上形成了一个负的自反馈系统600。缓存预取命中率是用于对其进行评估的指标,在该系统600中,缓存预取命中率将跟踪I/O模式的变化。通过选择合适的模型参数,能够使得缓存预取命中率以更快的速度跟随I/O模式的变化。
[0054] 在一些实施例中,缓存预取可以针对读操作被执行。附加地或者备选地,缓存预取还可以针对写操作被执行。尽管在本文中以针对读操作的缓存预取为例来描述本公开的实施例,应当理解这仅仅出于示例的目的,而不旨在暗示对本公开的限制。本公开的实施例也适用于针对写操作执行缓存预取。
[0055] 在一些实施例中,针对随机I/O操作的上述预取机制可以与传统方案中针对顺序I/O操作的预取机制相结合,从而实现针对各种I/O模式的缓存预取。附加地或备选地,在针对随机I/O操作执行缓存预取时,可以采用如图2所示的读更多和提前读这两种机制中的任何一种,其中预先读取的地址范围是根据以上描述的预测机制而估计的地址范围。此外,在实践中,可以在如图1所示的存储处理器120中实现专针对随机I/O操作的缓存预取管理器来实现上述缓存预取机制。在一些实施例中,该缓存预取管理器可以利用有限状态机来进行控制。
[0056] 图7A示出了根据本公开的实施例的用于实现针对随机I/O操作的缓存预取的示例管理器700的示意框图。管理器700例如可以被实现在如图1所示的存储处理器120处。如图7A所示,管理器700例如可以包括多个过程710、730、740、750和760,这些过程的执行由管理器700的内部状态机720触发,并且将引起状态机720的状态切换。
[0057] 如图7A所示,初始地,状态机720处于初始化状态721。初始化状态721将触发过程710的执行,过程710用于获得初始预测模型。过程710与如图4所述的方法400类似,在此不再赘述。当预测模型被获得后,状态机721从初始化状态721转变为就绪状态722。就绪状态
722将触发过程730的执行。过程730用于执行缓存预取。
[0058] 如过程730所示,在框731处,确定状态机720是否处于就绪状态722(也即,确定初始预测模型是否已被获得)。如果在框731处确定状态机720未处于就绪状态722,则等待状态机720的状态转变为就绪状态722。
[0059] 如果状态机720处于就绪状态722,则过程730进行至框732,利用预测模型来估计即将发生的I/O操作所涉及的存储区域,同时状态机720从就绪状态722转变为运行状态723。在框733处,将数据从估计的存储区域预先读取到高速缓存中。
[0060] 在框734处,获取缓存预取命中率。例如,缓存预取命中率的确定可以由单独的过程740在后台执行。当获取到缓存预取命中率时,状态机720将进入命中率被收集状态724。在框735处,确定命中率是否被获得。如果确定命中率未获取,则等待过程740确定缓存预取命中率。
[0061] 如果确定命中率已被获取,则在框736处,确定命中率是否超过预定阈值。如果命中率超过预定阈值,则表明预测模型的命中率符合要求而无须被更新。此时,该预取I/O完成。
[0062] 如果命中率低于预定阈值,则在框737处撤销预取I/O操作,与此同时使状态机720的状态转变为模型更新状态725。模型更新状态725将触发过程750的执行,以更新预测模型。
[0063] 此外,状态机720还包括模型禁用状态726。例如,当过程760禁用预测模型时,状态机720的状态转变为模型禁用状态726,此时将停用预测模型针对随机I/O操作的预测。
[0064] 图7B示出了如图7A所示的状态机720的状态切换的示意图。如图7B所示,初始地,状态机720处于初始化状态721。当状态机720处于初始化状态721时,管理器700将基于训练数据集来获得初始预测模型。当初始预测模型被获得后,状态机720从初始化状态721转变(771)为就绪状态722。
[0065] 当状态机720处于就绪状态722时,管理器700将利用预测模型来估计即将发生的I/O操作所涉及的存储区域,并且根据估计的存储区域执行缓存预取。与此同时,状态机720从就绪状态722转变(772)为运行状态723。
[0066] 当缓存预取执行完毕,状态机720从运行状态723转变(773)为命中率被收集状态724,当命中率被收集后,状态机720从命中率被收集状态724回到(774)运行状态723。如果命中率超过预定阈值,则状态机720从运行状态723回到(777)就绪状态722,以进行下一次缓存预取。
[0067] 如果命中率低于预定阈值,则状态机720从运行状态723转变(775)为模型更新状态725。当模型更新完毕,则回到(776)运行状态723继续本轮执行,或者返回(778)就绪状态722以进行下一次缓存预取。
[0068] 此外,当状态机720处于就绪状态722、运行状态723或模型更新状态725时,如果模型被禁用,则状态机720从上述状态转变(779,780,781)为模型禁用状态726。当模型重新被启用时,状态机720从模型禁用状态726回到(782)就绪状态722。
[0069] 从以上描述能够看出,本公开的实施例基于统计学方法实现了针对随机I/O操作的新的预取机制。针对顺序I/O操作,传统方案可以被沿用。这使得本公开的实施例能够实现针对顺序I/O模式和随机I/O模式两者的缓存预取,从而提高系统的整体性能。此外,本公开的实施例能够预测未来I/O操作的模式,并且能够自动调整预测模型的参数,从而提高针对随机I/O操作进行的缓存预取的命中率。
[0070] 图8示出了可以用来实施本公开内容的实施例的示例设备800的示意性框图。例如,如图1所示的存储处理器120可以由设备800实施。如图8所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。
在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 
803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
[0071] 设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0072] 上文所描述的各个过程和处理,例如方法300、400、500和/或过程710、730、740、750和/或760,可由处理单元801执行。例如,在一些实施例中,方法300、400、500和/或过程
710、730、740、750和/或760可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序被加载到RAM 803并由CPU 801执行时,可以执行上文描述的方法300、400、500和/或过程710、730、740、750和/或760的一个或多个动作。
[0073] 本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
[0074] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号
[0075] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0076] 用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0077] 这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0078] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0079] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0080] 附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0081] 以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈