一种应用程序cache分配方法及装置的制作方法

文档序号:6439471阅读:163来源:国知局
专利名称:一种应用程序cache分配方法及装置的制作方法
技术领域
本发明涉及高速缓存领域,特别是涉及一种应用程序高速缓存的分配方法及装置。
背景技术
高速缓冲存储器(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的一个组通过颜色标识映射的示意图。
具体实施例方式
7
下面结合附图和实施例对本发明进行详细说明。请参阅图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_PREL0AD,使第三区域130仅限于第二区域120内。查找链表,将链表中的未分配的物理页动态分配给第三区域130。在系统的控制下,应用程序的数据从磁盘映射到第三区域130。应用程序的数据包括应用程序的可执行代码及应用程序运行时所产生的中间数据。S220、预分配 cache。系统调用cache分区软件为应用程序的进程分配一个定值大小的cache,用于测试应用程序在该定值大小下的cache失效率,以确定最终分配给应用程序的最适合的 cache大小。S230、将应用程序的数据从内存映射到cache。本实施例中,应用程序的数据从内存映射到cache时遵循组相联映象规则。同一组的cache通过设置多个标识被划分成多个不同的块。映射时,系统获取内存中物理页所属的组及标识,通过组相联映象规则访问cache中的组,然后访问组中的块,最后将数据从内存映射到与物理页具有相同标识的块中。S240、采集 cache 失效率。当系统为Iinux系统时,系统通过调优工具perf,以shell的方式调用PIN采集处理器10000次从cache读取数据时的cache失效率。S250、判断预分配的次数是否小于预定次数。判断预分配的次数是否小于预定次数,如果是,返回步骤S220,直到已分配的次数等于预定次数,如果否,则执行步骤S260。S^O、计算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种标识。系统每次调用all0C_pageS函数会将4个连续的物理页分配给第一区域110,重复调用all0C_pages函数直到已分配的物理页数量大于或等于拟分配的物理页数量。本实施例中,系统为第一区域110分配了 3组连续的物理页Al Dl、A2 D2、A3 D3,其中,物理页Al A3均被设置为白色,物理页Bl B3均被设置为黄色,物理页Cl C3均被设置为绿色,物理页Dl D3均被设置为蓝色。拟分配给第一区域110的物理页的数量可设置为第一区域标识集中标识数量的整数倍。在本实施例中,12即为4的整数倍。值得注意的是,颜色仅作为标识用,在其它的实施例中,也可以是其它颜色、数字编码或颜色、数字编码之间的混编。一并参阅图6,拟为第二区域120分配5个物理页。5个物理页共设置有白色、黄色两种标识。第二区域标识集是第一区域标识集的子集。分配时,判断已分配给第二区域120 的物理页的数量是否等于5,如果否,则遍历第二区域标识集查找到一个标识,判断在第一区域110中是否还有设置有该标识的未分配的物理页,如果有则将查找到的物理页分配给第二区域120。在本实施例中,系统依次按{白色、黄色、白色、黄色、白色}的顺序遍历第二区域标识集,相应地在第一区域110中依次查找到{白色的物理页Al、黄色的物理页Bi、白色的物理页A2、黄色的物理页B2、白色的物理页AW分配给第二区域120。将第二区域120中未分配的物理页地址对应到链表中,应用程序运行时,系统通过链表查找到未分配的物理页,并分配给第三区域130。第三区域130分配完毕后,系统将应用程序的数据从磁盘映射到第三区域130中。处理器需要读取某个数据时,处理器就必须访问第三区域130中相应的物理页。 由于内存10的访问速度慢,系统就自动地将包含该数据的虚拟页映射到访问速度快的 cache中,供处理器访问。参阅图7,系统调用cache分区软件依次递增地为应用程序分配大小为1*96K,
3*96Κ,5*96Κ......29*96Κ的cache。一般来说,内存容量远大cache的容量。因此,要把
应用程序的数据从内存映射到cache时,就有个如何放置的问题。常用的映象规则有三种全相联映象、直接映象及组相联映象。相联度越高cache的利用率就越高,cache失效概率就越低,但是,相联度越高cache的实现复杂度和代价越大。因此,绝大多数计算机都采用二路、四路或八路组相联映象。图8所示,将cache 510分成4组,每组包含8个块。内存520的物理页与cache 510的组之间采用直接相联映射,即内存520中的单个物理页的数据只能映射到特定的一个组中。内存520的物理页与组内的各块则采用全相联映射,即内存520的物理页的数据能够映射到CaChe510的特定组中的任意一块。内存520中的编号为j的物理页与cache的第k组之间满足如下关系k = jmod2uu为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中的颜色设置仅作为标识用,在其它的实施例中,也可以是其它颜色、数字编码等任一种标识。而且,上述所提到的编号仅为陈述方便而使用,不具有任何实际意义。当系统为Iinux系统时,系统通过调优工具perf,以shell的方式调用PIN采集cache大小不同时,处理器10000次从cache读取数据时的cache失效率,并根据cache失效率拟合出cache失效特性曲线410。通过公式一、二计算cache失效率的一阶导数及二阶导数,得到cache失效特性一阶导数曲线420及cache失效特性二阶导数曲线430。公式一
权利要求
1.一种应用程序高速缓存的分配方法,其特征在于,包括采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的 cache空间大小数值;当有应用程序需要被执行时,获取所述应用程序的标识;根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;为所述应用程序对应的进程分配与所述大小数值相等大小的cache。
2.根据权利要求1所述的方法,其特征在于,所述采集应用程序在单位大小不同高速缓存cache情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache 空间大小数值步骤包括将所述应用程序的数据从磁盘映射到内存中; 为所述进程多次分配不同大小的cache ;每一次分配cache后,将所述应用程序的数据从内存映射到所分配的cache中; 在单位指令中,采集应用程序在cache大小不同的情况下的cache失效率; 根据所述cache失效率计算出所述应用程序的cache空间大小数值; 将所述cache空间大小数值存入所述高速缓存分配库中。
3.根据权利要求2所述的应用程序高速缓存的分配方法,其特征在于,所述将应用程序的数据从磁盘映射到内存中步骤之前还包括如下步骤在内存中为第一区域分配指定数量的物理页; 在所述第一区域中为第二区域分配指定数量的物理页;在所述第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中,第三区域为所述应用程序对应的进程的内存区域。
4.根据权利要求3所述的应用程序高速缓存的分配方法,其特征在于,所述在内存中为第一区域分配指定数量的物理页步骤包括如下步骤获取拟分配给所述第一区域的物理页数量及第一区域标识集,所述第一区域标识集包括多个标识;为所述第一区域分配多个连续的物理页,并且每个物理页均与第一域标识集中的标识 --对应;判断已分配的物理页数量是否大于或等于拟分配的物理页数量,如果否,继续执行为所述第一区域分配多个连续的物理页的步骤,直至已分配的物理页数量大于或等于拟分配的物理页数量。
5.根据权利要求4所述的应用程序高速缓存的分配方法,其特征在于,所述在第一区域中为第二区域分配指定数量的物理页步骤包括如下步骤获取拟分配给所述第二区域的物理页数量及第二区域标识集,所述第二区域标识集为第一区域标识集的子集;判断已分配给所述第二区域的物理页数量是否大于或等于拟分配给第二区域的物理页数量;如果否,从所述第一区域中查找到具有第二区域标识集中标识的未分配的物理页分配给所述第二区域,并继续执行判断已分配给所述第二区域的物理页数量是否大于或等于拟分配给第二区域的物理页数量步骤,直至已分配的物理页数量大于或等于拟分配的物理页数量。
6.根据权利要求3所述的应用程序高速缓存的分配方法,其特征在于,所述在第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中步骤之前还包括如下步骤建立一个链表,并将所述第二区域中未分配的物理页地址对应到所述链表; 通过查找所述链表找到未分配的物理页; 将查找到的物理页动态分配给所述第三区域。
7.一种应用程序高速缓存的分配装置,其特征在于,所述应用程序高速缓存的分配装置包括计算模块,用于采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;建库模块,用于在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的cache空间大小数值;获取模块,用于获取所述应用程序的标识,及根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;分配模块,用于为所述应用程序对应的进程分配与所述大小数值相等大小的cache。
8.根据权利要求7所述的应用程序高速缓存的分配装置,其特征在于,所述应用程序高速缓存的分配装置还包括映射模块,用于将所述应用程序的数据从磁盘映射到内存中;其中,所述分配模块还用于为所述进程多次分配不同大小的cache ; 所述映射模块还用于将所述应用程序的数据从所述内存映射到所分配的cache中; 所述应用程序高速缓存的分配装置还包括采集模块,用于在单位指令中,采集所述应用程序在cache大小不同的情况下的cache失效率;其中,所述计算模块还用于根据所述cache失效率计算出所述应用程序的cache空间大小数值;所述应用程序高速缓存的分配装置还包括存储模块,用于将所述cache空间大小数值存入所述高速缓存分配库中。
9.根据权利要求8所述的应用程序高速缓存的分配装置,其特征在于, 所述分配模块还用于在内存中为第一区域分配指定数量的物理页;所述分配模块还用于在所述第一区域中为第二区域分配指定数量的物理页; 所述分配模块还用于在所述第二区域中为第三区域动态分配物理页,并将应用程序的数据从磁盘映射到第三区域中,第三区域为所述应用程序对应的进程的内存区域。
10.根据权利要求9所述的应用程序高速缓存的分配装置,其特征在于,所述获取模块还用于获取拟分配给所述第一区域的物理页数量及第一区域标识集,所述第一区域标识集包括多个标识;所述分配模块还用于为所述第一区域分配多个连续的物理页,并且每个物理页均与第一域标识集中的标识一一对应;所述应用程序高速缓存的分配装置还包括判断模块,用于判断已分配的物理页数量是否大于或等于拟分配的物理页数量。
11.根据权利要求10所述的应用程序高速缓存的分配装置,其特征在于,所述获取模块还用于获取拟分配给所述第二区域的物理页数量及第二区域标识集,所述第二区域标识集为第一区域标识集的子集;所述判断模块还用于判断已分配给所述第二区域的物理页数量是否等于拟分配给第二区域的物理页数量;所述分配模块还用于从第一区域中查找到具有第二区域标识集中标识的未分配的物理页分配给所述第二区域。
12.根据权利要求9所述的应用程序高速缓存的分配装置,其特征在于,所述应用程序高速缓存的分配装置还包括建表模块,用于建立一个链表,并将所述第二区域中未分配的物理页地址对应到所述链表;查找模块,用于通过查找所述链表找到一个未分配物理页;其中, 所述分配模块还用于将查找到的物理页分配给所述第三区域。
全文摘要
本发明公开了一种应用程序高速缓存的分配方法,包括采集应用程序在高速缓存cache大小不同情况下的cache失效率,并根据cache失效率计算出分配给该应用程序的cache空间大小数值;在本地建立高速缓存分配库,所述高速缓存分配库包括各个应用程序的标识和对应的cache空间大小数值;当有应用程序需要被执行时,获取所述应用程序的标识;根据所述应用程序的标识从所述高速缓存分配库中获取与标识对应的cache空间大小数值;为所述应用程序对应的进程分配与所述大小数值相等大小的cache。本发明能够有效地降低cache失效率,提高系统的性能。
文档编号G06F12/08GK102521150SQ201110384780
公开日2012年6月27日 申请日期2011年11月28日 优先权日2011年11月28日
发明者刘轶, 吴瑾, 谭玺, 韦竹林 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1