CN102521150B - 一种应用程序cache分配方法及装置 - Google Patents
一种应用程序cache分配方法及装置 Download PDFInfo
- Publication number
- CN102521150B CN102521150B CN201110384780.0A CN201110384780A CN102521150B CN 102521150 B CN102521150 B CN 102521150B CN 201110384780 A CN201110384780 A CN 201110384780A CN 102521150 B CN102521150 B CN 102521150B
- Authority
- CN
- China
- Prior art keywords
- cache
- application program
- physical page
- area
- numerical value
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种应用程序高速缓存的分配方法,包括:采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的cache空间大小数值;当有应用程序需要被执行时,获取所述应用程序的标识;根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;为所述应用程序对应的进程分配与所述大小数值相等大小的cache。本发明能够有效地降低cache失效率,提高系统的性能。
Description
技术领域
本发明涉及高速缓存领域,特别是涉及一种应用程序高速缓存的分配方法及装置。
背景技术
高速缓冲存储器(cache)是存在于中央处理器与内存之间的存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比内存高得多,接近于中央处理器的速度。
在应用程序运行的过程中,中央处理器和内存都需要频繁地与cache交换数据,因而,cache的访问速度极大地影响到系统的性能。
但是,在现今多处理器的环境下,多个处理器同时运行处理多个应用程序,使得数据处理更为频繁了,海量的数据调用将会导致cache失效率(cache miss ratio)的提高,降低cache访问速度。其中,cache失效(cache miss)的主要原因有:
冲突失效(conflict miss):在组相联或直接映象cache中,若太多的块映射到同一组(块)中,则会出现该组中某个块被别的块替换,即使别的组或块有空闲位置,然后又被重新访问的情况。
容量失效(capacity miss):如果程序执行时所需的块不能全部调入cache中,则当某些块被替换后,若又重新被访问,就会发生失效。
强制性失效(Compulsory miss):当第一次访问一个块时,该块不在cache中,需从内存中调入cache。
对于单个应用程序来说,给该应用程序分配的cache越大,cache失效率越低,但是,每个应用程序所占的cache都是有限的,给某个应用程序分配的cache大了,则可给其它的应用程序分配的cache小了,甚至导致容量失效。
发明内容
本发明主要解决的技术问题是提供一种应用程序高速缓存的分配方法,能够实现给应用程序分配合适的cache的大小。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种应用程序高速缓存的分配方法,包括:采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的cache空间大小数值;当有应用程序需要被执行时,获取所述应用程序的标识;根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;为所述应用程序对应的进程分配与所述大小数值相等大小的cache。
其中,所述采集应用程序在单位大小不同高速缓存cache情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值步骤包括:将所述应用程序的数据从磁盘映射到内存中;为所述进程多次分配不同大小的cache;每一次分配cache后,将所述应用程序的数据从内存映射到所分配的cache中;在单位指令中,采集应用程序在cache大小不同的情况下的cache失效率;根据所述cache失效率计算出所述应用程序的cache空间大小数值;将所述cache空间大小数值存入所述高速缓存分配库中。
其中,所述将应用程序的数据从磁盘映射到内存中步骤之前还包括如下步骤:在内存中为第一区域分配指定数量的物理页;在所述第一区域中为第二区域分配指定数量的物理页;在所述第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中,第三区域为所述应用程序对应的进程的内存区域。
其中,所述在内存中为第一区域分配指定数量的物理页步骤包括如下步骤:获取拟分配给所述第一区域的物理页数量及第一区域标识集,所述第一区域标识集包括多个标识;为所述第一区域分配多个连续的物理页,并且每个物理页均与第一域标识集中的标识一一对应;判断已分配的物理页数量是否大于或等于拟分配的物理页数量,如果否,继续执行为所述第一区域分配多个连续的物理页的步骤,直至已分配的物理页数量大于或等于拟分配的物理页数量。
其中,所述在第一区域中为第二区域分配指定数量的物理页步骤包括如下步骤:获取拟分配给所述第二区域的物理页数量及第二区域标识集,所述第二区域标识集为第一区域标识集的子集;判断已分配给所述第二区域的物理页数量是否大于或等于拟分配给第二区域的物理页数量;如果否,从所述第一区域中查找到具有第二区域标识集中标识的未分配的物理页分配给所述第二区域,并继续执行判断已分配给所述第二区域的物理页数量是否大于或等于拟分配给第二区域的物理页数量步骤,直至已分配的物理页数量大于或等于拟分配的物理页数量。
其中,所述在第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中步骤之前还包括如下步骤:建立一个链表,并将所述第二区域中未分配的物理页地址对应到所述链表;通过查找所述链表找到未分配的物理页;将查找到的物理页动态分配给所述第三区域。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种应用程序高速缓存的分配装置,所述应用程序高速缓存的分配装置包括:计算模块,用于采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;建库模块,用于在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的cache空间大小数值;获取模块,用于获取所述应用程序的标识,及根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;分配模块,用于为所述应用程序对应的进程分配与所述大小数值相等大小的cache。
其中,所述应用程序高速缓存的分配装置还包括映射模块,用于将所述应用程序的数据从磁盘映射到内存中;其中,所述分配模块还用于为所述进程多次分配不同大小的cache;所述映射模块还用于将所述应用程序的数据从所述内存映射到所分配的cache中;所述应用程序高速缓存的分配装置还包括采集模块,用于在单位指令中,采集所述应用程序在cache大小不同的情况下的cache失效率;其中,所述计算模块还用于根据所述cache失效率计算出所述应用程序的cache空间大小数值;所述应用程序高速缓存的分配装置还包括存储模块,用于将所述cache空间大小数值存入所述高速缓存分配库中。
其中,所述分配模块还用于在内存中为第一区域分配指定数量的物理页;所述分配模块还用于在所述第一区域中为第二区域分配指定数量的物理页;所述分配模块还用于在所述第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中,第三区域为所述应用程序对应的进程的内存区域。
其中,所述获取模块还用于获取拟分配给所述第一区域的物理页数量及第一区域标识集,所述第一区域标识集包括多个标识;所述分配模块还用于为所述第一区域分配多个连续的物理页,并且每个物理页均与第一域标识集中的标识一一对应;所述应用程序高速缓存的分配装置还包括判断模块,用于判断已分配的物理页数量是否大于或等于拟分配的物理页数量。
其中,所述获取模块还用于获取拟分配给所述第二区域的物理页数量及第二区域标识集,所述第二区域标识集为第一区域标识集的子集;
所述判断模块还用于判断已分配给所述第二区域的物理页数量是否等于拟分配给第二区域的物理页数量;所述分配模块还用于从第一区域中查找到具有第二区域标识集中标识的未分配的物理页分配给所述第二区域。
其中,所述应用程序高速缓存的分配装置还包括:建表模块,用于建立一个链表,并将所述第二区域中未分配的物理页地址对应到所述链表;查找模块,用于通过查找所述链表找到一个未分配物理页;其中,所述分配模块还用于将查找到的物理页分配给所述第三区域。
本发明的有益效果是:区别于现有技术的情况,本发明提供的应用程序高速缓存的分配方法在本地建立高速缓存分配库,并在高速缓存分配库中建立了不同应用程序与cache空间大小数值的一一对应关系,在应用程序启动时,系统通过查找高速缓存分配库,快速地获得该应用程序的cache空间大小数值,进而为该应用程序的进程分配最适合大小的cache,能有效地降低cache失效率,提高系统的性能。
附图说明
图1是本发明应用程序高速缓存的分配方法第一实施例的数据流程图;
图2是本发明应用程序高速缓存的分配方法第二实施例的数据流程图;
图3是本发明为进程预留内存区域的示意图;
图4是本发明应用程序高速缓存的分配装置第三实施例的逻辑结构示意图;
图5是本发明应用实施例中的第一区域分配示意图;
图6是本发明应用实施例中的第二区域分配示意图;
图7是本发明应用实施例中的cache失效率特性曲线及其一阶导数、二阶导数曲线示意图;
图8是本发明应用实施例中的cache的八路组相联映象示意图;
图9是本发明应用实施例中的在组相联映射方式下处理器通过查找物理地址实现cache映射的示意图;
图10是本发明应用实施例中的cache的一个组通过颜色标识映射的示意图。
具体实施方式
下面结合附图和实施例对本发明进行详细说明。
请参阅图1,本发明应用程序高速缓存的分配方法第一实施例,包括:
S110、计算为每个应用程序分配的cache空间大小。
运行应用程序,并给应用程序的进程分配不同大小的cache。系统采集应用程序在cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值。
S120、在本地建立高速缓存分配库。
系统在本地预先建立高速缓存分配库,高速缓存分配库中设有多个行/列,每行/列将应用程序的标识与分配给该应用程序的cache空间大小数值一一对应。
S130、获取应用程序的标识。
应用程序被执行时,系统获取应用程序的标识。标识可以是应用程序的名称或者应用程序的其它标记。
S140、获取cache空间大小数值。
系统根据应用程序的标识查找到该应用程序在高速缓存分配库中的行/列,再根据行/列获取与标识对应的cache空间大小数值。
S150、为进程分配cache。
系统分配cache供应用程序对应的进程使用。
本实施例提供的应用程序高速缓存的分配方法在本地建立高速缓存分配库,并在高速缓存分配库中建立了不同应用程序与cache空间大小数值的一一对应关系,在应用程序启动时,系统通过查找高速缓存分配库,快速地获得该应用程序的cache空间大小数值,进而为该应用程序的进程分配最适合大小的cache,能有效地降低cache失效率,提高系统的性能。
下面结合图2阐述本发明应用程序高速缓存的分配方法更为详尽的第二实施例,包括:
S210、将应用程序的数据从磁盘映射到内存。
一并参阅图3,系统在内存10中为第一区域110分配指定数量的物理页,在第一区域110中为第二区域120分配指定数量的物理页,在第二区域120中为第三区域130动态分配物理页。物理页的大小可为1KB、2KB、4KB,是系统进行读取、存储操作的基本单位。
人工输入或系统自动分配拟分配给第一区域110的物理页数量及第一区域标识集。第一区域标识集包含多个标识。系统每次调用函数将为第一区域110分配与第一区域标识集内的标识一一对应的多个连续的物理页,重复调用函数直到已分配的物理页数量大于或等于拟分配的物理页数量。
人工输入或系统自动分配拟分配给第二区域120的物理页数量及第二区域标识集。第二区域标识集同样包含多个标识,且第二区域标识集是第一区域标识集的子集。系统判断已分配给第二区域120的物理页数量是否等于拟分配给第二区域120的物理页数量。如果否,从第一区域110中查找到具有第二区域标识集中标识的未分配的物理页分配给第二区域,并继续执行判断已分配给第二区域的物理页数量是否大于或等于拟分配给第二区域的物理页数量步骤,直至已分配的物理页数量大于或等于拟分配的物理页数量。分配完毕后,建立一个链表,并将第二区域120中未分配的物理页地址对应到链表中。
应用程序运行时,需要给进程动态分配内存,即第三区域130。重新设置动态分配相关函数malloc、calloc、realloc及free及环境变量LP_PRELOAD,使第三区域130仅限于第二区域120内。查找链表,将链表中的未分配的物理页动态分配给第三区域130。在系统的控制下,应用程序的数据从磁盘映射到第三区域130。应用程序的数据包括应用程序的可执行代码及应用程序运行时所产生的中间数据。
S220、预分配cache。
系统调用cache分区软件为应用程序的进程分配一个定值大小的cache,用于测试应用程序在该定值大小下的cache失效率,以确定最终分配给应用程序的最适合的cache大小。
S230、将应用程序的数据从内存映射到cache。
本实施例中,应用程序的数据从内存映射到cache时遵循组相联映象规则。同一组的cache通过设置多个标识被划分成多个不同的块。映射时,系统获取内存中物理页所属的组及标识,通过组相联映象规则访问cache中的组,然后访问组中的块,最后将数据从内存映射到与物理页具有相同标识的块中。
S240、采集cache失效率。
当系统为linux系统时,系统通过调优工具perf,以shell的方式调用PIN采集处理器10000次从cache读取数据时的cache失效率。
S250、判断预分配的次数是否小于预定次数。
判断预分配的次数是否小于预定次数,如果是,返回步骤S220,直到已分配的次数等于预定次数,如果否,则执行步骤S260。
S260、计算cache空间大小数值并存入高速缓存分配库。
获取应用程序的标识,标识可以是应用程序的名称或者应用程序的其它标记。在高速缓存分配库中查找到空白的行/列,将应用程序的标识与分配给应用程序的cache空间大小数值存入空白的行/列中,使应用程序的标识与分配给应用程序的cache空间大小数值一一对应。
S270、为应用程序分配相应大小的cache。
应用程序被执行时,系统再次获取应用程序的标识。系统根据应用程序的标识查找到该应用程序在高速缓存分配库中的行/列,再根据行/列获取与标识对应的最优cache大小数值。系统分配最适合的cache供应用程序对应的进程使用。
本实施例通过系统在本地建立高速缓存分配库,并在高速缓存分配库中建立了不同应用程序与cache空间大小数值的一一对应关系,在应用程序启动时,系统通过查找高速缓存分配库,快速地获得该应用程序的cache空间大小数值,进而为该应用程序的进程分配最适合大小的cache,能有效地降低cache失效率,提高系统的性能。
进一步地,本实施例通过给内存及cache设置了标识,使得数据从内存映射到cache时,将内存中的物理页的内容映射到具有相同标识的cache的块中,进一步地降低cache失效率,提高系统的性能。
请参阅图4,本发明应用程序高速缓存的分配装置第三实施例,包括:
计算模块210采集应用程序在cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值。
建库模块220在本地预先建立高速缓存分配库,高速缓存分配库中设有多个行/列,每行/列将应用程序的标识与分配给该应用程序的cache空间大小数值一一对应。
获取模块230在应用程序被执行时,获取应用程序的标识。标识可以是应用程序的名称或者应用程序的其它标记。此外,获取模块230还用于根据应用程序的标识查找到该应用程序在高速缓存分配库中的行/列,再根据行/列获取与标识对应的cache空间大小数值。
分配模块240分配cache供应用程序对应的进程使用。
本实施例提供的应用程序高速缓存的分配方法在本地建立高速缓存分配库,并在高速缓存分配库中建立了不同应用程序与cache空间大小数值的一一对应关系,在应用程序启动时,系统通过查找高速缓存分配库,快速地获得该应用程序的cache空间大小数值,进而为该应用程序的进程分配最适合大小的cache,能有效地降低cache失效率,提高系统的性能。
本发明应用程序高速缓存的分配装置第四实施例如下:
应用程序的数据从磁盘映射到内存前,需预先在内存中预留一定的区域。
分配模块在内存中为第一区域分配指定数量的物理页。具体的做法是,获取模块获取拟分配给第一区域的物理页数量及第一区域标识集,第一区域标识集包括多个标识。分配模块为第一区域分配多个连续的物理页,并且每个物理页均与第一域标识集中的标识一一对应。判断模块判断已分配的物理页数量是否大于或等于拟分配的物理页数量。如果否,系统调用分配模块为第一区域分配多个连续的物理页,并且使得每个物理页均与第一域标识集中的标识一一对应。物理页的大小可为1KB、2KB、4KB,是系统进行读取、存储操作的基本单位。
分配模块在第一区域中为第二区域分配指定数量的物理页,具体做法是,获取模块获取拟分配给第二区域的物理页数量及第二区域标识集,第二区域标识集为第一区域标识集的子集。判断模块判断已分配给所述第二区域的物理页数量是否等于拟分配给第二区域的物理页数量。如果否,系统调用分配模块从第一区域中查找到具有第二区域标识集中标识的未分配的物理页分配给所述第二区域,直到已分配给第二区域的物理页数量等于拟分配给第二区域的物理页数量。分配完毕后,建表模块建立一个链表,并将第二区域中未分配的物理页地址对应到链表中。
分配模块在第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中。具体的做法是,需要为进程动态分配内存时,系统通过调用查找模块查找链表,并在链表中查找到一个未分配物理页。分配模块将查找到的物理页分配给第三区域,第三区域即为应用程序对应的进程的内存区域。
为进程预留第三区域后,系统调用建库模块在本地建立高速缓存分配库,具体做法是,映射模块将应用程序的数据从磁盘映射到第三区域中。分配模块,为进程多次分配不同单位大小的cache。每一次分配cache后,映射模块将应用程序的数据从内存映射到所分配的cache中。处理器多次访问所分配的cache,采集模块同时采集应用程序在单位指令中的cache失效率。计算模块根据应用程序在多次分配cache的cache失效率计算出应用程序的cache空间大小数值。存储模块将cache空间大小数值存入所述高速缓存分配库中。
当有应用程序需要被执行时,获取模块获取应用程序的标识并根据应用程序的标识从高速缓存分配库中获取与标识对应的cache空间大小数值。分配模块为应用程序对应的进程分配cache。
本实施例通过系统在本地建立高速缓存分配库,并在高速缓存分配库中建立了不同应用程序与cache空间大小数值的一一对应关系,在应用程序启动时,系统通过查找高速缓存分配库,快速地获得该应用程序的cache空间大小数值,进而为该应用程序的进程分配最适合大小的cache,能有效地降低cache失效率,提高系统的性能。
进一步地,本实施例通过给内存及cache设置了标识,使得数据从内存映射到cache时,将内存中的物理页的内容映射到具有相同标识的cache的块中,进一步地降低cache失效率,提高系统的性能。
下面以一个应用例对本发明的方案进行详细说明。
本发明的应用程序高速缓存的分配方法可同时应用在单处理器系统或多处理器系统中,但目前的多处理器系统以其高速、强大的运算能力成为当前发展的主流技术,于是,下面的实施例中将采用多处理器系统,特别是多处理器加单cache结构的系统。优选地,在多处理器环境下,单个应用程序的所有进程都被分配到同一个处理器执行,不同的应用程序被分配到不同的处理器中。但对于一些大型的多媒体应用程序,也可以将该应用程序的不同进程或线程分配给不同的处理器执行,本发明不作限定。
应用程序的数据从磁盘映射到内存前,需在内存中为该应用程序的进程动态分配物理页。应用程序的数据包括应用程序的可执行代码及应用程序运行时所产生的中间数据。请再参阅图3,首先在内存10中为第一区域110分配指定数量的物理页,然后在第一区域110中为第二区域120分配指定数量的物理页,最后,在第二区域120中为第三区域130进程动态分配物理页。
一并参阅图5,拟为第一区域110分配12个物理页,12个物理页共设置有白色、黄色、绿色及蓝色4种标识。
系统每次调用alloc_pages函数会将4个连续的物理页分配给第一区域110,重复调用alloc_pages函数直到已分配的物理页数量大于或等于拟分配的物理页数量。本实施例中,系统为第一区域110分配了3组连续的物理页A1~D1、A2~D2、A3~D3,其中,物理页A1~A3均被设置为白色,物理页B1~B3均被设置为黄色,物理页C1~C3均被设置为绿色,物理页D1~D3均被设置为蓝色。拟分配给第一区域110的物理页的数量可设置为第一区域标识集中标识数量的整数倍。在本实施例中,12即为4的整数倍。值得注意的是,颜色仅作为标识用,在其它的实施例中,也可以是其它颜色、数字编码或颜色、数字编码之间的混编。
一并参阅图6,拟为第二区域120分配5个物理页。5个物理页共设置有白色、黄色两种标识。第二区域标识集是第一区域标识集的子集。分配时,判断已分配给第二区域120的物理页的数量是否等于5,如果否,则遍历第二区域标识集查找到一个标识,判断在第一区域110中是否还有设置有该标识的未分配的物理页,如果有则将查找到的物理页分配给第二区域120。在本实施例中,系统依次按{白色、黄色、白色、黄色、白色}的顺序遍历第二区域标识集,相应地在第一区域110中依次查找到{白色的物理页A1、黄色的物理页B1、白色的物理页A2、黄色的物理页B2、白色的物理页A3}分配给第二区域120。
将第二区域120中未分配的物理页地址对应到链表中,应用程序运行时,系统通过链表查找到未分配的物理页,并分配给第三区域130。第三区域130分配完毕后,系统将应用程序的数据从磁盘映射到第三区域130中。
处理器需要读取某个数据时,处理器就必须访问第三区域130中相应的物理页。由于内存10的访问速度慢,系统就自动地将包含该数据的虚拟页映射到访问速度快的cache中,供处理器访问。
参阅图7,系统调用cache分区软件依次递增地为应用程序分配大小为1*96K,3*96K,5*96K......29*96K的cache。一般来说,内存容量远大cache的容量。因此,要把应用程序的数据从内存映射到cache时,就有个如何放置的问题。常用的映象规则有三种全相联映象、直接映象及组相联映象。相联度越高cache的利用率就越高,cache失效概率就越低,但是,相联度越高cache的实现复杂度和代价越大。因此,绝大多数计算机都采用二路、四路或八路组相联映象。
图8所示,将cache 510分成4组,每组包含8个块。内存520的物理页与cache 510的组之间采用直接相联映射,即内存520中的单个物理页的数据只能映射到特定的一个组中。内存520的物理页与组内的各块则采用全相联映射,即内存520的物理页的数据能够映射到cache510的特定组中的任意一块。
内存520中的编号为j的物理页与cache的第k组之间满足如下关系:
k=jmod2u
u为cache被分成的组数。
如图8所示,内存520中编号为0、4、8的物理页将被分配到cache510的第一组中,而编号为1、5、8的物理页将被分配到cache 510的第二组中。其它的组同样依次类推,这里就不一一赘述。值得注意的是,上述所提到的编号仅为陈述方便而使用,不具有任何实际意义。
在组相联映射方式下,处理器通过查找物理地址实现映射。如图9所示,处理器通过cache组号610查找到cache的组的起始地址,其中cache组号610与物理页号620的公共位表示的是cache组中某个区域的颜色。
一并参阅图10,本发明采用八路组相联进行阐述。cache的一个组710包含编号为0~7的八个块,编号0~14的物理页均映射到该组中。由于内存720中的一个物理页需要占据两个块大小的cache,因而可将cache的一个组710通过颜色划分为4个区域,编号为0的块及编号为1的块被设置成白色,编号为2的块及编号为3的块被设置成黄色,编号为4的块及编号为5的块被设置成绿色,编号为6的块及编号为7的块被设置成蓝色。类似地,内存720中的编号为0、1、3、6、11、12的物理页被设置成白色,编号为2、7、10的物理页被设置成黄色,编号为5、9、14的物理页被设置成绿色,编号为4、8、13的物理页被设置成蓝色。当虚拟页从内存720映射到cache时,通过颜色的控制,编号为2、7、11的物理页所包含的虚拟页将被映射到同种颜色的编号为2、3的块中。同样地,编号为5、9、14的物理页所包含的虚拟页将被映射到同种颜色的编号为4、5的块中。其它颜色的物理页也将进行同样的操作,这里就不一一赘述。值得注意的是,这里物理页及cache中的颜色设置仅作为标识用,在其它的实施例中,也可以是其它颜色、数字编码等任一种标识。而且,上述所提到的编号仅为陈述方便而使用,不具有任何实际意义。
当系统为linux系统时,系统通过调优工具perf,以shell的方式调用PIN采集cache大小不同时,处理器10000次从cache读取数据时的cache失效率,并根据cache失效率拟合出cache失效特性曲线410。通过公式一、二计算cache失效率的一阶导数及二阶导数,得到cache失效特性一阶导数曲线420及cache失效特性二阶导数曲线430。
公式一:
其中,MCU为cache失效率的一阶导数,Cache Miss为cache失效率,Cache Color为所述第二区域标识集,
公式二:
其中,MMCU为cache失效率的二阶导数,MCU为cache失效率的一阶导数,Cache Color为所述第二区域标识集。根据二阶导数曲线430可找到两个下凸拐点A、B,即拐点A、B的值均为正值。拐点B的值大于拐点A的值,选择拐点B对应的cache大小数值12*96K为最优的cache大小数值。
系统在本地预先建立高速缓存分配库,高速缓存分配库中设有多个行/列。若该应用程序为word,则在高速缓存分配库中新增一行/列,并将word的名称及cache空间大小数值存入行/列中,如下面所示:
应用程序的名称 | cache空间大小数值 |
Microsoft Office word 2007 | 12*96K |
当word的cache空间大小数值存入数据库后,若下次需要执行word,系统自动获取word的名称Microsoft Office word 2007,然后查找高速缓存分配库,进而获取word所在行/列的cache空间大小数值12*96K。系统根据这个cache空间大小数值分配12*96K大小的cache给word的进程。
本实施例通过系统在本地建立高速缓存分配库,并在高速缓存分配库中建立了不同应用程序与cache空间大小数值的一一对应关系,在应用程序启动时,系统通过查找高速缓存分配库,快速地获得该应用程序的cache空间大小数值,进而为该应用程序的进程分配最适合大小的cache,能有效地降低cache失效率,提高系统的性能。
进一步地,本实施例通过给内存及cache设置了标识,使得数据从内存映射到cache时,将内存中的物理页的内容映射到具有相同标识的cache的块中,进一步地降低cache失效率,提高系统的性能。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分可以通过程序指令相关硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等等。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种应用程序高速缓存的分配方法,其特征在于,包括:
采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;
在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的cache空间大小数值;
当有应用程序需要被执行时,获取所述应用程序的标识;
根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;
为所述应用程序对应的进程分配与所述大小数值相等大小的cache;
其中,所述采集应用程序在单位大小不同高速缓存cache情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值步骤包括:
将所述应用程序的数据从磁盘映射到内存中;
为所述进程多次分配不同大小的cache;
每一次分配cache后,将所述应用程序的数据从内存映射到所分配的cache中;
在单位指令中,采集应用程序在cache大小不同的情况下的cache失效率;
根据所述cache失效率计算出所述应用程序的cache空间大小数值;
将所述cache空间大小数值存入所述高速缓存分配库中。
2.根据权利要求1所述的应用程序高速缓存的分配方法,其特征在于,所述将应用程序的数据从磁盘映射到内存中步骤之前还包括如下步骤:
在内存中为第一区域分配指定数量的物理页;
在所述第一区域中为第二区域分配指定数量的物理页;
在所述第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中,第三区域为所述应用程序对应的进程的内存区域。
3.根据权利要求2所述的应用程序高速缓存的分配方法,其特征在于,所述在内存中为第一区域分配指定数量的物理页步骤包括如下步骤:
获取拟分配给所述第一区域的物理页数量及第一区域标识集,所述第一区域标识集包括多个标识;
为所述第一区域分配多个连续的物理页,并且每个物理页均与第一域标识集中的标识一一对应;
判断已分配的物理页数量是否大于或等于拟分配的物理页数量,如果否,继续执行为所述第一区域分配多个连续的物理页的步骤,直至已分配的物理页数量大于或等于拟分配的物理页数量。
4.根据权利要求3所述的应用程序高速缓存的分配方法,其特征在于,所述在第一区域中为第二区域分配指定数量的物理页步骤包括如下步骤:
获取拟分配给所述第二区域的物理页数量及第二区域标识集,所述第二区域标识集为第一区域标识集的子集;
判断已分配给所述第二区域的物理页数量是否大于或等于拟分配给第二区域的物理页数量;
如果否,从所述第一区域中查找到具有第二区域标识集中标识的未分配的物理页分配给所述第二区域,并继续执行判断已分配给所述第二区域的物理页数量是否大于或等于拟分配给第二区域的物理页数量步骤,直至已分配的物理页数量大于或等于拟分配的物理页数量。
5.根据权利要求2所述的应用程序高速缓存的分配方法,其特征在于,所述在第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中步骤之前还包括如下步骤:
建立一个链表,并将所述第二区域中未分配的物理页地址对应到所述链表;
通过查找所述链表找到未分配的物理页;
将查找到的物理页动态分配给所述第三区域。
6.一种应用程序高速缓存的分配装置,其特征在于,所述应用程序高速缓存的分配装置包括:
计算模块,用于采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;
建库模块,用于在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的cache空间大小数值;
获取模块,用于获取所述应用程序的标识,及根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;
分配模块,用于为所述应用程序对应的进程分配与所述大小数值相等大小的cache;
所述应用程序高速缓存的分配装置还包括映射模块,用于将所述应用程序的数据从磁盘映射到内存中;
其中,
所述分配模块还用于为所述进程多次分配不同大小的cache;
所述映射模块还用于将所述应用程序的数据从所述内存映射到所分配的cache中;
所述应用程序高速缓存的分配装置还包括采集模块,用于在单位指令中,采集所述应用程序在cache大小不同的情况下的cache失效率;其中,
所述计算模块还用于根据所述cache失效率计算出所述应用程序的cache空间大小数值;
所述应用程序高速缓存的分配装置还包括存储模块,用于将所述cache空间大小数值存入所述高速缓存分配库中。
7.根据权利要求6所述的应用程序高速缓存的分配装置,其特征在于,
所述分配模块还用于在内存中为第一区域分配指定数量的物理页;
所述分配模块还用于在所述第一区域中为第二区域分配指定数量的物理页;
所述分配模块还用于在所述第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中,第三区域为所述应用程序对应的进程的内存区域。
8.根据权利要求7所述的应用程序高速缓存的分配装置,其特征在于,
所述获取模块还用于获取拟分配给所述第一区域的物理页数量及第一区域标识集,所述第一区域标识集包括多个标识;
所述分配模块还用于为所述第一区域分配多个连续的物理页,并且每个物理页均与第一域标识集中的标识一一对应;
所述应用程序高速缓存的分配装置还包括判断模块,用于判断已分配的物理页数量是否大于或等于拟分配的物理页数量。
9.根据权利要求8所述的应用程序高速缓存的分配装置,其特征在于,
所述获取模块还用于获取拟分配给所述第二区域的物理页数量及第二区域标识集,所述第二区域标识集为第一区域标识集的子集;
所述判断模块还用于判断已分配给所述第二区域的物理页数量是否等于拟分配给第二区域的物理页数量;
所述分配模块还用于从第一区域中查找到具有第二区域标识集中标识的未分配的物理页分配给所述第二区域。
10.根据权利要求7所述的应用程序高速缓存的分配装置,其特征在于,所述应用程序高速缓存的分配装置还包括:
建表模块,用于建立一个链表,并将所述第二区域中未分配的物理页地址对应到所述链表;
查找模块,用于通过查找所述链表找到一个未分配物理页;其中,
所述分配模块还用于将查找到的物理页分配给所述第三区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110384780.0A CN102521150B (zh) | 2011-11-28 | 2011-11-28 | 一种应用程序cache分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110384780.0A CN102521150B (zh) | 2011-11-28 | 2011-11-28 | 一种应用程序cache分配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521150A CN102521150A (zh) | 2012-06-27 |
CN102521150B true CN102521150B (zh) | 2014-10-08 |
Family
ID=46292080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110384780.0A Active CN102521150B (zh) | 2011-11-28 | 2011-11-28 | 一种应用程序cache分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521150B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089233B2 (en) | 2016-05-11 | 2018-10-02 | Ge Aviation Systems, Llc | Method of partitioning a set-associative cache in a computing platform |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095105B (zh) * | 2014-04-24 | 2018-07-03 | 华为技术有限公司 | 一种Cache分区的方法及装置 |
CN106250325B (zh) * | 2016-07-19 | 2019-11-19 | 中科创达软件股份有限公司 | 一种缓存优化方法和系统 |
CN107145453B (zh) * | 2017-06-12 | 2019-09-06 | 优刻得科技股份有限公司 | 一种缓存失效率的预测方法、装置、可读介质和设备 |
CN107346248B (zh) * | 2017-07-04 | 2020-11-13 | 北京像素软件科技股份有限公司 | 平台标识方法及装置 |
CN107577616B (zh) * | 2017-09-05 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 一种划分末级共享缓存的方法及系统 |
CN109857681B (zh) * | 2017-11-30 | 2023-07-18 | 华为技术有限公司 | 高速缓存cache地址映射方法以及相关设备 |
CN108415736B (zh) * | 2018-02-06 | 2021-03-30 | 新浪网技术(中国)有限公司 | 利用进程文件系统标记程序进程的方法、装置和设备 |
CN111984197B (zh) * | 2020-08-24 | 2023-12-15 | 许昌学院 | 计算机缓存分配方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645341A (zh) * | 2003-11-26 | 2005-07-27 | 英特尔公司 | 根据优先级来处理高速缓存分配请求的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392657B2 (en) * | 2009-10-09 | 2013-03-05 | Intel Corporation | Monitoring cache usage in a distributed shared cache |
-
2011
- 2011-11-28 CN CN201110384780.0A patent/CN102521150B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645341A (zh) * | 2003-11-26 | 2005-07-27 | 英特尔公司 | 根据优先级来处理高速缓存分配请求的方法和装置 |
Non-Patent Citations (1)
Title |
---|
王爱英等.cache存储器工作原理.《计算机组成与结构》.清华大学出版社,2001,(第3版),第234页. * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089233B2 (en) | 2016-05-11 | 2018-10-02 | Ge Aviation Systems, Llc | Method of partitioning a set-associative cache in a computing platform |
Also Published As
Publication number | Publication date |
---|---|
CN102521150A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521150B (zh) | 一种应用程序cache分配方法及装置 | |
CN101256502B (zh) | 模拟多处理器系统的系统和方法 | |
CN104809179B (zh) | 访问哈希表的装置和方法 | |
US8171220B2 (en) | Cache architecture with distributed state bits | |
GB2176920A (en) | Content addressable memory | |
CN115422098B (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
CN105808358A (zh) | 一种用于众核系统的数据相关性线程分组映射方法 | |
CN102609254B (zh) | 获取对象级访存行为的方法及装置 | |
CN110333827A (zh) | 一种数据加载装置和数据加载方法 | |
Cheng et al. | A study of main-memory hash joins on many-core processor: A case with intel knights landing architecture | |
CN104484250A (zh) | 快速通道互联总线的压力测试方法和压力测试装置 | |
CN115168247B (zh) | 用于并行处理器中动态共享存储空间的方法及相应处理器 | |
US20170083286A1 (en) | Parallel merge sorting | |
CN103176914B (zh) | 一种低缺失率、低缺失惩罚的缓存方法和装置 | |
EP3069276A1 (en) | Method and apparatus of maintaining data for online analytical processing in a database system | |
CN109426624A (zh) | 用于高效利用地址转换缓存的装置和方法 | |
CN112799977A (zh) | 计算机的缓存分区和缓存访问实时性保护方法及装置 | |
CN102521304A (zh) | 基于哈希的聚簇表存储方法 | |
CN106550006A (zh) | 云服务器资源分配方法和装置 | |
CN103377135A (zh) | 寻址方法、装置及系统 | |
KR100255510B1 (ko) | 원포트램셀구조로이루어진캐시데이터램 | |
CN106126440B (zh) | 一种改善数据在缓存中空间局部性的缓存方法及装置 | |
CN107832238B (zh) | 一种基于龙芯处理器平台的高速缓存作内存的方法 | |
Fent et al. | Start—self-tuning adaptive radix tree | |
CN103218285A (zh) | 基于cpu寄存器的内存性能监控方法与装置 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211229 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |