CN107870872B - 用于管理高速缓存的方法和设备 - Google Patents
用于管理高速缓存的方法和设备 Download PDFInfo
- Publication number
- CN107870872B CN107870872B CN201610848648.3A CN201610848648A CN107870872B CN 107870872 B CN107870872 B CN 107870872B CN 201610848648 A CN201610848648 A CN 201610848648A CN 107870872 B CN107870872 B CN 107870872B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- response
- determining
- writing
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开的各实施例总体上涉及用于管理高速缓存的方法和设备。具体地,该方法可以包括响应于接收到向高速缓存写入数据的请求,确定将要写入的数据量。该方法还可以包括响应于数据量超过阈值量,跳过向高速缓存写入数据,以及将数据写入高速缓存的下级存储中。还提供了对应的***、装置和计算机程序产品。
Description
技术领域
本公开的各实施例总体上涉及计算机领域,具体地涉及一种用于管理高速缓存的方法和设备。
背景技术
在计算机技术发展过程中,主存储器存取速度一直比中央处理单元CPU处理速度慢得多,使得CPU的高速处理能力不能被充分发挥,从而整个计算机***的工作效率受到影响。为了缓和CPU和主存储器之间速度不匹配的矛盾,常用的方法之一是在存储层次上采用高速缓存存储器。高速缓存存储器是存在于主存储器与CPU之间的一级存储器,容量比较小但存取速度比主存储器高得多,接近于CPU的处理速度。
然而,在目前的实际应用中,虽然在主存储器与CPU之间放置了高速缓存存储器,但是在对高速缓存存储器进行大量I/O操作时,仍然可能出现***性能严重下降的问题。例如,在对高速缓存存储器进行大量I/O写操作时,通常是将所有数据都写入高速缓存存储器,而不考虑写入的数据量的大小。当向高速缓存存储器写入的数据量较大(例如,大于250K)时,由于高速缓存存储器容量比较小,因此很容易被写满,从而导致整个***性能严重下降。
发明内容
本公开的各实施例提供了一种用于管理高速缓存的方法、***和计算机程序产品。
根据本公开的第一方面,提供了一种用于管理高速缓存的方法。该方法包括:响应于接收到向高速缓存写入数据的请求,确定将要写入的数据量。该方法还可以包括响应于该数据量超过阈值量,跳过向高速缓存写入数据;以及将该数据写入高速缓存的下级存储中。
在一个示例性实施例中,其中跳过向高速缓存写入数据可以包括:确定高速缓存和下级存储中至少一个的使用状态,以及响应于该使用状态满足预定条件,跳过向高速缓存写入数据。
在一个示例性实施例中,其中确定高速缓存的使用状态可以包括确定该高速缓存的使用比率;并且其中跳过向高速缓存写入数据可以包括响应于使用比率超过阈值,跳过向高速缓存写入数据。
在一个示例性实施例中,其中确定高速缓存的使用状态可以包括确定高速缓存中存储的文件***的快照的状态;并且其中跳过向高速缓存写入数据可以包括响应于在向高速缓存写入数据之前高速缓存中不存在文件***未完成的快照,跳过向高速缓存写入数据。
在一个示例性实施例中,其中确定高速缓存的使用状态可以包括确定高速缓存的使用比率;并且其中跳过向高速缓存写入数据可以包括响应于使用比率超过阈值,跳过向高速缓存写入数据。
在一个示例性实施例中,其中确定高速缓存的使用状态可以包括确定高速缓存中存储的文件***的快照的状态;并且其中跳过向高速缓存写入数据可以包括响应于在向高速缓存写入数据之前高速缓存中不存在文件***未完成的快照,跳过向高速缓存写入数据。
在一个示例性实施例中,其中确定高速缓存的使用状态可以包括确定高速缓存中地址的使用状态;并且其中跳过向高速缓存写入数据可以包括响应于向高速缓存写入数据的目的地地址与高速缓存中已使用的地址没有重叠,跳过向高速缓存写入数据。
在一个示例性实施例中,其中确定高速缓存的使用状态可以包括确定通用块设备文件***的使用比率;并且其中跳过向高速缓存写入数据可以包括响应于使用比率小于阈值,跳过向高速缓存写入数据。
在一个示例性实施例中,其中确定下级存储的使用状态可以包括确定多核高速缓存的使用比率;并且其中跳过向高速缓存写入数据可以包括响应于使用比率小于阈值,跳过向高速缓存写入数据。
根据本公开的第二方面,提供了一种用于管理高速缓存的***。该***包括:处理器和存储器。存储器被耦合到处理器并且存储有供处理器执行的指令。指令当由处理器执行时,可以使得***:响应于接收到向高速缓存写入数据的请求,确定将要写入的数据量;响应于数据量超过阈值量,跳过向高速缓存写入数据;以及将数据写入高速缓存的下级存储中。
根据本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使得机器执行根据本公开的第一方面所描述的方法的任意步骤。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了根据本公开的实施例的用于管理高速缓存的***100的框图;
图2示出了根据本公开的实施例的用于管理高速缓存的示例方法200的流程图;
图3示出了根据本公开的实施例的用于管理高速缓存的示例300;
图4示出了根据本公开的实施例的用于管理高速缓存的装置400的框图;以及
图5示出了可以用来实施本公开内容的实施例的示例设备500的示意性框图。
具体实施例
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如以上所描述的,在对高速缓存存储器进行大量I/O操作时,可能出现诸如***性能严重下降之类的一系列问题。为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于管理高速缓存的方法和设备。根据本公开,通过在对高速缓存存储器进行大量I/O操作时,判断将要写入的数据量是否超过阈值量,或者附加地或备选地在确定将要写入的数据量超过阈值量的情况下,进一步判断其他预定的条件是否得到满足,并且基于判断的结果来确定是否跳过对高速缓存的写入,为高速缓存提供了一种管理方案,从而有效地提升了***性能。
图1示出了根据本公开的实施例的用于管理高速缓存的***100的框图。应当理解,仅出于示例性的目的描述***100的结构和功能而不是暗示对于本公开的范围的任何限制。本公开的实施例可以被体现在不同的结构和/或功能中。
如图1所示,***100可以包括映射逻辑单元(MLU)110、通用块设备文件***的应用程序接口(CBFS-API)120、通用文件***(CFS)130、统一文件***(UFS64)140以及多核高速缓存(MCC)150。另外,通用文件***130还可以包括文件数据高速缓存(FDC)135,统一文件***140还可以包括数据记录(DATALOG)145,以及多核高速缓存150还可以包括页面1551、1552…155N-1、155N(统称为“页面”155),其中N为自然数。而且,映射逻辑单元110可以与通用块设备文件***的应用程序接口120和多核高速缓存150通信,通用块设备文件***的应用程序接口120可以与通用文件***130通信,通用文件***130可以与统一文件***140通信,以及统一文件***140中的数据记录145可以与多核高速缓存150中的页面155通信。注意,在此描述的***中的各个组件的具体名称和/或协议仅仅是为了帮助本领域技术人员更好地理解本公开的思想,无意以任何方式限制本公开的范围。而且,在其他实施例中,可以包括更多或者更好的组件,也可以包括具有相同或相似功能的替代组件。
为了便于说明,文件数据高速缓存135和数据记录145可以组成永久文件数据高速缓存(PFDC)作为本文中所涉及的“高速缓存”,这是由于用于存储数据记录145的存储介质具有掉电不丢失数据的特性,因此可以进一步提高文件***的稳定性。注意,本文中所涉及的“高速缓存”也可以指的是本领域公知的高速缓存的概念。另外,多核高速缓存150可以作为本文中所涉及的“下级存储”,并且通用块设备文件***的应用程序接口120、通用文件***130和统一文件***140可以组成通用块设备文件***(CBFS)。
具体地,根据本公开的实施例,响应于通用块设备文件***接收到来自射逻辑单元110的向高速缓存写入数据的请求,确定将要写入高速缓存中数据记录145的数据量。响应于该数据量超过阈值量,跳过向高速缓存中的数据记录145写入数据;以及将该数据写入高速缓存的下级存储中(即,图1中的多核高速缓存150)。附加地或备选地,在将要写入高速缓存中数据记录145的数据量超过阈值量的情况下,还可以进一步判断其他预定的条件是否得到满足,并且基于判断的结果来确定是否跳过对高速缓存中数据记录145的写入。例如,其他预定的条件可以是当前高速缓存中数据记录145的使用比率,高速缓存中文件数据高速缓存135中存储的文件***的快照的状态,当前高速缓存中数据记录145的地址的使用状态,用于管理高速缓存的通用块设备文件***的使用比率,以及作为下级存储的多核高速缓存150的使用比率。应当理解,在此描述的各示例性条件仅仅是为了帮助本领域技术人员更好地理解本公开的思想,无意以任何方式限制本公开的范围。而且,在其他实施例中,可以包括更多或者更好的预定条件。
下面将参考图2至图5来进一步详细描述本公开的示例实施例。图2示出了根据本公开的实施例的用于管理高速缓存的示例方法200的流程图。例如,方法200可以由如图1所示的用于管理高速缓存的***100来执行。应当理解的是,方法200还可以包括未示出的附加步骤和/或可以省略所示出的步骤,本公开的范围在此方面不受限制。
如图2所示,在210,接收向高速缓存写入数据的请求。在一个实施例中,这可以借助于通用块设备文件***来实现。例如,由通用块设备文件***接收来自映射逻辑单元110的向高速缓存中的数据记录145写入数据的请求。在220,确定将要写入的数据量。在一个实施例中,这也可以借助于通用块设备文件***来实现。
在230,将确定待写入高速缓存中的数据记录145的数据量与阈值量(例如,250KB,其通过统计得出并且也可以由用户自定义)进行比较,以确定将要写入的数据量是否超过阈值量。响应于将要写入的数据量超过阈值量,跳过向高速缓存中的数据记录145写入数据。否则,在260向高速缓存写入数据,即,向高速缓存中的数据记录145写入数据。
注意,在上面描述的实施例中,只要将要写入的数据量足够大(即,超过阈值量),就跳过向高速缓存的写入。备选地,在其他实施例中,在将要写入数据量超过阈值量的情况下,在240,进一步判断其他预定的条件是否得到满足,并且基于判断的结果来确定是否跳过对高速缓存的写入。总体而言,这些条件可以涉及当前高速缓存中数据记录145的使用比率,高速缓存中文件数据高速缓存135中存储的文件***的快照的状态,当前高速缓存中数据记录145的地址的使用状态,用于管理高速缓存的通用块设备文件***的使用比率,以及作为下级存储的多核高速缓存150的使用比率中的至少一项,下面将描述一些示例条件。
在一个实施例中,在240处确定的条件可以包括确定高速缓存中数据记录145的使用比率,其中使用比率可以反映数据记录145当前已使用的空间。例如,响应于确定高速缓存中数据记录145的使用比率大于80%(该参数可以通过统计得出并且也可以由用户自定义),即,高速缓存中数据记录145当前已使用了80%的空间,跳过向高速缓存中数据记录145写入数据。
在一个实施例中,在240处确定的条件可以包括确定高速缓存中文件数据高速缓存135中存储的文件***的快照的状态。例如,在向高速缓存中数据记录145写入数据之前,检测文件数据高速缓存135中存储的文件***的快照的状态。响应于确定文件数据高速缓存135中不存在文件***未完成的快照,跳过向高速缓存中数据记录145写入数据。
在一个实施例中,在240处确定的条件可以包括确定高速缓存中数据记录145中地址的使用状态。例如,响应于确定向高速缓存中数据记录145写入数据的目的地地址与数据记录145中已使用的地址没有重叠,跳过向高速缓存中数据记录145写入数据。
在一个实施例中,在240处确定的条件可以包括确定通用块设备文件***的使用比率,其中使用比率可以反映通用块设备文件***当前的繁忙程度。例如,响应于确定通用块设备文件***的使用比率小于80%(该参数可以通过统计得出并且也可以由用户自定义),即,通用块设备文件***当前空闲,跳过向高速缓存中数据记录145写入数据。
在一个实施例中,在240处确定的条件可以包括确定作为下级存储的多核高速缓存150的使用比率,其中使用比率可以反映多核高速缓存150当前已使用的空间。例如,响应于确定多核高速缓存150的使用比率小于90%(该参数可以通过统计得出并且也可以由用户自定义)时,即,多核高速缓存150当前还有可供存储的空间,跳过向高速缓存中数据记录145写入数据。
注意,上文这些条件可以单独使用,也可以结合使用。例如,在一个实施例中,只有当上述所有条件均得到满足时,才跳过对高速缓存中数据记录145的写入。
继续参考图2,在240,响应于其他预定的条件没有得到满足,在250将数据写入高速缓存的下级存储中(例如,在本示例中可以是多核高速缓存150)。另外,在260向高速缓存写入数据之后,在适当时间将数据写入高速缓存的下级存储中。
上文已经参考图2详细描述了本公开实施例的用于管理高速缓存的方法200。下面参考图3,其示出了根据本公开的实施例的用于管理高速缓存的示例300。将会理解,结合图3所描述的过程可以被视作是上文描述的方法200的一种具体实现。结合图3的描述仅仅是为了使本领域技术人员更好地理解本公开实施例的精神和原理,而无意以任何方式限制本公开的范围。
在图3所示的实施例中,用户可以通过***100之外的主机适配器310对计算机(例如,主机和/或服务器)进行操作(例如,对计算机文件***的I/O操作)。例如,在进行I/O写操作时,主机适配器310向映射逻辑单元110发出(315)写请求,该写请求例如可以是向高速缓存中数据记录145写入数据的请求。
映射逻辑单元110响应于接收到写请求,向通用块设备文件***的应用程序接口120发出(320)对写进行映射(MFW)的请求。为了响应接收到的对写进行映射的请求,通用块设备文件***的应用程序接口120需要向文件数据高速缓存135发出(325)查找其中现有的文件数据高速缓存(FDC)条目的请求,用于检测高速缓存中文件数据高速缓存中是否存在文件***未完成的快照。
如果在文件数据高速缓存135中没有找到现有的文件数据高速缓存条目(即,未命中,换言之,文件数据高速缓存135中不存在文件***未完成的快照),则向智能过滤器350发出(330)高速缓存未命中,其中智能过滤器350是为了更好地说明通用块设备文件***如何管理由文件数据高速缓存和数据记录组成的高速缓存而抽象出来功能模块(图1中未示出)。
注意,智能过滤器350仅仅是为了帮助本领域技术人员更好地理解本公开的思想,无意以任何方式限制本公开的范围。而且,在其他实施例中,可以包括更多或者更好的组件,也可以包括具有相同或相似功能的替代组件。
假设该智能过滤器350根据上文所述的预定条件判断应当跳过向高速缓存中数据记录145的写入,向文件数据高速缓存135发出(335)选定将要跳过向高速缓存中数据记录145的写入,继而文件数据高速缓存135向通用块设备文件***的应用程序接口120发出(340)跳过请求,从而跳过向高速缓存中数据记录145写入数据。接下来,通用块设备文件***的应用程序接口120向通用块设备文件***映射380发出(345)要求映射的请求,其中***100外的通用块设备文件***映射380是用于对I/O写操作进行映射,为了不混淆本发明,在图1的***100中未示出。
接下来,通用块设备文件***映射380向映射逻辑单元110发出(355)回调请求,从而使得映射逻辑单元110向多核高速缓存150发出(360)避免数据拷贝(DCA)写(还被称为直写)的请求,用于向作为下级存储的多核高速缓存150写入数据。当向多核高速缓存150写入数据完成之后,多核高速缓存150向映射逻辑单元110发出(365)I/O请求包(IRP)完成,用于告知映射逻辑单元110向多核高速缓存150写入数据已经完成。
映射逻辑单元110向通用块设备文件***的应用程序接口120发出(370)对写进行映射的处理(CMFW)的请求,用于告知通用块设备文件***的应用程序接口120如何对写进行映射。通用块设备文件***的应用程序接口120向通用块设备文件***映射380发出(375)写通用块设备文件***记录(CBFS LOG)的请求。
在通用块设备文件***映射380完成写通用块设备文件***记录之后,向通用块设备文件***的应用程序接口120发出(385)完成通知,用于告知通用块设备文件***的应用程序接口120已经完成写通用块设备文件***记录。接下来,通用块设备文件***的应用程序接口120向映射逻辑单元110发出(390)完成通知,然后映射逻辑单元110向主机适配器310发出(395)确认通知。
图4示出了根据本公开的实施例的用于管理高速缓存的装置400的框图。例如,用于管理高速缓存的方法200可以由装置400实现。如图4所示,装置400可以包括确定模块410,被配置为响应于接收到向高速缓存写入数据的请求,确定将要写入的数据量。装置400还可以包括写入模块420,被配置为响应于所述数据量超过阈值量,跳过向所述高速缓存写入所述数据,以及将所述数据写入所述高速缓存的下级存储中。
出于清楚的目的,在图4中没有示出装置400的某些可选模块。然而,应当理解,上文参考图1至图3所描述的各个特征同样适用于装置400。而且,装置400的各个模块可以是硬件模块,也可以是软件模块。例如,在某些实施例中,装置400可以部分或者全部利用软件和/或固件来实现,例如被实现为包含在计算机可读介质上的计算机程序产品。备选地或附加地,装置400可以部分或者全部基于硬件来实现,例如被实现为集成电路(IC)、专用集成电路(ASIC)、片上***(SOC)、现场可编程门阵列(FPGA)等。本公开的范围在此方面不受限制。
图5示出了可以用来实施本公开内容的实施例的示例设备500的示意性框图。如图所示,设备500包括中央处理单元(CPU)505,其可以根据存储在只读存储器(ROM)510中的计算机程序指令或者从存储单元540加载到随机访问存储器(RAM)515中的计算机程序指令,来执行各种适当的动作和处理。在RAM 515中,还可存储设备500操作所需的各种程序和数据。CPU 505、ROM 510以及RAM 515通过总线520彼此相连。输入/输出(I/O)接口525也连接至总线520。
设备500中的多个部件连接至I/O接口525,包括:输入单元530,例如键盘、鼠标等;输出单元535,例如各种类型的显示器、扬声器等;存储单元540,例如磁盘、光盘等;以及通信单元545,例如网卡、调制解调器、无线通信收发机等。通信单元545允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如示例方法200,可由中央处理单元505执行。例如,在一些实施例中,示例方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元540。在一些实施例中,计算机程序的部分或者全部可以经由ROM 510和/或通信单元545而被载入和/或安装到设备500上。当计算机程序被加载到RAM 515并由CPU 505执行时,可以执行上文描述的示例方法200和/或示例300中的一个或多个步骤。备选地,在其他实施例中,中央处理单元505也可以以其他任何适当的方式(例如,固件)被配置以实现上述过程/方法。
通过以上描述可以看出,本公开的实施例通过在将要写入的数据量大于阈值量时跳过向高速缓存写入数据,显著提升了能够有效改善I/O处理器的性能,尤其是在向高速缓存大量连续写或者复杂混合写(包括大量连续写和少量随机写)的情况下。
本公开可以是方法、装置、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言-诸如Smalltalk、C++等,以及常规的过程式编程语言-诸如"C"语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (17)
1.一种用于管理高速缓存的方法,包括:
响应于接收到向所述高速缓存中的数据记录写入数据的请求,确定将要写入的数据量,其中确定所述数据量包括将所述数据量与阈值量进行比较;
响应于所述数据量超过所述阈值量并且满足预定条件,
不向所述高速缓存中的所述数据记录写入所述数据,以及
将所述数据写入所述高速缓存的下级存储中,
其中所述预定条件包括确定所述高速缓存中的所述数据记录和所述高速缓存的所述下级存储中至少一个的使用状态,其中确定所述高速缓存中的所述数据记录的所述使用状态包括确定通用块设备文件***的使用比率;
响应于接收到向所述高速缓存中的所述数据记录写入数据的请求,向所述通用块设备文件***发出对写进行映射的请求;
响应于接收到所述对写进行映射的请求,从所述通用块设备文件***向映射逻辑单元发出回调请求,其中响应于发出所述回调请求,从所述映射逻辑单元向所述高速缓存的所述下级存储发出向所述高速缓存的所述下级存储写入所述数据的请求;以及
从所述高速缓存的所述下级存储向所述映射逻辑单元发出输入/输出请求包完成。
2.根据权利要求1所述的方法,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存的使用比率,并且响应于所述使用比率超过阈值,不向所述高速缓存写入所述数据。
3.根据权利要求1所述的方法,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存中存储的文件***的快照的状态,并且响应于在向所述高速缓存写入所述数据之前所述高速缓存中存在所述文件***的完成的快照,不向所述高速缓存写入所述数据。
4.根据权利要求1所述的方法,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存中地址的使用状态,并且响应于向所述高速缓存写入所述数据的目的地地址与所述高速缓存中已使用的所有地址是分离的,不向所述高速缓存写入所述数据。
5.根据权利要求1所述的方法,其中确定所述通用块设备文件***的所述使用比率包括:响应于通用块设备文件***的所述使用比率小于阈值,不向所述高速缓存写入所述数据。
6.根据权利要求1所述的方法,其中确定所述下级存储的所述使用状态包括确定多核高速缓存的使用比率,并且响应于所述多核高速缓存的所述使用比率小于阈值,不向所述高速缓存写入所述数据。
7.一种用于管理高速缓存的***,包括:
处理器;
存储器,所述存储器被耦合到所述处理器并且存储有供所述处理器执行的指令,所述指令当由所述处理器执行时,使得所述***:
响应于接收到向所述高速缓存中的数据记录写入数据的请求,确定将要写入的数据量,其中确定所述数据量包括将所述数据量与阈值量进行比较;
响应于所述数据量超过所述阈值量并且满足预定条件,
不向所述高速缓存中的所述数据记录写入所述数据,以及
将所述数据写入所述高速缓存的下级存储中,
其中所述预定条件包括确定所述高速缓存中的所述数据记录和所述高速缓存的所述下级存储中至少一个的使用状态,其中确定所述高速缓存中的所述数据记录的所述使用状态包括确定通用块设备文件***的使用比率;
响应于接收到向所述高速缓存中的所述数据记录写入数据的请求,向所述通用块设备文件***发出对写进行映射的请求;
响应于接收到所述对写进行映射的请求,从所述通用块设备文件***向映射逻辑单元发出回调请求,其中响应于发出所述回调请求,从所述映射逻辑单元向所述高速缓存的所述下级存储发出向所述高速缓存的所述下级存储写入所述数据的请求;以及
从所述高速缓存的所述下级存储向所述映射逻辑单元发出输入/输出请求包完成。
8.根据权利要求7所述的***,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存的使用比率,并且响应于所述使用比率超过阈值,不向所述高速缓存写入所述数据。
9.根据权利要求7所述的***,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存中存储的文件***的快照的状态,并且响应于在向所述高速缓存写入所述数据之前所述高速缓存中存在所述文件***的完成的快照,不向所述高速缓存写入所述数据。
10.根据权利要求7所述的***,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存中地址的使用状态,并且响应于向所述高速缓存写入所述数据的目的地地址与所述高速缓存中已使用的所有地址是分离的,不向所述高速缓存写入所述数据。
11.根据权利要求7所述的***,其中确定所述通用块设备文件***的所述使用比率包括:响应于所述通用块设备文件***的所述使用比率小于阈值,不向所述高速缓存写入所述数据。
12.根据权利要求7所述的***,其中确定所述下级存储的所述使用状态包括确定多核高速缓存的使用比率,并且响应于所述多核高速缓存的所述使用比率小于阈值,不向所述高速缓存写入所述数据。
13.一种用于管理高速缓存的非瞬态计算机可读介质,所述非瞬态计算机可读介质利用用于管理高速缓存的机器可执行程序代码来编码,其中所述代码实现跨一个或多个处理器的执行,以用于:
响应于接收到向所述高速缓存中的数据记录写入数据的请求,确定将要写入的数据量,其中确定所述数据量包括将所述数据量与阈值量进行比较;
响应于所述数据量超过所述阈值量并且满足预定条件,
不向所述高速缓存中的所述数据记录写入所述数据,以及
将所述数据写入所述高速缓存的下级存储中,
其中所述预定条件包括确定所述高速缓存中的所述数据记录和所述高速缓存的所述下级存储中至少一个的使用状态,其中确定所述高速缓存中的所述数据记录的所述使用状态包括确定通用块设备文件***的使用比率;
响应于接收到向所述高速缓存中的所述数据记录写入数据的请求,向所述通用块设备文件***发出对写进行映射的请求;
响应于接收到所述对写进行映射的请求,从所述通用块设备文件***向映射逻辑单元发出回调请求,其中响应于发出所述回调请求,从所述映射逻辑单元向所述高速缓存的所述下级存储发出向所述高速缓存的所述下级存储写入所述数据的请求;以及
从所述高速缓存的所述下级存储向所述映射逻辑单元发出输入/输出请求包完成。
14.根据权利要求13所述的非瞬态计算机可读介质,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存的使用比率,并且响应于所述使用比率超过阈值,不向所述高速缓存写入所述数据。
15.根据权利要求13所述的非瞬态计算机可读介质,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存中存储的文件***的快照的状态,并且响应于在向所述高速缓存写入所述数据之前所述高速缓存中存在所述文件***的完成的快照,不向所述高速缓存写入所述数据。
16.根据权利要求13所述的非瞬态计算机可读介质,其中确定所述高速缓存的所述使用状态包括确定所述高速缓存中地址的使用状态,并且响应于向所述高速缓存写入所述数据的目的地地址与所述高速缓存中已使用的所有地址是分离的,不向所述高速缓存写入所述数据。
17.根据权利要求13所述的非瞬态计算机可读介质,其中确定所述通用块设备文件***的所述使用比率包括:响应于所述通用块设备文件***的所述使用比率小于阈值,不向所述高速缓存写入所述数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610848648.3A CN107870872B (zh) | 2016-09-23 | 2016-09-23 | 用于管理高速缓存的方法和设备 |
US15/709,951 US10747675B2 (en) | 2016-09-23 | 2017-09-20 | Method and device for managing caches |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610848648.3A CN107870872B (zh) | 2016-09-23 | 2016-09-23 | 用于管理高速缓存的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870872A CN107870872A (zh) | 2018-04-03 |
CN107870872B true CN107870872B (zh) | 2021-04-02 |
Family
ID=61686177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610848648.3A Active CN107870872B (zh) | 2016-09-23 | 2016-09-23 | 用于管理高速缓存的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10747675B2 (zh) |
CN (1) | CN107870872B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413214B (zh) * | 2018-04-28 | 2023-07-18 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、设备和计算机程序产品 |
CN110737394B (zh) * | 2018-07-20 | 2023-09-01 | 伊姆西Ip控股有限责任公司 | 管理缓存的方法、装置和计算机程序产品 |
CN109271139A (zh) * | 2018-09-11 | 2019-01-25 | 北京北信源软件股份有限公司 | 一种基于缓存中间件的规范化处理方法及装置 |
CN111124951B (zh) | 2018-10-31 | 2023-09-15 | 伊姆西Ip控股有限责任公司 | 管理数据访问的方法、设备和计算机程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097544A (zh) * | 2006-06-30 | 2008-01-02 | 英特尔公司 | 虚拟化事务存储器的全局溢出方法 |
CN101221537A (zh) * | 2007-01-08 | 2008-07-16 | 国际商业机器公司 | 降级数据的方法和*** |
CN101866320A (zh) * | 2009-04-14 | 2010-10-20 | 群联电子股份有限公司 | 数据管理方法及使用此方法的闪存储存***与控制器 |
CN102150140A (zh) * | 2008-12-27 | 2011-08-10 | 株式会社东芝 | 存储器***、控制存储器***的方法和信息处理装置 |
CN103399824A (zh) * | 2013-07-17 | 2013-11-20 | 北京航空航天大学 | 一种计算机处理器中高速缓存中缓存不命中的状态保持方法与装置 |
CN104794066A (zh) * | 2014-01-17 | 2015-07-22 | 株式会社东芝 | 存储装置及选择写入数据的存储区域的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8683139B2 (en) * | 2006-10-31 | 2014-03-25 | Hewlett-Packard Development Company, L.P. | Cache and method for cache bypass functionality |
US8127057B2 (en) * | 2009-08-13 | 2012-02-28 | Advanced Micro Devices, Inc. | Multi-level buffering of transactional data |
US8825685B2 (en) * | 2009-11-16 | 2014-09-02 | Symantec Corporation | Selective file system caching based upon a configurable cache map |
US9251069B2 (en) * | 2012-12-21 | 2016-02-02 | Advanced Micro Devices, Inc. | Mechanisms to bound the presence of cache blocks with specific properties in caches |
WO2016055828A1 (en) * | 2014-10-08 | 2016-04-14 | Via Alliance Semiconductor Co., Ltd. | Cache system with primary cache and overflow fifo cache |
US9753853B2 (en) * | 2014-10-09 | 2017-09-05 | Netapp, Inc. | Methods and systems for cache management in storage systems |
US9779026B2 (en) * | 2016-01-14 | 2017-10-03 | Seagate Technology Llc | Cache bypass utilizing a binary tree |
-
2016
- 2016-09-23 CN CN201610848648.3A patent/CN107870872B/zh active Active
-
2017
- 2017-09-20 US US15/709,951 patent/US10747675B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097544A (zh) * | 2006-06-30 | 2008-01-02 | 英特尔公司 | 虚拟化事务存储器的全局溢出方法 |
CN101221537A (zh) * | 2007-01-08 | 2008-07-16 | 国际商业机器公司 | 降级数据的方法和*** |
CN102150140A (zh) * | 2008-12-27 | 2011-08-10 | 株式会社东芝 | 存储器***、控制存储器***的方法和信息处理装置 |
CN101866320A (zh) * | 2009-04-14 | 2010-10-20 | 群联电子股份有限公司 | 数据管理方法及使用此方法的闪存储存***与控制器 |
CN103399824A (zh) * | 2013-07-17 | 2013-11-20 | 北京航空航天大学 | 一种计算机处理器中高速缓存中缓存不命中的状态保持方法与装置 |
CN104794066A (zh) * | 2014-01-17 | 2015-07-22 | 株式会社东芝 | 存储装置及选择写入数据的存储区域的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107870872A (zh) | 2018-04-03 |
US20180089092A1 (en) | 2018-03-29 |
US10747675B2 (en) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984312B (zh) | 数据读写的方法和设备 | |
CN107870728B (zh) | 用于移动数据的方法和设备 | |
CN108228646B (zh) | 用于访问数据的方法和电子设备 | |
CN108228647B (zh) | 用于数据拷贝的方法和设备 | |
US10705735B2 (en) | Method and device for managing hash table, and computer program product | |
CN107870872B (zh) | 用于管理高速缓存的方法和设备 | |
US10761990B2 (en) | Methods and devices for managing cache | |
US11288210B2 (en) | Method, device and computer program product for managing storage system | |
US10733008B2 (en) | Method, device and computer readable storage medium for managing a virtual machine | |
CN111949605A (zh) | 用于实现文件***的方法、设备和计算机程序产品 | |
US20170031812A1 (en) | Scheme for determining data object usage in a memory region | |
CN108984103B (zh) | 用于去重的方法和设备 | |
US11243717B2 (en) | Method, electronic device and computer program product for processing data | |
US11048422B2 (en) | Method, device, and computer readable storage medium for allocating access rights to data among storage processors | |
US20190129859A1 (en) | Method, device and computer program product for cache management | |
CN110765036A (zh) | 在控制设备处管理元数据的方法、设备和计算机程序产品 | |
US20200142904A1 (en) | Methods, electronic devices and computer program product for replicating metadata | |
CN111124270A (zh) | 缓存管理的方法、设备和计算机程序产品 | |
US11093389B2 (en) | Method, apparatus, and computer program product for managing storage system | |
CN112748849A (zh) | 用于存储数据的方法、设备和计算机程序产品 | |
CN113742131A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
CN111722785A (zh) | 一种缓存更新方法和装置 | |
US9857979B2 (en) | Optimizing page boundary crossing in system memory using a reference bit and a change bit | |
CN111125041A (zh) | 数据读取方法、电子设备和计算机程序产品 | |
CN113722389B (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 |