CN103038755B - 多节点系统中数据缓存的方法、装置及系统 - Google Patents
多节点系统中数据缓存的方法、装置及系统 Download PDFInfo
- Publication number
- CN103038755B CN103038755B CN201180001894.0A CN201180001894A CN103038755B CN 103038755 B CN103038755 B CN 103038755B CN 201180001894 A CN201180001894 A CN 201180001894A CN 103038755 B CN103038755 B CN 103038755B
- Authority
- CN
- China
- Prior art keywords
- file
- region
- buffer
- cache
- node
- 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
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/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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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
- G06F12/0871—Allocation or management of cache space
-
- 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
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明适用于数据处理领域,提供了一种多节点系统中数据缓存的方法、装置及系统,所述方法包括:将缓存介质的缓存区域划分为多个子区域,每个子区域与系统的一个节点对应;将每个子区域划分为线程缓存区域和全局缓存区域,线程缓存区域与磁盘阵列采用全相联方式建立映射,全局缓存区域与磁盘阵列采用组相联方式建立映射;在进程读取文件时,检测文件的读取频率;在文件的读取频率大于第一阈值且文件的大小未超过第二阈值将文件缓存至线程缓存区域;在文件的读取频率大于第一阈值且文件的大小超过第二阈值,将文件缓存至全局缓存区域。本发明可有效解决现有单缓存区域无法识别亲和节点的问题,减少系统的远程访问开销,提高系统的I/O性能。
Description
技术领域
本发明属于数据处理领域,尤其涉及多节点系统中数据缓存的方法、装置及系统。
背景技术
随着计算机技术的发展,计算机系统也变的越来越复杂,现有的计算机系统可能包含多个模块化的节点。在多节点计算机系统中缓存(Cache)设计的好坏是影响系统性能的重要因素,通过Cache可以加快数据的读写速率,进而提高系统的输入/输出(I/O)性能。
固态硬盘(SolidStateDisk,SSD)由于其优异的读写性能,被作为一种缓存介质广泛的应用于内存和磁盘之间。
在现有的应用中,SSD缓存和磁盘之间采用组相连的映射方式,如图1所示,每一块磁盘区域的数据缓存到相对应的SSD组(对应颜色区域的数据缓存到对应的SSD区域),当应用程序需要读取磁盘中白色区域的数据时,首先在SSD的白色区域中检索是否已缓存该数据。现有技术通过SSD缓存来保留一些常用的数据,减少了磁盘寻道的次数,提升了数据读取的效率。
然而,在将SSD缓存应用到多节点的计算机系统中时,如图1,假设SSD缓存中不同颜色的四个区域按顺序分别代表节点1、2、3、4。根据SSD缓存和磁盘之间组相连的映射方式,磁盘白色区域的数据只能缓存到节点1的缓存区域,即使系统识别出磁盘白色区域的数据与节点2亲和,也无法将其缓存到节点2的缓存区域,从而增加了系统的远程访问开销,降低了缓存的效率。
发明内容
本发明实施例提供一种多节点系统中数据缓存的方法,在多节点计算机系统中进行数据缓存时,可以识别亲和节点。
一种多节点系统中数据缓存的方法,该系统中至少包括缓存介质和磁盘阵列,所述方法包括:
将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
将每个所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射;
在进程读取文件时,检测所述文件的读取频率;
如果所述文件的读取频率大于第一阈值,并且所述文件的大小未超过第二阈值将所述文件缓存至所述线程缓存区域;如果所述文件的读取频率大于第一阈值,并且所述文件的大小超过第二阈值,将所述文件缓存至所述全局缓存区域。
一种多节点系统中数据缓存的映射方法,该系统中至少包括缓存介质和磁盘阵列,所述方法包括:
将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
将每个所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射。
本发明实施例还提供一种多节点系统中数据缓存的装置,该系统中至少包括缓存介质和磁盘阵列,所述装置包括:
第一划分单元音,用于将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
映射单元,用于将每个所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射;
检测单元,用于在进程读取文件时,检测所述文件的读取频率;
控制单元,用于如果所述文件的读取频率大于第一阈值,并且所述文件的大小未超过第二阈值将所述文件缓存至所述线程缓存区域;如果所述文件的读取频率大于第一阈值,并且所述文件的大小超过第二阈值,将所述文件缓存至所述全局缓存区域。
一种多节点系统中数据缓存的映射装置,该系统中至少包括缓存介质和磁盘阵列,所述装置包括:
第一划分单元音,用于将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
映射单元,用于将每个所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射;
本发明实施例还提供一种包括所述多节点系统中数据缓存装置的系统。
从上述方案中可以看出,本发明实施例通过将每个节点的缓存区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式,从而巧妙的解决了现有单缓存区域无法识别亲和节点的问题,减少了系统的远程访问开销,提高了数据访问的效率。同时,通过将不同大小的文件缓存到不同的缓存区域中,提高了缓存空间的利用率和文件读取的命中率。
附图说明
图1为现有多节点系统中数据缓存方法的示意图;
图2是本发明实施例一提供的多节点系统中数据缓存方法的实现流程图;
图3是本发明实施例一中全相连映射方式的示意图;
图4是本发明实施例二提供的多节点系统中数据缓存方法的实现流程图;
图5是本发明实施例二提供的进程感知的缓存映射示意图;
图6是本发明实施例三提供的多节点系统中数据缓存方法的实现流程图;
图7是本发明实施例四提供的多节点系统中数据缓存装置的组成结构图;
图8是本发明实施例五提供的多节点系统中数据缓存装置的组成结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,通过将每个节点的缓存区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式,从而巧妙的解决了现有单缓存区域无法识别亲和节点的问题,减少了系统的远程访问开销,提高了数据访问的效率。同时,通过将不同大小的文件缓存到不同的缓存区域中,提高了缓存空间的利用率和文件读取的命中率。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图2示出了本发明实施例一提供的多节点系统中数据缓存方法的实现流程,该方法过程详述如下:
在步骤S201中,将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应。
在本实施例中,多节点系统的架构包括但不局限于非一致性内存访问(NonUniformMemoryAccessAchitecture,NUMA)架构,该系统中至少包括缓存介质和磁盘阵列,其中,所述缓存介质包括但不局限于SSD,任何读写速度大于磁盘但小于内存的缓存介质都可以。
在本实施例中,多节点系统包括多个节点,每个节点都有各自独立的处理器。多节点系统将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应。其中,划分的方式包括但不局限于均匀划分。例如:假设多节点系统中包括节点1和节点2,节点1中包括处理器1,节点2中包括处理器2,多节点系统将系统中的SSD缓存介质中的缓存区域平均的划分给节点1和节点2,处理器1访问节点1内的缓存区域的时间为a,访问节点2内的缓存区域的时间为b,处理器2访问节点2内的缓存区域的时间为a,访问节点1内的缓存区域的时间为b,其中b大于a,即处理器访问本节点内的缓存区域的时间小于访问远程节点缓存区域的时间,节点1相对于处理器1来说,是处理器1的亲和节点,包含处理器的节点与其上安装了存储器的一个或者多个节点之间的存储器亲和性随着硬件分离级别的增加而减少。
作为本发明的一个实施例,在将缓存介质中的缓存区域划分给各节点时,还可以根据节点处理器的性能来划分,例如:在节点1中的处理器的性能高于节点2中处理器的性能,则节点1中划分得到的缓存区域将大于节点2中划分得到的缓存区域。
在步骤S202中,将每个所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射。
在本实施例中,将每个节点划分得到的子区域再划分为两块区域,一块为线程缓存区域,另一块为全局缓存区域。其中,划分的方式不局限于均匀划分。所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射。
全相联的映射方式如图3所示:缓存区域的块数为C,磁盘阵列的块数为M,全相联的映射共有C×M种。磁盘阵列中的任意一块可以映射到缓存区域中的任意一块。
若磁盘阵列中的数据已存入缓存区域的某块,则在该块的标记中存放磁盘阵列的块号。当处理器要访问该数据时,给出该数据在磁盘阵列的地址(块号+块内地址),先在缓存中查找,将所述块号与所有缓存区域中块的标记进行比较,若命中,则该块号与块内地址组成访问缓存区域的地址,若不命中,则根据该地址,从磁盘阵列中读取该数据。采用全相联的映射方式提高了缓存空间的利用率和访问数据的命中率。
组相联的映射方式如图1所示:磁盘阵列与缓存区域按同样大小划分成块,磁盘阵列与缓存区域按同样大小将块划分成组,磁盘阵列是缓存容量的整数倍,将磁盘阵列空间按缓存区域的大小分成区,磁盘阵列中每一区的组数与缓存区域的组数相同。当磁盘阵列的数据调入缓存区域时,磁盘阵列与缓存区域的组号应相等,也就是各区中的某一块只能存入缓存区域的同组号的空间内,但组内各块地址之间则可以任意存放,即从磁盘阵列的组到缓存区域的组之间采用直接映象方式,在两个对应的组内部采用全相联映象方式。
当进行数据访问时,先根据组号,在目录表中找到该组所包含的各块的目录,然后将被访问数据的磁盘阵列区号和组内块号,与本组内各块的目录同时进行比较。如果比较相等,则命中。如果比较不相等,说明没命中,所访问的数据块尚没有进入缓存,则进行组内替换。通过组相联的映射方式降低了块的冲突概率,提高了块的利用率。包含处理器的节点与其上安装了存储器的一个或者多个节点之间的存储器亲和性随着硬件分离级别的增加而减少。
在本实施例中,根据全相联映射方式中磁盘阵列中的任意一块可以映射到缓存区域中任意一块的特性,通过分析包含处理器和缓存区域的节点之间的硬件分离级别,将磁盘阵列中的数据块映射到其对应的亲和节点的缓存块中,从而可以有效解决现有缓存单纯采用组相连映射方式无法识别亲和节点的问题,减少了系统的远程访问开销,提高了数据访问的效率。
在步骤S203中,在进程读取文件时,检测所述文件的读取频率。
在本实施例中,系统会自动记录文件的读取频率,在进程读取文件时,检测所述文件的读取频率。
在步骤S204中,判断所述文件的读取频率是否大于预设的第一阈值,如果判断结果为“是”,则执行步骤S206,如果判断结果为“否”,则执行步骤S205。
在本实施例中,所述第一阈值可以根据系统处理器的性能和/或缓存空间的大小来预先设置。例如:在系统处理性能高、缓存空间大时,可以将阈值设置低一些,提高数据的读取效率。
在步骤S205中,在所述文件的读取频率小于或者等于预设的第一阈值时,将所述文件存储至所述磁盘阵列。
在步骤S206中,在所述文件的读取频率大于预设的第一阈值时,判断所述文件的大小是否超过预设的第二阈值,如果判断结果为“是”,则执行步骤S207,如果判断结果为“否”,则执行步骤S208。
在本实施例中,在所述文件的读取频率大于预设的第一阈值时,说明所述文件为频繁访问的文件。为了更充分、有效的利用缓存空间,需要继续判断所述文件的大小,在所述文件的大小超过预设的第二阈值(例如:512K)时,执行步骤S207,否则执行步骤S208。
在步骤S207中,当所述文件的大小超过预设的第二阈值时,将所述文件缓存至所述全局缓存区域。
在本实施例中,因为全局缓存区域与磁盘阵列采用组相连映射方式,组相联的映射方式降低了块的冲突概率,提高了块的利用率,但组相连的命中率相对较低,所以为了提高命中率,将较大的文件缓存至全局缓存区域。
在步骤S208中,当所述文件的大小未超过(小于或者等于)预设的第二阈值时,将所述文件缓存至所述线程缓存区域。
在本实施例中,线程缓存区域与磁盘阵列采用全相连映射方式,因为全相联的映射方式访问数据的命中率较高,所以将较小的文件缓存至所述线程缓存区域。而且,所述文件是缓存到其对应亲和节点的缓存块中,从而提高了文件读取的效率。
在本发明实施例中,根据全相联映射方式中磁盘阵列中的任意一块可以映射到缓存区域中任意一块的特性,将磁盘阵列中的数据块映射到其对应的亲和节点的缓存块中,从而解决现有缓存单纯采用组相连映射方式无法识别亲和节点的问题,减少了系统的远程访问开销,提高了数据访问的效率。同时,通过判断读取文件的大小,在所述文件的大小超过预设的第二阈值时,将所述文件缓存至所述全局缓存区域,降低了块的冲突概率,提高了块的利用率和命中率。在所述文件的大小未超过预设的第二阈值时,将所述文件缓存至所述文件亲和节点的线程缓存区域,既提高了缓存空间的利用率和文件的命中率,又提高了文件读取的效率。
实施例二:
图4示出了本发明实施例二提供的多节点系统中数据缓存方法的实现流程,该方法过程详述如下:
在步骤S401中,将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应,其具体实施过程如实施例一的步骤S201所述,在此不再赘述。
在步骤S402中,将每个节点所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射,其具体实施过程如实施例一的步骤S202所述,在此不再赘述。
在步骤S403中,将所述线程缓存区域划分为多个小区域,为每个进程在其亲和节点的线程缓存区域分配对应的小区域,每个小区域划分为私有缓存区域和共享缓存区域。
在本实施例中,将所述线程缓存区域划分为多个小的线程缓存区域,每个小的线程缓存区域再划分为两块区域,一块为私有缓存区域,一块为共享缓存区域,如图5所示。所述私有缓存区域用于缓存进程的私有数据,该私有缓存区域中的数据只能被该进程程访问,例如:某游戏进程中设置的参数等。所述共享缓存区域用于缓存进程的共享数据,该共享缓存区域中的数据可以被其他进程访问。
在本实施例中,为了方便查找和统一管理,为每个小线程缓存区域分配一个唯一编号,所述共享缓存区域采用双向链表的方式串联连接。
在本实施例中,为了节省数据的访问时间,降低节点间的通信负担,多节点系统中的调度器通过进程调度原则(每个进程与其自身节点具有最大的亲和性),为每个进程在亲和节点的线程缓存区域分配一个上分配一个对应的小区域。在进程被重新调入时,调度器会尽量让该进程在其之前运行的处理器上运行,从而保证缓存空间的利用率。
在本实施例中,同一个节点间多个处理器的进程迁移并不影响该进程的节点亲和性。
在步骤S404中,在进程读取文件时,检测所述文件的读取频率,其具体实施过程如实施例一的步骤S203所述,在此不再赘述。
在步骤S405中,判断所述文件的读取频率是否大于预设的第一阈值,如果判断结果为“是”,则执行步骤S407,如果判断结果为“否”,则执行步骤S406,其具体实施过程如实施例一的步骤S204所述,在此不再赘述。
在步骤S406中,在所述文件的读取频率小于或者等于预设的第一阈值时,将所述文件存储至所述磁盘阵列,其具体实施过程如实施例一的步骤S205所述,在此不再赘述。
在步骤S407中,在所述文件的读取频率大于预设的第一阈值时,判断所述文件的大小是否超过预设的第二阈值,如果判断结果为“是”,则执行步骤S408,如果判断结果为“否”,则执行步骤S409,其具体实施过程如实施例一的步骤S206所述,在此不再赘述。
在步骤S408中,当所述文件的大小超过预设的第二阈值时,将所述文件缓存至所述全局缓存区域,,其具体实施过程如实施例一的步骤S208所述,在此不再赘述。
在步骤S409中,当所述文件的大小未超过预设的第二阈值时,判断所述文件是否为所述进程的私有文件,如果判断结果为“是”,则执行步骤S410,如果判断结果为“否”,则执行步骤S411。
在本实施例中,每个文件都存在一个唯一的标识符,通过所述文件的唯一的标识符来判断所述文件是否为当前进程的私有文件。
在步骤S410中,当所述文件为所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的私有缓存区域。
在步骤S411中,当所述文件不是所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的共享缓存区域。
在本发明实施例中,通过将私有文件缓存至私有缓存区域,共享文件缓存至共享缓存区域,方便了文件的管理,提高了文件的查找效率。另外,通过对私有文件的管理,减少了私有文件不必要的频繁读取与写入操作,降低了缓存介质的写开销,提高了系统I/O性能。
实施例三:
图6示出了本发明实施例三提供的多节点系统中数据缓存方法的实现流程,该实施例是在实施二的基础上增加了步骤S612。
在步骤S612中,在所述进程执行结束时,释放分配给所述进程的缓存区域。
在本实施例中,为了节省缓存空间,在所述进程执行结束时,释放分配给所述进程的缓存区域。
在本发明实施例中,由于现有技术没有对缓存区域进行细分,也没有采用多种存储空间映射方式,导致系统在为每个进程分配空间时,都是分配统一大小的缓存空间,容易造成缓存空间的浪费。而且,在进程执行结束时,现有技术会释放分配的一整块缓存空间,而本发明是释放分配给进程的小缓存空间,从而避免了对其他未分配的小缓存空间的频繁读写操作所带来的开销。
实施例四:
图7示出了本发明实施例四提供的多节点系统中数据缓存装置的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该多节点系统中数据缓存装置可以是运行于各应用系统内的软件单元、硬件单元或者软硬件相结合的单元。
该多节点系统中数据缓存装置700包括第一划分单元71、映射单元72、检测单元73以及控制单元74。其中,各单元的具体功能如下:
第一划分单元71,用于将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
映射单元72,用于将每个节点所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射;
检测单元73,用于在进程读取文件时,检测所述文件的读取频率;
控制单元74,用于在所述文件的读取频率大于第一阈值,并且所述文件的大小未超过第二阈值将所述文件缓存至所述线程缓存区域;在所述文件的读取频率大于第一阈值,并且所述文件的大小超过第二阈值,将所述文件缓存至所述全局缓存区域。
本实施例提供的多节点系统中数据缓存装置可以使用在前述对应的多节点系统中数据缓存方法中,详情参见上述多节点系统中数据缓存方法实施例一、二、三的相关描述,在此不再赘述。
实施例五:
图8示出了本发明实施例五提供的多节点系统中数据缓存装置的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该多节点系统中数据缓存装置可以是运行于各应用系统内的软件单元、硬件单元或者软硬件相结合的单元。
该多节点系统中数据缓存装置800包括第一划分单元81、映射单元82、第二划分单元83、检测单元84存储单元85以及控制单元86。其中,各单元的具体功能如下:
第一划分单元81,用于将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
映射单元82,用于将每个节点所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射;
第二划分单元83,用于将所述线程缓存区域划分为多个小区域,为每个进程在其亲和节点的线程缓存区域分配对应的小区域,每个小区域划分为私有缓存区域和共享缓存区域,其中私有缓存区域用于缓存进程的私有数据,共享缓存区域用于缓存进程的共享数据;
检测单元84,用于在进程读取文件时,检测所述文件的读取频率;
存储单元85,用于在所述文件的读取频率小于或者等于预设的第一阈值时,将所述文件存储至所述磁盘阵列;
控制单元86,用于在所述文件的读取频率大于第一阈值,并且所述文件的大小未超过第二阈值将所述文件缓存至所述线程缓存区域;在所述文件的读取频率大于第一阈值,并且所述文件的大小超过第二阈值,将所述文件缓存至所述全局缓存区域。其中,所述控制单元86还包括第三判断模块861、私有缓存模块862以及共享缓存模块863:
所述第一判断模块861用于在所述文件的大小未超过预设的第二阈值时,判断所述文件是否为所述进程的私有文件;
所述私有缓存模块862用于当所述文件为所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的私有缓存区域;
所述共享缓存模块863用于当所述文件不是所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的共享缓存区域。
本实施例提供的多节点系统中数据缓存装置可以使用在前述对应的多节点系统中数据缓存方法中,详情参见上述多节点系统中数据缓存方法实施例二、三的相关描述,在此不再赘述。
作为本发明的另一实施例,该多节点系统中数据缓存装置还包括一释放单元87,所述释放单元87用于在所述进程执行结束时,释放分配给所述进程的缓存区域。
本实施例提供的多节点系统中数据缓存装置可以使用在前述对应的多节点系统中数据缓存方法中,详情参见上述多节点系统中数据缓存方法实施例三的相关描述,在此不再赘述。
本发明实施例提供的多节点系统中数据缓存方法,其全部或部分步骤是可以通过程序指令相关的硬件来完成。比如可以通过计算机运行程来完成。该程序可以存储在可读取存储介质,例如,随机存储器、磁盘、光盘等。
在本发明实施例中,根据全相联映射方式中磁盘阵列中的任意一块可以映射到缓存区域中任意一块的特性,将磁盘阵列中的数据块映射到其对应的亲和节点的缓存块中,从而解决现有缓存单纯采用组相连映射方式无法识别亲和节点的问题,减少了系统的远程访问开销,提高了数据访问的效率。同时,通过判断读取文件的大小,在所述文件的大小超过预设的第二阈值时,将所述文件缓存至所述全局缓存区域,降低了块的冲突概率,提高了块的利用率和命中率。在所述文件的大小未超过预设的第二阈值时,将所述文件缓存至所述文件亲和节点的线程缓存区域,既提高了缓存空间的利用率和文件的命中率,又提高了文件读取的效率。另外,通过将私有文件缓存至私有缓存区域,共享文件缓存至共享缓存区域,方便了文件的管理,提高了文件的查找效率。通过对私有文件的管理,减少了私有文件不必要的频繁读取与写入操作,降低了缓存介质的写开销,提高了系统I/O性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种多节点系统中数据缓存的方法,该系统中至少包括缓存介质和磁盘阵列,其特征在于,所述方法包括:
将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
将每个所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射;
在进程读取文件时,检测所述文件的读取频率;
如果所述文件的读取频率大于第一阈值,并且所述文件的大小未超过第二阈值将所述文件缓存至所述线程缓存区域;如果所述文件的读取频率大于第一阈值,并且所述文件的大小超过第二阈值,将所述文件缓存至所述全局缓存区域。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
将所述线程缓存区域划分为多个小区域,为每个进程在其亲和节点的线程缓存区域分配对应的小区域,每个小区域划分为私有缓存区域和共享缓存区域,其中私有缓存区域用于缓存进程的私有数据,共享缓存区域用于缓存进程的共享数据。
3.如权利要求2所述的方法,其特征在于,所述共享缓存区域采用双向链表的方式串联连接。
4.如权利要求2所述的方法,其特征在于,当所述文件的大小未超过第二阈值时,所述方法还包括:
判断所述文件是否为所述进程的私有文件;
当所述文件为所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的私有缓存区域;
当所述文件不是所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的共享缓存区域。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述进程执行结束时,释放分配给所述进程的缓存区域。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述文件的读取频率小于或者等于第一阈值时,将所述文件存储至所述磁盘阵列。
7.一种多节点系统中数据缓存的装置,该系统中至少包括缓存介质和磁盘阵列,其特征在于,所述装置包括:
第一划分单元,用于将所述缓存介质中的缓存区域划分为多个子区域,每个子区域与所述系统中的一个节点对应;
映射单元,用于将每个所述子区域划分为线程缓存区域和全局缓存区域,所述线程缓存区域与所述磁盘阵列采用全相联的映射方式建立映射,所述全局缓存区域与所述磁盘阵列采用组相联的映射方式建立映射;
检测单元,用于在进程读取文件时,检测所述文件的读取频率;
控制单元,用于在所述文件的读取频率大于第一阈值,并且所述文件的大小未超过第二阈值将所述文件缓存至所述线程缓存区域;在所述文件的读取频率大于第一阈值,并且所述文件的大小超过第二阈值,将所述文件缓存至所述全局缓存区域。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
存储单元,用于在所述文件的读取频率小于或者等于第一阈值时,将所述文件存储至所述磁盘阵列;
第二划分单元,用于将所述线程缓存区域划分为多个小区域,为每个进程在其亲和节点的线程缓存区域分配对应的小区域,每个小区域划分为私有缓存区域和共享缓存区域,其中私有缓存区域用于缓存进程的私有数据,共享缓存区域用于缓存进程的共享数据。
9.如权利要求8所述的装置,其特征在于,所述共享缓存区域采用双向链表的方式串联连接。
10.如权利要求7所述的装置,其特征在于,所述控制单元还包括:
第一判断模块,用于在所述文件的大小未超过第二阈值时,判断所述文件是否为所述进程的私有文件;
私有缓存模块,用于在所述文件为所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的私有缓存区域;
共享缓存模块,用于在所述文件不是所述进程的私有文件时,将所述文件缓存至所述进程对应小区域的共享缓存区域。
11.如权利要求7所述的装置,其特征在于,所述装置还包括:
释放单元,用于在所述进程执行结束时,释放分配给所述进程的缓存区域。
12.一种包含权利要求7至11任一项所述多节点系统中数据缓存装置的系统。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/077994 WO2012109879A1 (zh) | 2011-08-04 | 2011-08-04 | 多节点系统中数据缓存的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103038755A CN103038755A (zh) | 2013-04-10 |
CN103038755B true CN103038755B (zh) | 2015-11-25 |
Family
ID=46671940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180001894.0A Active CN103038755B (zh) | 2011-08-04 | 2011-08-04 | 多节点系统中数据缓存的方法、装置及系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9223712B2 (zh) |
EP (1) | EP2645259B1 (zh) |
CN (1) | CN103038755B (zh) |
WO (1) | WO2012109879A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9183017B2 (en) | 2012-10-19 | 2015-11-10 | International Business Machines Corporation | Affinity of virtual processor dispatching |
US9858185B1 (en) * | 2014-12-23 | 2018-01-02 | Emc Corporation | Multi-tier data storage using inclusive/exclusive burst buffer caching based on reference counts |
CN106569728B (zh) * | 2015-10-09 | 2021-02-23 | 中兴通讯股份有限公司 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
KR20170051563A (ko) * | 2015-10-29 | 2017-05-12 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN106371916B (zh) * | 2016-08-22 | 2019-01-22 | 浪潮(北京)电子信息产业有限公司 | 一种存储系统io线程优化方法及其装置 |
CN108009019B (zh) * | 2016-10-29 | 2021-06-22 | 网宿科技股份有限公司 | 分布式数据定位实例的方法、客户端及分布式计算系统 |
US11138178B2 (en) | 2016-11-10 | 2021-10-05 | Futurewei Technologies, Inc. | Separation of computation from storage in database for better elasticity |
US20180292988A1 (en) * | 2017-04-07 | 2018-10-11 | GM Global Technology Operations LLC | System and method for data access in a multicore processing system to reduce accesses to external memory |
CN109508140B (zh) * | 2017-09-15 | 2022-04-05 | 阿里巴巴集团控股有限公司 | 存储资源管理方法、装置、电子设备及电子设备、系统 |
FR3076003B1 (fr) * | 2017-12-27 | 2021-01-22 | Bull Sas | Acces multiples a un fichier de donnees stocke dans un systeme de stockage de donnees associe a un espace memoire tampon |
CN111694768B (zh) * | 2019-03-15 | 2022-11-01 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
WO2021066844A1 (en) * | 2019-10-04 | 2021-04-08 | Visa International Service Association | Techniques for multi-tiered data storage in multi-tenant caching systems |
CN110968271B (zh) * | 2019-11-25 | 2024-02-20 | 北京劲群科技有限公司 | 一种高性能数据存储方法、系统与装置 |
CN111371950A (zh) * | 2020-02-28 | 2020-07-03 | Oppo(重庆)智能科技有限公司 | 分屏响应方法及装置、终端、存储介质 |
CN111984197B (zh) * | 2020-08-24 | 2023-12-15 | 许昌学院 | 计算机缓存分配方法 |
CN112148225B (zh) * | 2020-09-23 | 2023-04-25 | 上海爱数信息技术股份有限公司 | 一种基于NVMe SSD的块存储缓存系统及其方法 |
CN117112268B (zh) * | 2023-10-23 | 2024-02-13 | 深圳市七彩虹禹贡科技发展有限公司 | 一种内存共享管理方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
CN1620651A (zh) * | 2002-01-09 | 2005-05-25 | 国际商业机器公司 | 使用全局窥探向单个相干系统中的分布式计算机节点提供高速缓存一致性的方法和设备 |
US7743200B1 (en) * | 2007-05-24 | 2010-06-22 | Juniper Networks, Inc. | Instruction cache using perfect hash function |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996644B2 (en) * | 2004-12-29 | 2011-08-09 | Intel Corporation | Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache |
US20090320036A1 (en) | 2008-06-19 | 2009-12-24 | Joan Marie Ries | File System Object Node Management |
-
2011
- 2011-08-04 WO PCT/CN2011/077994 patent/WO2012109879A1/zh active Application Filing
- 2011-08-04 EP EP11858742.7A patent/EP2645259B1/en active Active
- 2011-08-04 CN CN201180001894.0A patent/CN103038755B/zh active Active
-
2013
- 2013-08-16 US US13/968,714 patent/US9223712B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1620651A (zh) * | 2002-01-09 | 2005-05-25 | 国际商业机器公司 | 使用全局窥探向单个相干系统中的分布式计算机节点提供高速缓存一致性的方法和设备 |
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
US7743200B1 (en) * | 2007-05-24 | 2010-06-22 | Juniper Networks, Inc. | Instruction cache using perfect hash function |
Also Published As
Publication number | Publication date |
---|---|
WO2012109879A1 (zh) | 2012-08-23 |
EP2645259B1 (en) | 2015-10-14 |
US20130346693A1 (en) | 2013-12-26 |
CN103038755A (zh) | 2013-04-10 |
US9223712B2 (en) | 2015-12-29 |
EP2645259A4 (en) | 2014-02-19 |
EP2645259A1 (en) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103038755B (zh) | 多节点系统中数据缓存的方法、装置及系统 | |
US6205519B1 (en) | Cache management for a multi-threaded processor | |
CN107193646B (zh) | 一种基于混合主存架构的高效动态页面调度方法 | |
US7249152B2 (en) | Dynamic disk space management by multiple database server instances in a cluster configuration | |
CN108845960B (zh) | 一种存储器资源优化方法和装置 | |
CN104090847B (zh) | 一种固态存储设备的地址分配方法 | |
KR101013266B1 (ko) | 순간 캐시 저장소 | |
CN103678169B (zh) | 一种高效利用固态盘缓存的方法和系统 | |
CN109582600B (zh) | 一种数据处理方法及装置 | |
US20150234669A1 (en) | Memory resource sharing among multiple compute nodes | |
US7127465B2 (en) | Memory-efficient metadata organization in a storage array | |
WO2013112124A1 (en) | Managing addressable memory in heterogeneous multicore processors | |
CN102063386B (zh) | 一种单载体多目标的缓存系统的缓存管理方法 | |
US20180004409A1 (en) | Method and apparatus for managing storage device | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN104346284A (zh) | 一种内存管理方法及内存管理设备 | |
CN116501249A (zh) | 一种减少gpu内存重复数据读写的方法及相关设备 | |
CN111078143B (zh) | 基于段映射进行数据布局和调度的混合存储方法及系统 | |
CN104714898B (zh) | 一种Cache的分配方法和装置 | |
CN109558093B (zh) | 一种针对图像处理型负载的混合内存页面迁移方法 | |
CN113010452B (zh) | 一种高效且支持QoS的虚拟内存架构 | |
JP2009015509A (ja) | キャッシュメモリ装置 | |
US9747049B2 (en) | Computer memory management method and system | |
CN105095105A (zh) | 一种Cache分区的方法及装置 | |
CN109508302B (zh) | 一种内容填充方法和存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |