一种任务缓存空间监测方法和装置转让专利

申请号 : CN201611189258.6

文献号 : CN106681830B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘琪骁喻之斌须成忠

申请人 : 深圳先进技术研究院

摘要 :

本发明实施例公开了一种任务缓存空间监测方法,用于实现对多核处理器中多任务的缓存空间的准确监测。本发明实施例方法包括:获取当前时间区间内处理器上各个任务产生对缓存的访问数和访问失效数;获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;输出计算得到的所述各个任务的缓存使用空间。本发明实施例还提供一种任务缓存空间监测装置。

权利要求 :

1.一种任务缓存空间监测方法,其特征在于,包括:

获取当前时间区间内处理器上各个任务产生对缓存的访问数和访问失效数;

获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;

根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;

根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;

输出计算得到的所述各个任务的缓存使用空间;

其中,所述根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间包括:若U小于α,则通过预设的第一公式计算当前时间区间内所述各个任务的缓存使用空间,所述第一公式为:若U大于等于α,则通过预设的第二公式计算当前时间区间内所述各个任务的缓存使用空间,所述第二公式为:其中,上述的Ti(j)为当前时间区间内所述各个任务的缓存使用空间,α为预设的使用度阈值,U为所述容量使用度,i为所述各个任务的标号,Mi为所述各个任务访问失效数,Ai为所述各个任务的访问数,j为当前时间区间,j-1为上一时间区间,CTi(j-1)为在上一时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,C为所述缓存的总容量。

2.根据权利要求1所述的任务缓存空间监测方法,其特征在于,所述根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度包括:通过预设的第三公式计算当前时间区间内所述缓存的容量使用度,所述第三公式为:其中,CTi为所述各个任务在上一时间区间内累积使用的缓存历史使用空间。

3.根据权利要求2所述的任务缓存空间监测方法,其特征在于,在根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间之后,还包括:根据当前时间区间内所述各个任务的缓存使用空间,计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间。

4.根据权利要求3所述的任务缓存空间监测方法,其特征在于,根据当前时间区间内所述各个任务的缓存使用空间,计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间包括:通过预设的第四公式计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,所述第四公式为: CTi(j)为在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,βj为与当前时间区间对应的预设的权重值。

5.根据权利要求4所述的任务缓存空间监测方法,其特征在于,上述的α、βj和N通过缓存访问模拟器在与所述缓存相同的缓存环境下输入预设的训练数据进行模拟训练得到。

6.根据权利要求1至5中任一项所述的任务缓存空间监测方法,其特征在于,在获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数之前,还包括:判断预设的触发事件是否被触发;

若预设的触发事件被触发,则向所述处理器引发一个中断,然后执行获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数的步骤。

7.一种任务缓存空间监测装置,其特征在于,包括:

访问数获取模块,用于获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数;

使用空间获取模块,用于获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;

容量使用度计算模块,用于根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;

缓存使用空间计算模块,用于根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;

输出模块,用于输出计算得到的所述各个任务的缓存使用空间。

其中,所述缓存使用空间计算模块包括:

第一计算单元,用于若U小于α,则通过预设的第一公式计算当前时间区间内所述各个任务的缓存使用空间,所述第一公式为:第二计算单元,用于若U大于等于α,则通过预设的第二公式计算当前时间区间内所述各个任务的缓存使用空间,所述第二公式为:其中,上述的Ti(j)为当前时间区间内所述各个任务的缓存使用空间,α为预设的使用度阈值,U为所述容量使用度,i为所述各个任务的标号,Mi为所述各个任务访问失效数,Ai为所述各个任务的访问数,j为当前时间区间,j-1为上一时间区间,CTi(j-1)为在上一时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,C为所述缓存的总容量。

8.根据权利要求7所述的任务缓存空间监测装置,其特征在于,所述任务缓存空间监测装置还包括:触发判断模块,用于判断预设的触发事件是否被触发;

中断模块,用于若所述触发判断模块的判断结果为是,则向所述处理器引发一个中断,然后触发所述访问数获取模块。

说明书 :

一种任务缓存空间监测方法和装置

技术领域

[0001] 本发明涉及信息技术领域,尤其涉及一种任务缓存空间监测方法和装置。

背景技术

[0002] 在当前的主流多核处理器架构中,缓存资源是最主要的共享资源,在多个任务同时执行时被共享。同时,由于缓存本身的一些特性,如:高额惩罚,每当任务需要读取的数据行不在缓存都需要访问内存去取回数据,而内存存取和传输产生高延迟将堵塞该任务的执行进程;竞争性资源,即一行数据要存入缓存行的前提是移除掉该行已经存在的数据,而如果有后续的对该移除的数据所进行的访问,将再次导致高时延的内存访问。
[0003] 任务对缓存空间的使用是随着它们对缓存的访问产生的。具体来说,当系统中只有单个任务执行时,该任务对处理器缓存的访问有两种结果:如果数据已经存在于缓存中,则该访问成功取到数据,并且数据将继续保存在原位置。反之,则是访问失效,需要进行高时延的内存访问取回数据完成操作,而取回的数据也将存放于缓存中等待该任务下一次的调用。而该数据的存放,也将导致之前所存放的数据被移除。所以,一个任务对于缓存的实际使用空间,即是它实际存入缓存中数据所占缓存行的行数。
[0004] 但是,在缓存被多个任务所共享的场景中,缓存的空间被多任务所共享。所以,各任务对缓存进行访问时,可分为三种情况:
[0005] 1、当一个任务的缓存访问命中的情况下,不涉及缓存行占有任务的改变,各任务的缓存使用空间不变;
[0006] 2、当一个任务的缓存访问失效,从内存取回数据放置入缓存后,移除的缓存行本就是该任务之前使用数据所占据的,则各任务的缓存使用空间仍然不变;
[0007] 3、当一个任务的缓存访问失效,从内存取回数据放置入缓存后,移除的缓存行是属于其他任务的,则该任务的缓存使用空间增加一缓存行,而被移除数据的任务使用的缓存空间减少一缓存行。
[0008] 目前存在大量的工作改进对缓存的使用,但这些方法更多的集中于改进缓存整体的性能和对任务性能影响的直接效果,而任务在缓存中所占空间这一关键性“中间问题”还缺乏深入的研究。从缓存的访问模式可以推断,当一个任务在缓存中所占有空间越多,它之前存储在缓存中的数据量也越大,成功取回数据的概率也就越高。相反,所占空间少的任务更容易产生缓存失效。不仅如此,占用缓存空间大的任务还会对同时执行的其他任务造成严重的干扰。所以,准确的监测各任务的缓存空间对于控制任务的性能,优化多任务对于缓存的使用有实际和积极的意义。

发明内容

[0009] 本发明实施例提供了一种任务缓存空间监测方法和装置,能够实现动态的对多核处理器中各个任务使用缓存空间的准确监测。
[0010] 本发明实施例提供的一种任务缓存空间监测方法,包括:
[0011] 获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数;
[0012] 获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;
[0013] 根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;
[0014] 根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;
[0015] 输出计算得到的所述各个任务的缓存使用空间。
[0016] 可选地,所述根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间包括:
[0017] 若U小于α,则通过预设的第一公式计算当前时间区间内所述各个任务的缓存使用空间,所述第一公式为:
[0018] 若U大于等于α,则通过预设的第二公式计算当前时间区间内所述各个任务的缓存使用空间,所述第二公式为:
[0019] 其中,上述的Ti(j)为当前时间区间内所述各个任务的缓存使用空间,α为预设的使用度阈值,U为所述容量使用度,i为所述各个任务的标号,Mi为所述各个任务访问失效数,Ai为所述各个任务的访问数,j为当前时间区间,j-1为上一时间区间,CTi(j-1)为在上一时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,C为所述缓存的总容量。
[0020] 可选地,所述根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度包括:
[0021] 通过预设的第三公式计算当前时间区间内所述缓存的容量使用度,所述第三公式为: 其中,CTi为所述各个任务在上一时间区间内累积使用的缓存历史使用空间。
[0022] 可选地,在根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间之后,还包括:
[0023] 根据当前时间区间内所述各个任务的缓存使用空间,计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间。
[0024] 可选地,根据当前时间区间内所述各个任务的缓存使用空间,计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间包括:
[0025] 通过预设的第四公式计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,所述第四公式为: CTi(j)为在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,βj为与当前时间区间对应的预设的权重值。
[0026] 可选地,上述的α、βj和N通过缓存访问模拟器在与所述缓存相同的缓存环境下输入预设的训练数据进行模拟训练得到。
[0027] 可选地,在获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数之前,还包括:
[0028] 判断预设的触发事件是否被触发;
[0029] 若预设的触发事件被触发,则向所述处理器引发一个中断,然后执行获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数的步骤。
[0030] 本发明实施例提供的一种任务缓存空间监测装置,包括:
[0031] 访问数获取模块,用于获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数;
[0032] 使用空间获取模块,用于获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;
[0033] 容量使用度计算模块,用于根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;
[0034] 缓存使用空间计算模块,用于根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;
[0035] 输出模块,用于输出计算得到的所述各个任务的缓存使用空间。
[0036] 可选地,所述缓存使用空间计算模块包括:
[0037] 第一计算单元,用于若U小于α,则通过预设的第一公式计算当前时间区间内所述各个任务的缓存使用空间,所述第一公式为:
[0038] 第二计算单元,用于若U大于等于α,则通过预设的第二公式计算当前时间区间内所述各个任务的缓存使用空间,所述第二公式为:
[0039] 其中,上述的Ti(j)为当前时间区间内所述各个任务的缓存使用空间,α为预设的使用度阈值,U为所述容量使用度,i为所述各个任务的标号,Mi为所述各个任务访问失效数,Ai为所述各个任务的访问数,j为当前时间区间,j-1为上一时间区间,CTi(j-1)为在上一时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,C为所述缓存的总容量。
[0040] 可选地,所述任务缓存空间监测装置还包括:
[0041] 触发判断模块,用于判断预设的触发事件是否被触发;
[0042] 中断模块,用于若所述触发判断模块的判断结果为是,则向所述处理器引发一个中断,然后触发所述访问数获取模块。
[0043] 从以上技术方案可以看出,本发明实施例具有以下优点:
[0044] 本发明实施例中,首先,获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数;然后,获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;接着,根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;最后,输出计算得到的所述各个任务的缓存使用空间。在本发明实施例中,可以通过读取处理器的PMC值,间接地准确计算出所述处理器中各个任务在当前时间区间的缓存使用空间,实现对各个任务的缓存空间的准确监测;另外,可以输出计算得到的所述各个任务的缓存使用空间,有助于优化多任务对缓存的使用,减少多任务相互干扰的可能性并提高缓存的使用效率。

附图说明

[0045] 图1为本发明实施例中一种任务缓存空间监测方法一个实施例流程图;
[0046] 图2为本发明实施例中一种任务缓存空间监测方法在一个应用场景下动态监测缓存空间的流程示意图;
[0047] 图3为本发明实施例中一种任务缓存空间监测装置一个实施例结构图。

具体实施方式

[0048] 本发明实施例提供了一种任务缓存空间监测方法和装置,用于实现对处理器中各个任务的缓存空间的准确监测。
[0049] 本发明所解决的技术问题是,在处理器中有多个任务同时运行时,通过软件层面的机制对各任务所占用的处理器中缓存资源的空间进行动态的监测。在处理器(或多核处理器)架构下,被高度共享的缓存很容易形成多任务执行时的干扰源,从而影响到各任务执行的进程。技术难点在于,缓存空间的实际使用情况属于处理器硬件中的内部信息,该信息并不对软件透明,只能在软件层面利用模型间接的对各任务在缓存中使用的空间进行推断。
[0050] 现有技术中,在软件层面上对任务缓存空间的间接监测机制,属于“黑盒”机制,而硬件层面的复杂设计往往不能通过简单的方法来进行预测。比如,当前的缓存设计基本都使用了多路相关性缓存选址设计来优化对缓存访问的性能。即多条缓存行共享一个寻址空间,当缓存访问使用一个内存地址访问缓存时,首先根据地址的前几位寻址到该缓存行集合,这样可以有效的降低寻址开销。在这一集合中,再根据地址后几位寻找到具体存储数据的缓存行,这样可以避免使用相近地址缓存访问的冲突。但是,在这样一个缓存行集合中,被移除掉的缓存行将通过其他的规则来决定。这也大大的增加了在软件层面通过分析内存页地址判断任务所占用的缓存空间的难度。
[0051] 本发明属于纯软件机制,不需要额外的硬件开销,只需要在软件层面通过PMC完成低开销的监测,通过模型在多任务并行执行时对各任务在缓存使用的空间进行推断。本发明的机制虽然是从软件层面入手,但是通过对硬件体系的充分研究,加上高精度硬件机制模拟的验证得出结果。属于“灰盒”机制。相对于之前的软件层面的方法,本发明主要有以下优点:
[0052] 1、提高解决方案的全面性,不再要求多个任务都大量的占用缓存资源。可知,当前计算平台上执行的任务类型多种多样,而在当前的多核处理器设计中,已经提供了很大的缓存空间和层级。所以,所有任务都大量需要缓存的场景并不常出现。而本发明将充分对任务特性多样化进行考察,通过全面的机制对缓存空间实现动态监测。
[0053] 2、不再依赖于缓存失效的计数来进行缓存使用空间的判断。任务使用缓存空间的变化确实是由缓存失效引起的,但是,对缓存访问成功的概率同样是推断缓存使用空间的重要因素。因为缓存访问成功的前提是数据已经存在于当前的缓存行中,间接的证明了任务在缓存中占有的空间。本发明也将缓存访问成功的次数和缓存访问失效的次数一并作为参数纳入缓存使用空间模型的推断模型。
[0054] 3、重视了时间累积的效果。当前主流的缓存行移除策略是移除最不常使用策略(Least Recently Used,LRU),即,在缓存中存放时间越久的数据被移除的概率也越大。本发明同样将时间因素纳入模型,从而形成对任务使用缓存空间更全面的推断。
[0055] 为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0056] 请参阅图1,本发明实施例中一种任务缓存空间监测方法一个实施例包括:
[0057] 101、获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数;
[0058] 102、获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;
[0059] 103、根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;
[0060] 104、根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;
[0061] 105、输出计算得到的所述各个任务的缓存使用空间。
[0062] 对于上述步骤101,上述的访问数是指在当前时间区间内所述处理器上各个任务对缓存产生的访问次数,上述的访问失效数是指在当前时间区间内所述处理器上各个任务对缓存产生的访问失败(失效)的次数。
[0063] 在本实施例中,各个时间区间的长度可以预先设定,一般来说,各个时间区间的长度是相等的,也即,当前时间区间的长度与上一时间区间的长度相等,与下一时间区间的长度也相等。
[0064] 对于上述步骤101,具体地,可以读取当前时间区间内处理器的PMC值,得到所述处理器上各个任务产生对缓存的访问数和访问失效数。可以理解的是,在当前的主流处理器中都提供大量的PMC(事件计数器,Performance Monitoring Counters),这些PMC记录了在任务执行过程中处理器中的一些关键事件发生的数量,比如处理器中执行的指令数、周期数、对缓存的访问次数、在缓存中访问失效的次数等信息。例如,利用Linux操作系统的内核模块perf_event,可以高频率的读取一系列经过设置的PMC(最高至100,000次/秒),从而可以从这些读取的PMC中获取到各个任务的访问数和访问失效数。
[0065] 对于上述步骤102,可以理解的是,缓存作为存储性的部件,其中的空间是随着时间累积的。所以本发明在各个时间区间上累计各任务所占据的缓存空间,即为上述的缓存历史使用空间。在某一时间区间上对缓存空间进行监测时,需考虑在此之前一些时间区间(如上一时间区间)上,各任务对于缓存的使用情况。另外,上一时间区间内所述各个任务累积使用的缓存历史使用空间可以预先计算得到,例如可以在对上一时间区间进行监测时计算得到各个任务累积使用的缓存历史使用空间。另外,关于缓存历史使用空间的计算方法将在下述内容中进行详细描述。
[0066] 对于上述步骤103,在获取上一时间区间内所述各个任务累积使用的缓存历史使用空间之后,可以根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度。
[0067] 可以理解的是,在每一个时间区间上,缓存被所有执行的任务所共享,所以整个缓存的使用程度即是所有任务使用缓存空间的总和。因此,进一步地,可以通过预设的第三公式计算当前时间区间内所述缓存的容量使用度U,所述第三公式为: 其中,CTi为所述各个任务在上一时间区间内累积使用的缓存历史使用空间,i为所述各个任务的标号,C为所述缓存的总容量。
[0068] 上述容量使用度U的计算可以在每一个固定频率的时间节点上进行。
[0069] 对于上述步骤104,在计算得到当前时间区间内所述缓存的容量使用度之后,可以根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间。
[0070] 本发明利用计算出的U,在时间区间j上使用预设的使用度阈值α对各任务的缓存空间的变量进行计算:当U<α时,则当前缓存空间的使用量较低,而多个任务竞争使用缓存资源的压力也较小。在这样的情景下,在每个时间区间上,各任务占用缓存空间的变化主要表征为各任务所产生的缓存访问失效的数量。相对的,当U>α时,则当前缓存已经被大量的使用,从而每一次缓存失效事件表征了缓存空间的占有权在两个任务之间的更迭。在这样的情景下,则可以根据各任务所造成缓存失效的比例来对缓存空间进行概率划分。除此之外,这两者的基础,都基于上一个时间区间内所计算出的该任务累积使用的缓存历史使用空间CT,并且任务在当前时间区间上失效的比例也是重要的影响因子。
[0071] 因此,进一步地,上述步骤104可以包括:
[0072] 若U小于α,则通过预设的第一公式计算当前时间区间内所述各个任务的缓存使用空间,所述第一公式为:
[0073] 若U大于等于α,则通过预设的第二公式计算当前时间区间内所述各个任务的缓存使用空间,所述第二公式为:
[0074] 其中,上述的Ti(j)为当前时间区间内所述各个任务的缓存使用空间,α为预设的使用度阈值,U为所述容量使用度,i为所述各个任务的标号,Mi为所述各个任务访问失效数,Ai为所述各个任务的访问数,j为当前时间区间,j-1为上一时间区间,CTi(j-1)为在上一时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,C为所述缓存的总容量。
[0075] 对上述第一公式和第二公式进行整理,可以表示为:
[0076]
[0077] 对于上述步骤105,在步骤104计算得到各个任务的缓存使用空间之后,可以将所述各个任务的缓存使用空间作为监测结果进行输出,可以在软件层面向管理程序提供,为资源的管理和任务的调度提供参照,有助于优化多任务对缓存的使用,减少多任务相互干扰的可能性并提高缓存的使用效率。
[0078] 另外,本发明实施例中,进一步地,在步骤104之后,还可以包括:根据当前时间区间内所述各个任务的缓存使用空间,计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间。可以理解的是,在当前时间区间j上计算出Ti(j)后,还需要对之前时间区间上各任务所使用的缓存空间进行考量。由于缓存中数据存储的时效性,可以仅考量在当前时间区间之前N个时间区间的缓存空间使用量。并且,时间越久,则对应的预设权重值越低。
[0079] 因此,进一步地,可以通过预设的第四公式计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,所述第四公式为: CTi(j)为在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,βj为与当前时间区间对应的预设的权重值。
[0080] 可知,通过上述第四公式可以计算出当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间。同理,对于上述步骤102中的上一时间区间内所述各个任务累积使用的缓存历史使用空间CTi(j-1), 也即在上一时间区间内进行缓存空间监测时,在计算得到上一时间区间内各个任务的缓存使用空间之后,也可以计算得到该缓存历史使用空间CTi(j-1),从而在当前时间区间内进行缓存空间监测时,可以直接获取到上一时间区间的缓存历史使用空间CTi(j-1)。同理可知,当前时间区间内计算得到的CTi(j),也可在下一时间区间内进行缓存空间监测时使用。
[0081] 更进一步地,上述的α、βj和N可以通过缓存访问模拟器在与所述缓存相同的缓存环境下输入预设的训练数据进行模拟训练得到。该缓存访问模拟器的运行基于与所述缓存相同的缓存环境,可以预先对缓存参数进行配置,包括缓存的总容量,缓存行的长度,缓存行的相关度,缓存行的移除机制,示例如下:
[0082]
[0083]
[0084] 本实施例中,在进行模拟训练时,通过缓存访问模拟器可以方便添加缓存行的任务识别号,从而可以精准监测在执行过程中各任务对缓存空间的使用情况。另外,预先选取基准程序集,比如从SPEC CPU2006的处理器上选取4个基准程序作为训练集,可以得到这4个任务在该缓存访问模拟器上运行时缓存空间的具体信息来作为训练数据。经过线性回归,可以确定本发明上述第一公式、第二公式、第三公式和第四公式中α、βj和N等参数的具体值。在确定出α、βj和N的预设值之后,可以得出本发明中该任务缓存空间监测方法的完整模型,从而应用于实际系统中对任务使用的缓存空间进行动态监测。
[0085] 进一步地,在步骤101之前,本发明的任务缓存空间监测方法还可以包括:判断预设的触发事件是否被触发,若是,则向所述处理器引发一个中断,然后执行步骤101。可以理解的是,该触发事件可以是该处理器执行到某个预设的时间区间,或者该处理器的各个任务从开始监测到当前时间节点累计执行了预设数量个时间区间,又或者是操作人员下发确定监测的指令。
[0086] 为便于理解,根据图1所描述的实施例,下面以一个实际应用场景对本发明实施例中的一种任务缓存空间监测方法进行描述:
[0087] 图2示出了本发明实施例中一种任务缓存空间监测方法在一个应用场景下动态监测缓存空间的流程示意图。
[0088] 在本应用场景下,通过监测软件执行该任务缓存空间监测方法,其在实际系统中的使用过程如图2所示,具体说明如下:
[0089] 一、首先,当处理器中多个任务开始执行时,监测软件也随之进行初始化并进入后台运行,当前系统内所有正在执行的任务的初始缓存空间设定为0。当任务在时间内执行时,该监测程序保持在后台。等待达到监测程序自身设定的时间点后唤醒该监测程序。
[0090] 二、当任务执行周期数累计到监测程序所设定的固定时间点上时,则引发一个中断,由后台的监测程序读取当前的经过设定的PMC值,读取各CPU上产生对缓存的访问数和访问失效数,这些缓存访问归属于当前在该CPU上执行的各个任务。
[0091] 三、根据监测程序中保存的所有任务在上一个时间节点时经过计算所得累积的缓存历史使用空间,根据第三公式计算当前整个缓存中容量的使用情况U。
[0092] 四、从PMC读取值中,分别按CPU编号(多核CPU)将当前执行的各任务的缓存访问数量Ai和缓存访问失效数量Mi独处。并根据计算得到的U值,在第一公式和第二公式中,将读取到的Ai和Mi,和监测程序中在上一时间点保存的各任务累积使用的缓存历史使用空间CTi一起计算各任务在当前时间点所监测到的缓存使用空间。
[0093] 五、根据第四公式,计算各任务经过该当前时间区间后,在缓存中累积使用的缓存空间,并将该累积值存入监测程序中,结束当前时间点上的操作,并再次进入后台运行,直到下一个固定时间点等待唤醒或者该监测程序收到结束监测的命令。
[0094] 上面主要描述了一种任务缓存空间监测方法,下面将对一种任务缓存空间监测装置进行详细描述。
[0095] 图3示出了本发明实施例中一种任务缓存空间监测装置一个实施例结构图。
[0096] 本实施例中,一种任务缓存空间监测装置包括:
[0097] 访问数获取模块301,用于获取当前时间区间内所述处理器上各个任务产生对缓存的访问数和访问失效数;
[0098] 使用空间获取模块302,用于获取上一时间区间内所述各个任务累积使用的缓存历史使用空间;
[0099] 容量使用度计算模块303,用于根据所述缓存历史使用空间计算当前时间区间内所述缓存的容量使用度;
[0100] 缓存使用空间计算模块304,用于根据所述缓存历史使用空间、计算得到的所述容量使用度、得到的所述各个任务的所述访问数和访问失效数分别计算当前时间区间内所述各个任务的缓存使用空间;
[0101] 输出模块305,用于输出计算得到的所述各个任务的缓存使用空间。
[0102] 进一步地,所述缓存使用空间计算模块可以包括:
[0103] 第一计算单元,用于若U小于α,则通过预设的第一公式计算当前时间区间内所述各个任务的缓存使用空间,所述第一公式为:
[0104] 第二计算单元,用于若U大于等于α,则通过预设的第二公式计算当前时间区间内所述各个任务的缓存使用空间,所述第二公式为:
[0105] 其中,上述的Ti(j)为当前时间区间内所述各个任务的缓存使用空间,α为预设的使用度阈值,U为所述容量使用度,i为所述各个任务的标号,Mi为所述各个任务访问失效数,Ai为所述各个任务的访问数,j为当前时间区间,j-1为上一时间区间,CTi(j-1)为在上一时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,C为所述缓存的总容量。
[0106] 进一步地,所述容量使用度计算模块可以包括:
[0107] 第三公式计算单元,用于通过预设的第三公式计算当前时间区间内所述缓存的容量使用度,所述第三公式为: 其中,CTi为所述各个任务在上一时间区间内累积使用的缓存历史使用空间。
[0108] 进一步地,所述任务缓存空间监测装置还可以包括:
[0109] 历史使用空间计算模块,用于根据当前时间区间内所述各个任务的缓存使用空间,计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间。
[0110] 进一步地,所述历史使用空间计算模块可以包括:
[0111] 第四公式计算单元,用于通过预设的第四公式计算在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,所述第四公式为: CTi(j)为在当前时间区间之前N个时间区间内所述各个任务的缓存历史使用空间,βj为与当前时间区间对应的预设的权重值。
[0112] 进一步地,上述的α、βj和N可以通过以下模块预先得到:模拟训练模块,用于通过缓存访问模拟器在与所述缓存相同的缓存环境下输入预设的训练数据进行模拟训练得到α、βj和N。
[0113] 进一步地,所述任务缓存空间监测装置还可以包括:
[0114] 触发判断模块,用于判断预设的触发事件是否被触发;
[0115] 中断模块,用于若所述触发判断模块的判断结果为是,则向所述处理器引发一个中断,然后触发所述访问数获取模块。
[0116] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0117] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0118] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0119] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0120] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0121] 以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。