CN102663115B - 基于页面染色技术的内存数据库访问优化方法 - Google Patents
基于页面染色技术的内存数据库访问优化方法 Download PDFInfo
- Publication number
- CN102663115B CN102663115B CN201210113917.3A CN201210113917A CN102663115B CN 102663115 B CN102663115 B CN 102663115B CN 201210113917 A CN201210113917 A CN 201210113917A CN 102663115 B CN102663115 B CN 102663115B
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- data
- color
- queue
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
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
本发明公开了一种基于页面染色技术的内存数据库访问优化方法。该方法首先将弱局部性数据集的所有数据页面的访问顺序按页面颜色进行排序,并将所有数据页面按页面颜色进行分组,然后按页面颜色分组的顺序扫描弱局部性数据集的所有数据页面。进一步地,预设若干具有相同页面颜色的内存页面作为页面颜色队列,该页面颜色队列用作内存页面被加载入CPU缓存之前的内存缓存;弱局部性数据集的数据页面首先通过异步方式进入页面颜色队列,然后再被加载到CPU缓存中完成数据处理。本发明能够解决内存数据库应用中无法依赖页面颜色为进程、线程或数据集优化分配缓存地址空间的问题,有效减少数据局部性强度不同的数据集之间的缓存冲突。
Description
技术领域
本发明涉及一种内存数据库访问优化方法,尤其涉及一种基于页面染色技术(Page-coloring)对不同数据局部性强度的数据集进行访问控制,从而对内存数据库使用的CPU缓存(cache)访问进行优化的方法,属于数据库管理技术领域。
背景技术
内存数据库是一种将全部数据驻留在内存中,而非传统数据库那样存放在外部存储器中的数据库。它的显著特点在于所有的数据访问控制都在内存中进行,因此数据读写速度相对于磁盘数据库要高出几个数量级,从而能够极大地提高数据库应用的性能。与磁盘数据库相比,内存数据库重新设计了体系结构,并且在数据缓存、查询优化、并行操作方面也进行了相应的改进。
另一方面,现有的微处理器(CPU)已经进入多核时代。多核微处理器通常采用共享CPU缓存的体系结构,CPU缓存采用硬件级的类LRU(最近最少访问)替换算法。当查询处理包括一个较小的强局部性(频繁访问)数据集和一个较大的弱局部性(一次性访问或重复访问周期较长)数据集时,弱局部性数据集上的顺序访问将与强局部性数据集产生缓存冲突,导致强局部性数据集被驱逐出CPU缓存,只能在随后的操作中再重新加载到CPU缓存,从而因为缓存颠簸产生大量的缓存丢失(miss)冲突,增加数据访问的延迟。这种现象被称为缓存污染(cachepollution)。在实践中,宏观的缓存污染是指不同的查询处理进程或线程在共享CPU缓存中的缓存访问冲突,例如哈希连接查询处理线程与索引连接查询处理线程在共享CPU缓存上的访问冲突等;微观的缓存污染是指查询处理进程内部不同访问特性数据集之间的缓存访问冲突,例如哈希连接中顺序扫描的外表和哈希表之间的缓存访问冲突等。
页面染色技术(Page-coloring)是内存与CPU缓存之间的高速地址转换技术,即通过物理内存地址的低位映像来控制内存页面调入到CPU缓存中指定的区域中。现有的页面染色技术通过改变具有不同局部性特性的内存页面颜色(page-color)的方式将数据调入到指定的不冲突缓存区域中,从而实现隔离弱局部性数据对强局部性数据的缓存污染。当前比较成熟的缓存访问优化方法是扩展操作系统内核模块,支持以页面颜色队列方式管理内存资源,并为并发的查询处理进程提供按页面颜色分配内存的功能,从而控制不同进程的内存地址空间在CPU缓存中没有交叉,减少具有不同数据访问特性的进程之间的缓存冲突。该类技术路线适用于磁盘数据库的缓冲区管理功能。由于磁盘数据库的数据驻留于磁盘,在查询处理时需要首先加载到内存缓冲区后才能进行处理,而弱局部性数据没有重用性或重用的周期很长,因此可以通过内存缓冲区的内存地址分配技术将数据量大的弱局部性数据集交换到少量内存页面颜色队列对应的缓冲区内存中,从而能够为强局部性数据集分配更多的内存页面颜色队列来保证其充足的可用内存资源。但是,磁盘数据库中的页面颜色优化技术是面向进程粒度的,无法为进程内具有不同数据访问特性的数据集访问进行细粒度的优化。
页面染色技术在内存数据库的应用中面临两个技术挑战:一是内存数据库的数据常驻内存,内存数据库采用直接访问内存的方式而不是象磁盘数据库那样通过缓冲区来间接地访问数据。较大的弱局部性数据集往往占据较大的内存地址空间,而其弱局部性的特点需要将较大的内存地址空间映像到最少的缓存地址空间中,也就是说需要为巨大的内存地址空间分配最少的页面颜色。而每一个页面颜色代表最大1/n(n为页面颜色数量)可用的内存地址空间。内存数据库无法为弱局部性的大数据集分配较少的页面颜色。第二个挑战是如果采用动态页面染色技术,在内存数据访问前通过内存复制的方法改变弱局部性数据页面的页面颜色,虽然可以解决弱局部性数据集无法分配较少页面颜色的问题,但内存复制的延迟严重地影响了数据访问的整体性能。
因此,内存数据库面临的缓存优化技术挑战是内存中没有缓冲区机制来支持通过缓存访问的方式动态改变地址空间大的弱局部性数据集的页面颜色再分配机制。如果按页面颜色为强局部性数据集和弱局部性数据集分配常驻内存地址空间,则内存地址空间的利用率较低。分配较多的页面颜色意味着获得较大的地址空间,而强局部性数据集只需要有较大的页面颜色范围而并不需要实际的大量内存地址空间来存储较小的数据集。同时,弱局部性数据集只需要较小的页面颜色范围但实际需要大量内存地址空间来存储较大的数据集。内存地址空间与页面颜色范围的配额矛盾难以同时满足。
发明内容
本发明所要解决的技术问题在于提供一种基于页面染色技术的内存数据库访问优化方法。该方法基于页面染色技术对不同数据局部性强度的数据集进行访问控制,从而降低不同访问特征的数据集在CPU缓存中的冲突,降低缓存丢失率,提高内存数据库的整体性能。
为解决上述的技术问题,本发明采用下述的技术方案:
一种基于页面染色技术的内存数据库访问优化方法,其特征在于:
在内存数据库的缓存访问过程中,将弱局部性数据集的所有数据页面的访问顺序按页面颜色进行排序,并将所有数据页面按页面颜色进行分组,然后按页面颜色分组的顺序扫描弱局部性数据集的所有数据页面;
或者,预设若干具有相同页面颜色的内存页面作为页面颜色队列,该页面颜色队列用作内存页面被加载入CPU缓存之前的内存缓存;弱局部性数据集的数据页面首先通过异步方式进入页面颜色队列,然后再被加载到CPU缓存中完成数据处理。
其中较优地,所述页面颜色分组的顺序为按页面颜色递增的W-order顺序。
其中较优地,在按W-order顺序的扫描过程中,以缓存大小/组关联数的倍数为单位向操作系统申请物理地址连续的大内存块以存储弱局部性数据集。
其中较优地,当弱局部性数据集所分配的虚拟内存在物理地址上不连续时,首先为虚拟地址空间建立页面颜色索引,将每一个页面的入口地址与页面颜色记录在二元数据结构的索引中,然后将所述索引按页面颜色排序,将相同页面颜色的页面入口地址聚集成组,在按W-order顺序的扫描过程中按所述索引的页面地址顺序扫描。
其中较优地,所述页面颜色队列采用循环队列方式,某个队列页面被访问后即成为交换页面被后续待访问页面覆盖。
其中较优地,所述页面颜色队列中,第i块的缓存加载操作与第i-1块的页面复制流水并行,其中i为自然数。
其中较优地,所述数据页面采用DMA memcpy模式复制到所述页面颜色队列中。
其中较优地,所述页面颜色队列的长度由数据页面加载到CPU缓存的延迟以及DMA memcpy模式的延迟决定。
本发明具有如下的有益效果:
⑴能够解决内存数据库应用中无法依赖页面颜色为进程或线程优化分配缓存地址空间的问题;
⑵有效减少数据局部性强度不同的数据集之间的缓存冲突;
⑶W-order扫描只改变顺序扫描算法,不需要为缓存优化而重新设计查询处理算法,不需要扩展操作系统内核功能。
附图说明
下面结合附图和具体实施方式对本发明做进一步的详细说明。
图1为内存与缓存之间地址分配机制的示意图;
图2为内存和缓存地址组成的地址矩阵示意图;
图3为W-order扫描的工作原理示意图;
图4为物理地址连续内存块中的W-order扫描示意图;
图5为物理不连续的虚拟地址上的W-order扫描示意图;
图6为动态页面颜色队列优化技术的工作原理示意图;
图7为现有技术中索引扫描的示意图;
图8为本发明中索引扫描的缓存优化原理示意图;
图9为多核处理器中并行哈希连接查询处理的工作原理示意图。
具体实施方式
在本发明中,缓存(cache)主要是指处理器硬件级的CPU缓存。它与数据库软件级的缓冲区(buffer)不同,其访问控制是硬件指令决定的,数据库软件无法象对缓冲区一样进行主动管理。缓存访问的最底层目标是优化具有不同访问特征的数据集的访问模式,因此进程级的缓存优化技术仍然有较大的优化空间。为此,本发明提供了一种应用于内存数据库的缓存访问优化方法。该方法以当前多核处理器共享CPU缓存的主流缓存替换算法—多路组关联替换(n-way set associative)算法为背景,根据内存数据的页面颜色来优化数据页面访问顺序,从而减少OLAP查询处理时的缓存访问冲突,提高内存数据库的整体性能。
页面染色技术是现代微处理器所采用的一种高速地址映像技术,用于将内存物理地址映像为CPU缓存地址(进一步可参考Xiao Zhang、Sandhya Dwarkadas和Kai Shen的论文《Towards Practical PageColoring-based Multi-core Cache Management》,发表于EuropeanConference on Computer Systems'09)。微处理器的共享缓存通常采用多路组关联替换算法,以4MB共享缓存上的16路组关联为例,内存与缓存通过统一的地址分配机制,如图1所示,将22位缓存地址(222bit=4MB)的低12位(212bit=4KB)作为页面地址,高6位(26=64)作为页面颜色标志位(页面颜色数量=缓存大小(4MB)/页面大小(4KB)/缓存关联(16)=64),最高4位(24=16)作为组关联号。通过统一的编址方式,内存和缓存地址可以表示为图2所示的地址矩阵。其中,内存中的数据页面在访问时被调入到缓存中具有相同页面颜色的组关联缓存区域中,即内存页面以页面颜色为依据将数据页面调入到缓存中具有相同页面颜色的缓存区域中,然后由通过类LRU(最近最少访问)替换算法将数据调入该缓存区域中的某一页面。
在通常情况下,对数据的顺序扫描按页面地址的自然增序进行。例如从页面颜色的角度来看,依次扫描页面颜色为0的页面,扫描页面颜色为1的页面,直到页面颜色为63的页面,然后继续扫描页面颜色为0的页面…,在页面颜色地址矩阵上看呈现Z-order顺序的特征。这种Z-order顺序并不利于实现数据级的缓存优化技术。
为此,本发明人提出了一种被称为W-order顺序的页面扫描方式。W-order顺序是指对数据的扫描按页面颜色顺序进行。当索引扫描的选择率较高时,在索引访问记录地址中抽取出页面颜色标志位,对索引范围中的记录按页面颜色顺序进行多趟访问。即首先扫描全部页面颜色为i(i为自然数)的页面,然后再扫描所有页面颜色为i+1的页面,直到扫描完最后一个页面颜色对应的全部页面(即页面颜色记录组),在内存地址扫描顺序上呈现W形状,我们称这种按页面颜色顺序的扫描为W-order扫描(进一步可参考张延松等人的论文《W-Order scan:minimizingcache pollution by application software level cache management forMMDB》,发表于WAIM'11Proceedings of the12th internationalconference on Web-age information management)。图3为W-order扫描的示意图。W-order扫描是按页面颜色的顺序扫描页面,首先扫描内存数据集中所有页面颜色号为0的页面,然后扫描下一组所有页面颜色号为1的页面,直到最后一组。W-order扫描操作支持乱序访问,尤其适用于关系数据库中基于集合的数据组织和访问结构。
在上述技术手段的基础上,本发明所提供的缓存访问优化方法主要包括两个方面的技术内容:(1)静态页面访问顺序优化;(2)动态页面颜色队列优化。静态页面访问顺序优化是指在数据页面访问时不改变页面的物理地址,只优化对页面的访问顺序。动态页面访问颜色队列优化是指通过预设一个页面颜色缓冲区,页面访问时先进入页面颜色缓冲区来改页面颜色,从而减少页面被加载到cache时的地址冲突。静态页面优化适合于数据访问顺序无关的弱局部性数据集扫描操作,需要预知数据访问特征;而动态页面队列适合于通用的数据访问优化,不需要预先了解数据访问特征。下面对此展开详细具体的说明。
所谓静态页面访问顺序优化是指对顺序访问的弱局部性数据集的数据页面访问顺序按页面颜色顺序进行优化,即将访问频率很低的弱局部性数据集的所有数据页面的访问顺序按页面颜色进行排序,并将所有数据页面按页面颜色进行分组,然后按页面颜色分组的顺序扫描弱局部性数据集的所有数据页面。这样,弱局部性数据集页面上的访问顺序不再按内存地址自然递增的Z-order顺序,而是按页面颜色递增的W-order顺序。
为了满足静态页面访问顺序优化的要求,本发明中首先采用了连续物理内存空间分配技术。具体而言,首先采用例如kmalloc()之类的函数向操作系统申请一块较大的物理地址连续的存储空间存储弱局部性数据集。物理地址连续的存储空间申请遵循4KB×页面颜色数量的整数倍(如64个页面颜色的系统分配4KB×64=256KB整数倍的内存块,例如1MB)。在物理地址连续的数据块内,可以根据偏移地址计算访问指定页面颜色的页面,从而支持在物理地址连续的数据块内按页面颜色的顺序实现多趟扫描。
另一方面,本发明也采用了Linux操作系统默认的虚拟内存空间分配技术。具体而言,当采用malloc()函数分配内存块时,虚拟地址分配的内存块在物理地址上可能并不连续,无法按虚拟地址计算出页面的页面颜色。在这种情况下,为虚拟地址空间建立页面颜色索引,将每一个页面的入口地址与页面颜色记录在一个二元数据结构的索引中,然后将索引按页面颜色排序,将相同页面颜色的页面入口地址聚集成组,表扫描时按页面颜色索引的页面地址顺序扫描。
在本发明所提供的内存数据库缓存访问优化方法中,将查询处理中的顺序(即Z-order顺序)表扫描操作替换为W-order顺序扫描操作,从而将哈希连接中事实表与哈希表的缓存冲突在每组按页面颜色扫描的过程中限制在一个页面颜色的缓存地址空间内,降低整体的缓存冲突。
图4显示了在基于kmalloc()函数的物理地址连续的内存块中,W-order扫描的实现步骤。在W-order扫描过程中,以缓存大小/组关联数(如4MB/16路组关联)的倍数为单位向操作系统申请物理地址连续的大内存块以存储弱局部性数据集。对于图4所示的内存块内按页面颜色组织的页面矩阵,可以通过动态的地址计算方式得到指定页面颜色队列的入口地址,从而实现按页面颜色顺序的W-order扫描。
图5显示了物理地址不连续的虚拟内存地址上,W-order扫描的实现步骤。当数据集所分配的虚拟内存在物理地址上不连续时,首先建立一个页面颜色索引存储每一个内存页面的入口地址(pg)和页面颜色(pc)号,然后将索引按页面颜色号排序,页面颜色索引中按页面颜色号自然分组。当执行扫描操作时,按页面颜色索引中的页面入口地址顺序访问数据集页面,实现在物理地址不连续的虚拟内存地址上的W-order扫描。在这个过程中,页面颜色索引为每一个页面存储一个数据对,存储空间的开销很小。
对于哈希连接类算法而言,采用基于页面颜色的数据页面访问顺序(即W-order顺序)优化可以降低一次性访问数据对频繁访问数据集的缓存驱逐效应,减少缓存的丢失。
接下来对本发明中的动态页面颜色队列优化技术进行说明。所谓动态页面颜色队列优化技术是指预设若干具有相同页面颜色的内存页面作为页面颜色队列,弱局部性数据集的数据页面首先通过异步方式进入页面颜色队列,然后再被加载到CPU缓存中完成数据处理。该技术可以将弱局部性(一次性访问或重复访问周期较长)数据缓存于页面颜色队列后再进行访问,从而进一步降低缓存之间的冲突。
动态页面颜色队列优化技术的具体实施步骤如下:首先在内存数据库的内存中申请n(n为自然数)个页面颜色相同的页面作为页面颜色队列,该页面颜色队列用作内存页面被加载入CPU缓存之前的内存缓存。页面颜色队列采用循环队列方式,即在页面颜色队列中,当第i个队列页面被访问后即可成为交换页面被后续待访问页面覆盖。数据页面在访问时依次被复制到页面颜色队列中,然后再调入CPU缓存,即页面颜色队列作为弱局部性数据集的内存缓存。数据页面复制到页面颜色队列采用DMA memcpy模式。DMA memcpy模式在进行内存块复制时通过DMA通道而不经过CPU处理,因此不产生额外的缓存污染。页面颜色队列的长度由数据页面加载到CPU缓存的延迟以及DMA memcpy模式本身的延迟决定。若加载到CPU缓存的延迟较小,则增加页面颜色队列长度以提高缓存效率。
页面颜色队列采用流水更新模式,即页面颜色队列中第i(i为自然数)块的缓存加载操作与第i-1块的页面复制流水并行,例如当B1块加载到缓存后依次加载页面颜色队列中的B2块,此时n+1块可以复制到B1块中。此时,数据访问指针为i mod n,数据更新指针为(i-1)modn(n代表页面颜色队列中的页面数)。
图6显示了动态页面颜色队列优化技术的执行原理。其中,B1~B4为页面颜色队列,P1、P2、……为数据集页面。页面颜色队列为循环队列,第i个页面为访问指针,第i-1个页面为更新指针,第i个页面的访问与第i-1个页面的更新同步执行。数据页面向页面颜色队列的复制操作采用DMA通道支持的memcpy模式,直接在内存页面之间进行复制,不经过CPU以便降低CPU开销和所造成的额外缓存污染。
图7为现有技术中索引扫描的示意图。索引扫描按键值顺序扫描,在内存地址上体现为随机访问,无法预先优化访问顺序,不能直接使用静态页面W-order扫描技术。索引扫描时首先访问索引中的指定值的索引项,当索引字段存在重复值时,索引扫描首先转换为对索引中指定范围索引数据项的扫描,在扫描过程根据索引项的地址信息实现对物理记录的实际访问。由于索引中的物理地址以记录为单位,采用动态页面颜色队列优化技术优化的是整个页面的访问顺序,因此代价较高而效率较低。
图8显示了应用于索引扫描中的缓存优化实现原理。在图8中,用oid表示记录物理地址,contract表示索引键值列,PC表示页面颜色号。在索引中通过动态地址翻译函数在记录地址中抽取出页面颜色号,或者在生成索引时产生记录地址页面颜色的辅助数据结构(即在索引中增加一个页面颜色数据项来记录当前记录所在的页面颜色号)。当执行索引扫描时,如果选择率较低,则直接执行随机访问,不进行缓存优化;如果索引扫描的选择率高于某个阈值时,则执行多趟页面颜色扫描。
例如我们通过物理页面起始地址“10FFEF”,根据页面颜色位解析出其对应的页面颜色号为62。在记录地址中抽取出页面颜色号。当执行索引扫描时,如果选择率较低,则直接执行随机访问,不进行缓存优化。在实践中,通常根据索引字段的统计信息,如对“产品型号”字段进行索引时,统计出各个不同产品型号的不同值的个数,在进行索引扫描时,根据查询条件,如“产品型号=’平板电脑’”来估计可能满足条件的记录数量,进而判断选择率的高低。如果索引扫描的选择率高于某个阈值时,则执行多趟页面颜色扫描。该阈值需要根据实验测试结果和经验值来确定,如通过实验测度得到选择率高于30%时,执行多趟页面颜色扫描会优化整体性能等。具体实现步骤包括图8下半部分的两个虚线框中所示的处理流程。
左侧的虚线框表示对索引中特定范围记录的扫描采用多趟扫描的方法,每趟扫描时只访问指定页面颜色对应的记录,即第一次访问页面颜色为0的记录,以此类推。为减少多趟扫描中对无效记录的访问,我们在执行多趟扫描时通过一个页面颜色矢量位图来记录已访问的记录位置,随着多趟记录访问的进行,页面颜色矢量位图中1(页面颜色矢量位图记录已扫描的页面颜色号,如扫描完页面颜色为0的所有页面后,位图的第1位更改为1,扫描完颜色号为1的所有页面的,位图的第2位置1,以此类推)的位置越来越多,后续扫描时可跳过扫描的记录比例越大,随机访问效率越高。在多趟扫描时采用W-order扫描顺序,即先从上至下扫描页面颜色为i的记录,然后至下而上扫描页面颜色为i+1的记录,以此类推。多趟W-order扫描使序列首尾的数据重用路径变短,可以提高缓存中已缓存数据的利用率。右侧的虚线框表示采用对索引中指定范围的记录按页面颜色排序后再访问。当索引查找的范围较大、记录较多时,排序代价较高,会影响缓存优化带来的性能收益。
上述W-order扫描优化技术以数据集为粒度实现了对不同访问局部性数据集的优化访问,在一个数据库查询处理线程内部达到了最小缓存访问冲突。但对于多核处理器而言,通常采用共享CPU缓存的硬件结构,因此还需要进一步考虑在一个共享CPU缓存中的多个并行处理线程之间的数据访问优化问题,减少并发处理线程对共享CPU缓存的访问冲突。
图9显示了利用本缓存访问优化方法在多核处理器中实现并行哈希连接查询处理的工作原理。对于多核处理器中的并行哈希连接,每个哈希连接处理线程独立执行基于W-order扫描的哈希连接算法。图9中左半部分表示两个处理线程共享CPU缓存和内存地址空间,右半部分表示通过缓存分区技术将CPU缓存划分为两个分区以服务于不同的处理线程。图9中浅色块表示顺序访问数据集,深色块表示哈希表。从图9中可以看出,当两个独立的哈希连接处理都采用W-order扫描的处理技术时,在每个页面颜色地址区域内顺序访问数据集与哈希表冲突的页面数量相当,冲突概率相同。即在多核处理器中并行哈希连接查询处理时,每个查询可以使用同构的W-order扫描优化技术。
以上对本发明所提供的基于页面染色技术的内存数据库访问优化方法进行了详细的说明。该方法主要应用于内存数据库中数据预先驻留内存的应用场景,尤其适用于大数据集的内存OLAP查询处理优化。该方法不仅可以应用于现有内存数据库的哈希连接算法,还可以应用于能够明确划分出弱局部性数据集和强局部性数据集的数据处理技术。
以上对本发明所提供的基于页面染色技术的内存数据库访问优化方法进行了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (5)
1.一种基于页面染色技术的内存数据库访问优化方法,按照页面颜色递增的W-order顺序进行扫描,其特征在于:
在内存数据库的内存中申请若干具有相同页面颜色的内存页面作为页面颜色队列,该页面颜色队列用作内存页面被加载入CPU缓存之前的内存缓存;
所述页面颜色队列采用循环队列方式,某个队列页面被访问后即成为交换页面被后续待访问页面覆盖;
数据页面在访问时依次通过异步方式进入页面颜色队列,然后再被加载到CPU缓存中完成数据处理。
2.如权利要求1所述的基于页面染色技术的内存数据库访问优化方法,其特征在于:
所述数据页面采用DMA memcpy模式复制到所述页面颜色队列中。
3.如权利要求2所述的基于页面染色技术的内存数据库访问优化方法,其特征在于:
所述页面颜色队列采用流水更新模式,即第i块的缓存加载操作与第i-1块的页面复制流水并行,其中i为自然数。
4.如权利要求1~3中任意一项所述的基于页面染色技术的内存数据库访问优化方法,其特征在于:
所述页面颜色队列的长度由数据页面加载到CPU缓存的延迟以及DMA memcpy模式的延迟决定。
5.如权利要求1~3中任意一项所述的基于页面染色技术的内存数据库访问优化方法,其特征在于:
所述数据页面为弱局部性数据集的数据页面。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210113917.3A CN102663115B (zh) | 2012-04-16 | 2012-04-16 | 基于页面染色技术的内存数据库访问优化方法 |
PCT/CN2012/075619 WO2013155750A1 (zh) | 2012-04-16 | 2012-05-16 | 基于页面染色技术的内存数据库访问优化方法 |
US13/514,291 US8966171B2 (en) | 2012-04-16 | 2012-05-16 | Access optimization method for main memory database based on page-coloring |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210113917.3A CN102663115B (zh) | 2012-04-16 | 2012-04-16 | 基于页面染色技术的内存数据库访问优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102663115A CN102663115A (zh) | 2012-09-12 |
CN102663115B true CN102663115B (zh) | 2015-01-14 |
Family
ID=46772606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210113917.3A Active CN102663115B (zh) | 2012-04-16 | 2012-04-16 | 基于页面染色技术的内存数据库访问优化方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102663115B (zh) |
WO (1) | WO2013155750A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678155B (zh) * | 2012-09-19 | 2016-12-21 | 华为技术有限公司 | 内存地址映射处理方法及多核处理器 |
CN103365797B (zh) * | 2013-07-05 | 2017-05-31 | 华为技术有限公司 | 物理内存页分配方法和计算机系统 |
CN104572493A (zh) | 2013-10-23 | 2015-04-29 | 华为技术有限公司 | 一种存储器资源优化方法和装置 |
CN103970679B (zh) * | 2014-04-24 | 2017-02-01 | 华中科技大学 | 一种动态缓存污染防治系统及方法 |
CN104077380B (zh) * | 2014-06-26 | 2017-07-18 | 深圳信息职业技术学院 | 一种重复数据删除方法、装置及系统 |
CN104331377B (zh) * | 2014-11-12 | 2018-06-26 | 浪潮(北京)电子信息产业有限公司 | 一种多核处理器系统的目录缓存管理方法 |
CN104850508B (zh) * | 2015-04-09 | 2018-02-09 | 深圳大学 | 基于数据局部性的访存方法 |
CN108259208B (zh) * | 2016-12-29 | 2021-03-30 | 华为技术有限公司 | 一种检测报文染色位冲突的方法和设备 |
CN107291635B (zh) * | 2017-06-16 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种缓存替换方法和装置 |
CN108241472B (zh) * | 2017-12-01 | 2021-03-12 | 北京大学 | 一种支持局部性表达函数的大数据处理方法和系统 |
CN108763421B (zh) * | 2018-05-24 | 2021-11-12 | 湖南国科微电子股份有限公司 | 一种基于逻辑电路的数据搜索方法及系统 |
CN114546944B (zh) * | 2022-02-21 | 2024-05-28 | 重庆科创职业学院 | 多进程负载均衡的数据库文件排序优化方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654859B2 (en) * | 2001-07-26 | 2003-11-25 | International Business Machines Corporation | NUMA page selection using coloring |
CN101351774A (zh) * | 2005-12-30 | 2009-01-21 | 英特尔公司 | 将存储页面与程序相关联的页面着色 |
CN101510176A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 通用操作系统对cpu二级缓存访问的控制方法 |
CN101719105A (zh) * | 2009-12-31 | 2010-06-02 | 中国科学院计算技术研究所 | 一种多核系统中对内存访问的优化方法和系统 |
US7747820B2 (en) * | 2007-06-15 | 2010-06-29 | Microsoft Corporation | Managing working set use of a cache via page coloring |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075214A (zh) * | 2007-06-28 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种内存管理方法和内存管理系统 |
CN101593202B (zh) * | 2009-01-14 | 2013-05-01 | 中国人民解放军国防科学技术大学 | 基于共享Cache多核处理器的数据库哈希连接方法 |
-
2012
- 2012-04-16 CN CN201210113917.3A patent/CN102663115B/zh active Active
- 2012-05-16 WO PCT/CN2012/075619 patent/WO2013155750A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654859B2 (en) * | 2001-07-26 | 2003-11-25 | International Business Machines Corporation | NUMA page selection using coloring |
CN101351774A (zh) * | 2005-12-30 | 2009-01-21 | 英特尔公司 | 将存储页面与程序相关联的页面着色 |
US7747820B2 (en) * | 2007-06-15 | 2010-06-29 | Microsoft Corporation | Managing working set use of a cache via page coloring |
CN101510176A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 通用操作系统对cpu二级缓存访问的控制方法 |
CN101719105A (zh) * | 2009-12-31 | 2010-06-02 | 中国科学院计算技术研究所 | 一种多核系统中对内存访问的优化方法和系统 |
Non-Patent Citations (1)
Title |
---|
提高堆数据局部性的动态池分配技术;王振江等;《计算机学报》;20110430;第34卷(第4期);665-675页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2013155750A1 (zh) | 2013-10-24 |
CN102663115A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102663115B (zh) | 基于页面染色技术的内存数据库访问优化方法 | |
US8966171B2 (en) | Access optimization method for main memory database based on page-coloring | |
CN103246613B (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
CN106843756A (zh) | 基于页面分类的内存页面回收方法及系统 | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
CN105938458B (zh) | 软件定义的异构混合内存管理方法 | |
CN103577158B (zh) | 数据处理方法与装置 | |
CN103885728A (zh) | 一种基于固态盘的磁盘缓存系统 | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
CN110515859A (zh) | 一种固态硬盘读写请求并行处理方法 | |
US11526960B2 (en) | GPU-based data join | |
CN109783398A (zh) | 一种基于相关感知页面级ftl固态硬盘性能优化方法 | |
Yadgar et al. | Management of multilevel, multiclient cache hierarchies with application hints | |
CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN1896972A (zh) | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 | |
CN116501249A (zh) | 一种减少gpu内存重复数据读写的方法及相关设备 | |
CN110795363A (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN110096350A (zh) | 基于集群节点负载状态预测的冷热区域划分节能存储方法 | |
CN109983538A (zh) | 存储地址转换 | |
CN111078143A (zh) | 基于段映射进行数据布局和调度的混合存储方法及系统 | |
CN103020077A (zh) | 一种电力系统实时数据库内存管理方法 | |
CN1818887A (zh) | 基于sram的嵌入式文件系统的实现方法 | |
Wang et al. | Hotkey-lsm: A hotness-aware lsm-tree for big data storage | |
US20050091466A1 (en) | Method and program product for avoiding cache congestion by offsetting addresses while allocating memory |
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 |