一种构建内存访问模型的方法及装置的制作方法

文档序号:6359097阅读:179来源:国知局
专利名称:一种构建内存访问模型的方法及装置的制作方法
技术领域
本发明涉及计算机领域,特别涉及一种构建内存访问模型的方法及装置。
背景技术
随着计算机技术的日新月异的发展,处理器的速度和内存访问速度的差距越来越大,内存系统成为性能的瓶颈,因此针对内存系统亟需优化。其中,如果能够构建出应用程序的内存访问模型,就可以根据构建的内存访问模型提出合适的内存系统的优化方法,从而可以对内存系统进行优化。目前,现有技术存在一种构建内存访问模型的方法,具体为在计算机系统上,实时监听应用程序,如果监听出应用程序访问内存,则获取应用程序每次访问内存时的内存访问地址,将获取的内存访问地址存储在内存中指定的区域内,然后再根据指定的区域内存储的内存访问地址构建应用程序的内存访问模型。其中,当构建出应用程序的内存访问模型后就可以根据构建的内存访问模型对内存系统提出合适的优化方法。其中,现有技术在构建内存访问模型时,需将应用程序每次访问内存时的内存访问地址存储在内存中指定的区域内,如此会消耗大量的内存,将会产生内存资源紧张,从而影响系统性能,甚至造成系统崩溃。

发明内容
为了减少内存消耗和系统性能的影响以及避免造成系统崩溃,本发明实施例提供了一种构建内存访问模型的方法及装置。所述技术方案如下一种构建内存访问模型的方法,所述方法包括获取引用内存块的进程对应的页表,并将所述页表中存储的每个页表项所包括的 I^esent (当前)位清零,所述页表用于存储引用所述内存块的进程所要访问的页的页表项;对引用所述内存块的进程进行实时监听并开始计时;如果引用所述内存块的进程访问所述内存块中的页时产生缺页中断事件,则增加所述访问的页的访问次数;其中,所述缺页中断事件为引用所述内存块的进程判断出所述访问的页的页表项包括的Present位被清零时产生的,所述访问的页的页表项为引用所述内存块的进程从其对应的页表中获取得到的;根据所述内存块中的每个页的访问次数和计时的时间构建所述内存块的内存访问模型,所述内存访问模型至少包括所述内存块中的每个页的访问次数和访问频率。。一种构建内存访问模型的方法,所述方法包括获取目标进程对应的页表,并将所述页表中存储的每个页表项所包括的Present 位清零,所述页表用于存储所述目标进程所要访问的页的页表项;对所述目标进程进行实时监听并开始计时;如果所述目标进程访问待访问的页时产生缺页中断事件,则增加所述待访问的页
9的访问次数;其中,所述缺页中断事件为所述目标进程判断所述待访问的页的页表项包括的I^esent位被清零时产生的,所述待访问的页的页表项为所述目标进程从其对应的页表中获取得到的;根据所述目标进程所访问的每个页的访问次数和计时的时间构建所述目标进程的内存访问模型,所述内存访问模型至少包括所述目标进程所访问的每个页的访问次数和访问频率。一种构建内存访问模型的装置,所述装置包括第一获取模块,用于获取引用内存块的进程对应的页表,并将所述页表中存储的每个页表项所包括的I^esent位清零,所述页表用于存储引用所述内存块的进程所要访问的页的页表项;第一监听模块,用于对引用所述内存块的进程进行实时监听并开始计时;第一增加模块,用于如果引用所述内存块的进程访问所述内存块中的页时产生缺页中断事件,则增加所述访问的页的访问次数;其中,所述缺页中断事件为引用所述内存块的进程判断出所述访问的页的页表项包括的I^esent位被清零时产生的,所述访问的页的页表项为引用所述内存块的进程从其对应的页表中获取得到的;第二获取模块,用于根据所述内存块中的每个页的访问次数和计时的时间构建所述内存块的内存访问模型,所述内存访问模型至少包括所述内存块中的每个页的访问次数和访问频率。一种构建内存访问模型的装置,所述装置包括第五获取模块,用于获取目标进程对应的页表,并将所述页表中存储的每个页表项所包括的!^resent位清零,所述页表用于存储所述目标进程所要访问的页的页表项;第二监听模块,用于对所述目标进程进行实时监听并开始计时;第二增加模块,用于所述目标进程访问待访问的页时产生缺页中断事件,则增加所述待访问的页的访问次数;其中,所述缺页中断事件为所述目标进程判断所述待访问的页的页表项包括的!^resent位被清零时产生的,所述待访问的页的页表项为所述目标进程从其对应的页表中获取得到的;第六获取模块,用于根据所述目标进程所访问的每个页的访问次数和计时的时间构建所述目标进程的内存访问模型,所述内存访问模型至少包括所述目标进程所访问的每个页的访问次数和访问频率。在本发明中,获取引用内存块的进程对应的页表并将获取的页表中的每个页表项包括的!^resent位清零,对引用该内存块的进程进行实时监听并开始计时,如果引用该内存地块的进程访问页时产生缺页中断事件,则增加访问的页的访问次数,根据该内存块中的每个页的访问次数和计时的时间构建该内存块的内存访问模型;或者,获取目标进程对应的页表,将获取的页表中的每个页表项包括的I^esent位清零,对该目标进程进行实时监听并开始计时,如果目标进程访问内存的页时产生缺页中断事件,则增加访问的页的访问次数,根据目标进程所访问的页的访问次数和计时的时间构建目标进程的内存访问模型,如此在构建该内存块的内存访问模型时不需要记录引用该内存块的每个进程访问该内存块的内存访问地址;或者在构建目标进程的内存访问模型时不需要记录目标进程访问内存的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。3/16 页


图1是本发明实施例图2是本发明实施例图3是本发明实施例图4是本发明实施例图5是本发明实施例图6是本发明实施例图7是本发明实施例
1提供的一种构建内存访问模型的方法流程图 2提供的一种构建内存访问模型的方法流程图 3提供的一种构建内存访问模型的方法流程图 4提供的一种构建内存访问模型的方法流程图 5提供的一种构建内存访问模型的方法流程图 6提供的一种构建内存访问模型的装置示意图 7提供的一种构建内存访问模型的装置示意图,
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例1如图1所示,本发明实施例提供了一种构建内存访问模型的方法,包括步骤101 获取引用内存块的进程对应的页表,并将获取的页表中存储的每个页表项所包括的Present位清零;其中,页表用于存储引用该内存块的进程所要访问的页的页表项。步骤102 对引用该内存块的进程进行实时监听并开始计时;步骤103 如果引用该内存块的进程访问该内存块中的页时产生缺页中断事件, 则增加访问的页的访问次数;其中,该缺页中断事件为引用该内存块的进程判断出访问的页的页表项包括的 Present位被清零时产生的,访问的页的页表项为引用该内存块的进程从其对应的页表中获取得到的。步骤104 根据该内存块中的每个页的访问次数和计时的时间构建该内存块的内存访问模型,内存访问模型至少包括该内存块中的每个页的访问次数和访问频率。在本发明实施例中,获取引用内存块的进程对应的页表并将获取的页表中的每个页表项包括的I^esent位清零,对引用该内存块的进程进行实时监听并开始计时,如果引用该内存块的进程访问页时产生缺页中断事件,则增加访问的页的访问次数,根据该内存块中的每个页的访问次数和计时的时间构建该内存块的内存访问模型,如此在构建该内存块的内存访问模型时不需要记录引用该内存块的每个进程访问内存的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。实施例2如图2所示,本发明实施例提供了一种构建内存访问模型的方法,包括步骤201 对节点的内存进行划分,将节点的内存划分成多个内存段;其中,可以通过预设的划分策略将节点的内存划分成多个内存段,预设的划分策略可以包括将节点的内存划分成等大小的多个内存段。其中,计算机系统中包括多个节点,且每个节点至少包括CPU (Central Processing Unit,中央处理器)和内存,对于任一个节点,该节点内的CPU等设备访问该节
11点内的内存称为访问本地内存,在计算机系统中,该节点以外的其他节点访问该节点内的内存称为远端节点访问该内存。步骤202 对于任一个内存段,通过该节点对应的互联芯片实时监听该内存段并开始计时,如果监听出存在远端节点(除该节点以外的其他节点)访问该内存段,则增加该内存段被远端节点访问的次数;其中,每个节点都有对应的互联芯片,对于任一个节点,如果存在远端节点需要访问该节点的内存,则远端节点需要通过该节点的互联芯片访问该节点的内存;因此,在本实施例中,可以通过该节点对应的互联芯片监听是否存在远端节点访问该节点中的内存段。其中,互联芯片中包括多个计时器和多个计数器,在本实施例中,可以在互联芯片包括的多个计时器和多个计数器中为该内存段选择对应的一个计时器和计数器,该计时器用于计时,该计数器用于统计该内存段被远端节点访问的次数,即如果互联芯片监听出存在远端节点访问该内存段,则通过增加该计数器的值来实现增加该内存段被远端节点访问的次数。另外,该计数器的初值可以为0等,增加该内存段被远端节点访问的次数可以为1 等,在本实施例中,对二者的具体取值不做限定。步骤203 根据该内存段被远端节点访问的次数和计时的时间,计算出该内存段被远端节点访问的访问频率;其中,可以周期性地计算出该内存段被远端节点访问的访问频率。具体地,从该内存段对应的计时器中读取计时的时间,从该内存段对应的计数器中读取该内存段被远端节点访问的次数,将该内存段被远端节点访问的次数与计时的时间做比值运算,得到该内存段被远端节点访问的访问频率。其中,在本实施例中,可以从该节点对应的互联芯片中为该节点包括的每个内存段选择对应的一个计时器和计数器,如此可以通过互联芯片实时监听该节点包括的每个内存段,从而得到每个内存段被远端节点访问的次数,然后再周期性地计算出每个内存段被远端节点访问的访问频率。步骤204 判断该内存段被远端节点访问的次数是否超过第一阈值以及该内存段被远端节点访问的访问频率是否超过第二阈值,如果该内存段被远端节点访问的次数超过第一阈值且该内存段被远端节点访问的访问频率超过第二阈值,则执行步骤205 ;其中,如果该内存段被远端节点访问的次数没有超过第一阈值或该内存段被远端节点访问的访问频率没有超过第二阈值,则继续实时监听是否有远端节点访问该内存段。步骤205 对该内存段进行划分,将该内存段划分成多个内存块;其中,可以通过预设的划分策略对该内存段进行划分,将该内存段划分成多个内存块。步骤206 对于任一个内存块,通过互联芯片实时监听该内存块并开始计时,如果监听出存在远端节点访问该内存块,则增加该内存块被远端节点访问的次数;其中,在本实施例中,可以在互联芯片剩余的计数器和计时器中为每个内存块选择对应的计数器和计时器,每个计数器用于统计其自身对应的内存块被远端节点访问的次数,即对于任一个内存块,如果监听出存在远端节点访问该内存块,则通过增加该内存块对应的计数器的值来实现增加该内存块被远端节点访问的次数。 步骤207 根据该内存块被远端节点访问的次数和计时的时间,计算出该内存块被远端节点访问的访问频率;其中,可以周期性地计算出该内存块被远端节点访问的访问频率。具体地,将该内存块被远端节点访问的次数与计时的时间做比值运算,得到该内存块被远端节点访问的访问频率。其中,在本实施例中,可以按上述206和207的步骤计算出每个内存块的被远端节点访问的访问频率。步骤208 判断该内存块被远端节点访问的次数是否超过第三阈值以及该内存块被远端节点访问的访问频率是否超过第四阈值,如果该内存段被远端节点访问的次数超过第三阈值且该内存段被远端节点访问的访问频率超过第四阈值,则执行步骤209 ;其中,如果该内存块被远端节点访问的访问次数没有超过第三阈值或该内存块被远端节点访问的访问频率没有超过第四阈值,则继续实时监听是否有远端节点访问该内存块。其中,第三阈值可以等于、大于或小于第一阈值,第四阈值可以等于、大于或小于
第二阈值。其中,在本实施例中,如果该内存块被远端节点访问的次数超过第三阈值且该内存块被远端节点访问的访问频率超过第四阈值,则可以为该内存块建立对应的一个统计线程,并通过该统计线程来执行如下的步骤。步骤209 通过反向映射的方法,获取到引用该内存块的所有进程,并获取每个进程对应的页表,每个进程对应的页表用于存储每个进程所要访问的页的页表项,页的页表项至少包括页的页表项信息和页的Present位;其中,内存的最小单位为页,每个内存块包括一个或多个页,访问内存的每个进程对应一个页表,页表中存储进程所要访问的页的页表项;其中,页表中的每个页表项包括一个!^resent位和页表项信息,如果某个页有效,则该页的页表项中包括的!^resent位被置位,且进程可以访问该页,如果某个页无效,则该页的页表项中包括的!^resent位被清零, 且进程无法直接访问该页。步骤210 在节点的内存中申请一块内存区域,将获取的页表中的每个页表项包括的!^resent位存储在该内存区域中;具体地,在节点的内存中划分一块内存区域,对于获取的任一个页表,获取该页表对应的进程的进程号,根据该页表中的每个页表项在页表中的序号、获取的进程号和该内存区域的起始地址通过预设的计算模型计算出在该内存区域中存储每个页表项中包括的 Present位的内存地址,根据存储每个页表项中包括的Present位的内存地址将该页表中的每个页表项包括的I^esent位存储到该内存区域中。其中,对于获取的其他每个页表,按上述相同的方法将其他每个页表中的每个页表项包括的!^resent位存储在该内存区域中。其中,预设的计算模型可以如公式(1)所示,Memoryaddress为内存地址, Startaddress为内存区域的起始地址,ProcessID为进程号,element为系数以及number 为页表项在页表中的序号。Memoryaddress = Startaddress+ProcessID X element+number......(1)。步骤211 在获取的页表中将每个页表项包括的Present位清零;其中,当进程需要访问内存的某个页时,该进程先从其自身对应的页表中获取所要访问页对应的页表项,对获取的页表项包括的I^esent位进行判断,如果获取的页表项包括的!^resent位被置位,则该进程根据获取的页表项包括所需要访问页的页表项信息获取所需要访问页的起始地址,根据获取的起始地址从内存中寻找出所需要访问的页,然后在寻找的页中进行数据的读写操作以实现访问所需要访问的页;如果获取的页表项包括的 Present位被清零,则该进程会产生缺页中断事件。其中,对于任一个进程,无法监测到该进程访问内存中的页的过程,但可以检测出该进程产生的缺页中断事件;如果该进程从其自身对应的页表中获取所需要访问页的页表项中包括的I^esent位被清零,则该进程会产生缺页中断事件,可以检测到该进程产生的缺页中断事件,并据此确定出该进程访问内存中的页。因此,在本实施例中,在引用该内存块的每个进程对应的页表中,将每个页的页表项包括的I^esent位全部清零,如此当引用该内存块的进程访问该内存块中的页时就会产生缺页中断事件,并检测到该进程产生的缺页中断事件,然后据此确定出该进程访问该内存块中的页。步骤212 实时监听引用该内存块的进程并开始计时,如果存在引用该内存块的进程访问该内存块中的页时产生缺页中断事件,增加该进程所访问的页的次数;具体地,实时监听引用该内存块的进程并开始计时,如果监听出存在引用该内存块的进程访问该内存块中的页时产生的缺页中断事件,其中,缺页中断事件是该进程判断出访问的页的页表项包括的I^esent位被清零时产生的,访问的页的页表项为该进程从其自身对应的页表中获取得到的,获取访问的页的页表项包括的页表项信息,根据该页表项信息获取访问的页的起始地址,并根据获取的起始地址确定出访问的页,并增加访问的页的访问次数。其中,在本实施例中,可以为该内存块设置对应的计时器以及为该内存块包括的每个页设置对应的一个计数器,每个页对应的计数器用于统计其自身对应的页的访问次数,即通过增加某个页对应的计数器的值来实现增加该页的访问次数;由于该内存块中包括的页的数目可能较多,因此该内存块中包括的每个页对应的计数器都是采用软件的形式来实现统计每个页的访问次数。其中,在本实施例中,由于对引用该内存块中的所有进程进行监控,从而可以统计出该内存块中的每个页的访问次数。进一步地,为了保证该进程能够正常访问所访问的页,在本实施例中,当增加该进程所访问的页的次数之后,还可以执行如下(1)-03)的步骤,分别为(1):从该内存区域中获取该进程所访问的页的!^resent位,根据获取的!^resent 位判断该进程所访问的页在节点的内存中是否有效,如果有效,则执行O);具体地,根据该进程的进程号、该进程所访问的页的页表项在页表中的序号和该内存区域的起始地址并通过预设的计算模型计算出内存地址,根据计算的内存地址从该内存区域中对应的空间中读取该进程所访问的页的!^resent位,对获取的!^resent位进行判断,如果获取的I^esent位被置位,则判断出该进程所要访问的页有效,如果获取的 I^esent位被清零,则判断出该进程所访问的页无效。其中,如果判断出该进程所访问的页无效,则需要触发缺页异常处理程序,并由触发的缺页异常处理程序进行异常处理。(2)在该进程对应的页表中将该进程所访问的页的页表项包括的!^resent位置
14位,并触发该进程重新访问所访问的页;其中,该进程被触发后,从自身对应的页表中获取其自身所访问的页的页表项,并对获取的页表项中包括的!^resent位进行判断,且判断出获取的页表项包括的!^resent位被置位,然后再根据获取的页表项中包括的页表项信息获取所要访问页的起始地址,根据获取的起始地址从该内存块中寻找出对应的页,并在寻找的页中进行数据的读写操作,如此该进程实现访问所访问的页。(3)当该进程访问完所访问的页,在该进程对应的页表中将该进程所访问的页的页表项中包括的I^resent位清零。步骤213 根据该内存块中的每个页的访问次数和计时的时间,构建该内存块的内存访问模型,内存访问模型至少包括该内存块中的每个页的访问频率和访问次数。其中,可以周期性地构建内存访问模型。具体地,分别将该内存块中的每个页的访问次数与计时的时间做比值运算,得到该内存块包括的每个页的访问频率,如此得到该内存块的内存访问模型至少包括该内存块中的每个页的访问频率和访问次数。在本发明实施例中,获取到远端节点访问的次数超过第三阈值以及远端节点访问的访问频率超过第四阈值的内存块,获取引用该内存块的进程对应的页表并将获取的页表中的每个页表项的I^esent位清零,对引用该内存块的进程进行实时监听并开始计时,如果监听出存在引用该内存块的进程访问页时产生的缺页中断事件,则增加访问的页的访问次数,根据该内存块中的每个页的访问次数和计时的时间构建内存访问模型,如此在构建内存访问模型时不需要记录引用该内存块的每个进程访问该内存块的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。实施例3如图3所示,本发明实施例提供了一种构建内存访问模型的方法,包括步骤301 通过预设的划分策略对节点的内存进行划分,将节点的内存划分成多个内存块;步骤302 针对任一个内存块,通过反向映射的方法,获取到引用该内存块的所有进程,并获取每个进程对应的页表,每个进程对应的页表用于存储每个进程所要访问的页的页表项,页的页表项至少包括页的页表项信息和页的!^resent位;其中,内存的最小单位为页,每个内存块包括一个或多个页,访问内存的每个进程对应一个页表,页表中存储每个进程所要访问的页的页表项;其中,页表中的每个页表项包括一个!^resent位和页表项信息,如果某个应页有效,则该页的页表项中包括的Present位被置位,且进程可以访问该页,如果某个页无效,则该页的页表项中包括的!^resent位被清零,且进程无法直接访问该页。步骤303 在节点的内存中申请一块内存区域,将获取的页表中的每个页表项包括的!^resent位存储在该内存区域中;具体地,在节点的内存中划分一块内存区域,对于获取的任一个页表,获取该页表对应进程的进程号,根据该页表中的每个页表项在页表中的序号、获取的进程号和该内存区域的起始地址通过预设的计算模型计算出在该内存区域中存储该页表中的每个页表项包括的!^resent位的内存地址,根据存储每个页表项包括的!^resent位的内存地址将该页表中的每个页表项包括的Present位存储在对应的内存空间中。其中,对于获取的其他每个页表,按上述相同的方法将其他每个页表中的每个页表项包括的!^resent位存储在该内存区域中。步骤304 在获取的页表中将每个页的页表项包括的Present位清零;其中,当进程需要访问内存的某个页时,该进程先从其自身对应的页表中获取所要访问页对应的页表项,对获取的页表项包括的Present位进行判断,如果获取的页表项包括的Present位被置位,则该进程根据获取的页表项包括所需要访问页的页表项信息获取所需要访问页的起始地址,根据获取的页的起始地址从内存中寻找出所需要访问的页, 然后在寻找的页中进行数据的读写操作以实现访问所需要访问的页;如果获取的页表项包括的I^esent位被清零,则该进程会产生缺页中断事件。其中,在本实施例中,在引用该内存块的每个进程对应的页表中,将每个页的页表项包括的I^esent位全部清零,如此当引用该内存块的进程访问该内存块中的页时就会产生缺页中断事件,并检测到该进程产生的缺页中断事件,然后据此确定出该进程访问该内存块中的页。步骤305 实时监听引用该内存块的进程并开始计时,如果存在引用该内存块的访问该内存块中的页时产生的缺页中断事件,增加该进程所访问的页的次数;具体地,实时监听引用该内存块的进程并开始计时,如果监听出存在引用该内存块的进程访问该内存块中的页时产生的缺页中断事件,其中,该进程判断出访问的页的页表项包括的I^esent位被清零时产生的,访问的页的页表项为该进程从其自身对应的页表中获取得到的,获取访问的页的页表项包括的页表项信息,根据该页表项信息获取该进程所访问页的起始地址,并根据获取的起始地址确定出对应的页,并增加确定的页的访问次数。其中,在本实施例中,可以为该内存块设置对应的计时器以及为该内存块包括的每个页设置对应的一个计数器,每个页对应的计数器用于统计其自身对应的页的访问次数,即通过增加某个页对应的计数器的值来实现增加该页的访问次数;由于该内存块中包括的页的数目可能较多,因此该内存块中包括的每个页对应的计数器都是采用软件的形式来实现统计每个页的访问次数。其中,在本实施例中,由于对引用该内存块中的所有进程进行监控,从而可以统计出该内存块中的每个页的访问次数。进一步地,为了保证该进程能够正常访问所访问的页,本实施例中,当增加该进程所访问的页的次数之后,还可以执行如下(a)-(c)的步骤,分别为(a)从该内存区域中获取该进程所访问的页的!^resent位,根据获取的!^resent 位判断该进程所访问的页在内存中是否有效,如果有效,则执行步骤(b);具体地,根据该进程的进程号、该进程所访问的页的页表项在页表中的序号和该内存区域的起始地址并通过预设的计算模型计算出内存地址,根据计算的内存地址从该内存区域中对应的空间中读取该进程所访问的页的!^resent位,对获取的!^resent位进行判断,如果获取的I^esent位被置位,则判断出该进程所要访问的页有效,如果获取的 Present位被清零,则判断出该进程所要访问的页无效。其中,如果判断出该进程所要访问的页无效,则需要触发缺页异常处理程序,并由触发的缺页异常处理程序进行异常处理。
(b)在该进程对应的页表中将该进程所要访问的页的页表项包括的!^resent位置位,并触发该进程重新访问所要访问的页;其中,该进程被触发后,从自身对应的页表中获取其自身所需要访问的页的页表项,并对获取的页表项中包括的!^resent位进行判断,且判断出获取的页表项包括的 Present位被置位,然后再根据获取的页表项中包括的页表项信息获取所要访问页的起始地址,根据获取的起始地址从该内存块中寻找出对应的页,并在寻找的页中进行数据的读写操作,如此该进程实现访问所要访问的页。(C)当该进程访问完所要访问的页,在该进程对应的页表中将该进程所要访问的页的页表项中包括的I^resent位清零。步骤306 根据该内存块中的每个页的访问次数和计时的时间,构建该内存块的内存访问模型,内存访问模型至少包括该内存块中的每个页的访问频率和访问次数。具体地,分别将该内存块中的每个页的访问次数与计时的时间做比值运算,得到该内存块包括的每个页的访问频率,如此得到该内存块的内存访问模型至少包括该内存块中的每个页的访问频率和访问次数。在本发明实施例中,获取引用内存块的进程对应的页表并将获取的页表中的每个页表项的!^resent位清零,对引用该内存块的进程进行实时监听并开始计时,如果监听出存在引用该内存块的进程访问页时产生的缺页中断事件,则增加访问的页的访问次数,根据该内存块中的每个页的访问次数和计时的时间构建该内存块的内存访问模型,如此在构建内存访问模型时不需要记录引用该内存块的每个进程访问该内存块的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。实施例4如图4所示,本发明实施例提供了一种构建内存访问模型的方法,包括步骤401 获取目标进程对应的页表,并将该页表中存储的每个页表项所包括的 Present位清零,页表用于存储目标进程所要访问的页的页表项;步骤402 对目标进程进行实时监听并开始计时;步骤403 如果述目标进程访问待访问的页时产生缺页中断事件,则增加待访问的页的访问次数;其中,该缺页中断事件为目标进程判断待访问的页的页表项包括的Present位被清零时产生的,待访问的页的页表项为目标进程从其对应的页表中获取得到的。步骤404:根据目标进程所访问的每个页的访问次数和计时的时间构建目标进程的内存访问模型,内存访问模型至少包括目标进程所访问的每个页的访问次数和访问频率。在本发明实施例中,获取目标进程对应的页表并将该页表中的每个页表项包括的 I^esent位清零,对目标进程进行实时监听并开始计时,如果目标进程访问待访问的页时产生缺页中断事件,则增加待访问的页的访问次数,根据目标进程所访问的每个页的访问次数和计时的时间构建目标进程的内存访问模型,如此在构建目标进程的内存访问模型时不需要记录目标进程访问内存的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。实施例5
如图5所示,本发明实施例提供了一种构建内存访问模型的方法,包括步骤501 当节点中的目标进程被调度到该节点中的处理器时,将目标进程访问本地内存的次数以及访问远端节点内存的次数加载到该处理器的统计计数寄存器中;其中,目标进程的上下文信息中包括目标进程访问本地内存的次数和目标进程访问远端节点内存的次数。具体地,当节点中的进程被调度到该节点的处理器中时,从目标进程的上下文信息中提取目标进程访问本地内存的次数和访问远端节点内存的次数,将提取目标进程访问本地内存的次数和访问远端节点内存的次数加载到该处理器的统计计数寄存器中。其中,该处理器中包括多个计数器,进一步地,从该处理器包括的多个计数器中选择两个计数器,分别为第一计数器和第二计数器,将第一计数器的初值设置为目标进程访问本地内存的次数,将第二计数器的初值设置为目标进程访问远端节点内存的次数。其中,计算机系统中包括多个节点,节点至少包括处理器和内存,该节点中的处理器在运行目标进程时,目标进程需要访问该节点的内存即为目标进程访问本地内存,目标进程需要访问计算机系统中的其他节点的内存即为目标进程访问远端节点内存。步骤502 通过该处理器对目标进程进行实时监听,如果监听出目标进程访问本地内存,则增加目标进程访问本地内存的次数,如果监听出目标进程访问远端节点内存,则增加目标进程访问远端节点内存的次数;其中,可以通过增加第一计数器的值来实现增加目标进程访问本地内存的次数, 以及通过增加第二计数器的值来实现增加目标进程访问远端节点内存的次数。其中,当该处理器在运行目标进程时,如果目标进程需要访问本地内存,则目标进程会调用访问本地内存事件,如果目标进程需要访问远端节点内存,则目标进程会调用访问远端节点内存事件;因此可以通过该处理器实时监听到目标进程是否访问本地内存和远端节点内存。其中,当目标进程被处理器调度后,处理器在每个时间片中为目标进程分配运行时间,然后在每个时间片中处理器在为目标进程分配的运行时间内运行目标进程。其中,当目标进程被调离处理器时,可以将目标进程的上下文信息中包括目标进程访问本地内存的次数和目标进程访问远端节点内存的次数分别更新为增加后的目标进程访问本地内存的次数和目标进程访问远端节点内存的次数。步骤503 当一个时间片结束时,获取目标进程被调度后运行的实际运行时间;具体地,获取目标进程被调度到处理器后经过的时间片,将目标进程在获取的每个时间片内的运行时间进行累加得到目标进程的实际运行时间。步骤504 根据增加后的目标进程访问本地内存的次数和访问远端节点内存的次数以及统计计数寄存器中存储的目标进程访问本地内存的次数和访问远端节点的内存的次数获取目标进程在实际运行时间内访问本地内存的次数和远端节点内存的次数;其中,可以从第一计数器中读取目标进程访问本地内存的次数,从第二计数器中读取目标进程访问远端节点内存的次数。具体地,根据目标进程访问本地内存的次数和统计计数寄存器中存储目标进程访问本地内存的次数计算出目标进程在实际运行时间内访问本地内存的次数,根据目标进程访问远端节点内存的次数和统计计数寄存器存储目标进程访问远端节点内存的次数计数出目标进程在实际运行时间内访问远端节点内存的次数。
步骤505 根据目标进程在实际运行时间内访问本地内存的次数和访问远端节点内存的次数以及实际运行时间计算出目标进程的远近端访问比率和访问频率;具体地,计算出目标进程在实际运行时间内访问本地内存的次数与访问远端节点内存的次数的比值,将计算出的比值作为目标进程的远近端访问比率,根据目标进程在实际运行时间内访问本地内存的次数和访问远端节点内存的次数计数出目标进程的访问次数,根据目标进程的访问次数和实际运行时间计算出目标进程的访问频率。步骤506 对目标进程的远近端访问比率和访问频率进行判断,如果目标进程的远近端访问比率超过第一阈值且目标进程的访问频率超过预设的第六阈值,则执行步骤 507 ;其中,如果目标进程的远近端访问比率没有超过第五阈值或目标进程的访问频率没有超过第六阈值,则继续执行503。步骤507 获取目标进程对应的页表,目标进程对应的页表用于存储目标进程所要访问的页的页表项,页的页表项至少包括页的页表项信息和!^resent位;其中,内存的最小单位为页,每个进程对应一个页表,页表中存储进程所要访问页的页表项;其中,内存中的每个页对应一个!Resent位,如果某个页有效,则该页对应的 Present位被置位,且进程可以访问该页,如果某个页无效,则该页对应的Present位被清零,且进程无法直接访问该页。步骤508 在节点的内存中申请一块内存区域,将获取的页表存储的每个页的页表项中包括的!^resent位存储在该内存区域中;具体地,在节点的内存中划分一块内存区域,获取目标进程的进程号,根据该页表中的每个页表项在页表中的序号、获取的进程号和该内存区域的起始地址通过预设的计算模型计算出在该内存区域中存储该页表中的每个页表项包括的I^esent位的内存地址,根据存储该页表中的每个页表项包括的Present位的内存地址将该页表中的每个页表项包括的!^resent位存储在该内存区域中。步骤509 将获取的页表中的每个页表项中包括的!^resent位清零;其中,当目标进程访问内存的某个页时,目标进程首先在其对应的页表中获取其自身所要访问页的页表项,并对获取的页表项中包括的I^esent位进行判断,由于目标进程对应的页表中存储的每个页的Present位被清零,所以目标进程判断出获取的页表项中包括的Present位被清零,然后目标进程产生缺页中断事件。步骤510 实时监听目标进程并开始计时,如果目标进程访问待访问的页时产生缺页中断事件,则增加目标进程访问待访问的页的访问次数;具体地,实时监听目标进程并开始计时,如果监听出目标进程访问内存中待访问的页时产生的缺页中断事件,其中,所述缺页中断事件为目标进程判断待访问的页的页表项包括的Present位被清零时产生的,待访问的页的页表项为目标进程从其对应的页表中获取得到的,获取待访问的页的页表项,根据该页表项包括待访问的页的页表项信息获取待访问的页的起始地址,根据获取的起始地址确定出待访问的页,并增加待访问的页的访问次数。进一步地,为了保证目标进程能够正常访问待访问的页,本实施例中,当增加目标进程访问待访问的页的次数之后,还可以执行如下(A)-(C)的步骤,分别为
(A):从该内存区域中获取待访问的页的!^resent位,根据待访问的页的!^resent 位判断待访问的页在内存中是否有效,如果有效,则执行步骤513 ;具体地,根据目标进程的进程号、待访问的页的页表项在页表中的序号和该内存区域的起始地址并通过预设的计算模型计算出内存地址,根据计算的内存地址从该内存区域中读取待访问的页的Present位,对获取的Present位进行判断,如果获取的Present位被置位,则判断出待访问的页有效,如果获取的I^esent位被清零,则判断出待访问的页无效。其中,如果判断出待访问的页无效,则需要触发缺页异常处理程序,并由触发的缺页异常处理程序进行异常处理。(B)在目标进程对应的页表中将待访问的页的页表项包括的Present位置位,并触发目标进程重新访问待访问的页;其中,目标进程被触发后,从自身对应的页表中获取待访问的页的页表项,并对获取的页表项中包括的!^resent位进行判断,且判断出获取的页表项包括的!^resent位被置位,然后再根据获取的页表项中包括待访问的页的页表项信息获取待访问的页的起始地址,根据获取的起始地址从节点的内存中寻找出对应的页,并在寻找的页中进行数据的读写操作,如此目标进程实现访问待访问的页。(C):当目标进程访问完待访问的页,在目标进程对应的页表中将待访问的页的页表项中包括的I^resent位清零。步骤511 根据目标进程访问的每个页的访问次数和计时的时间,构建目标进程的内存访问模型,至少包括目标进程访问的每个页的访问次数和访问频率。其中,可以周期性地构建内存访问模型,具体地,分别将目标进程访问的每个页的访问次数与计时的时间做比值运算,得到目标进程访问的每个的访问频率,如此得到目标进程的内存访问模型,至少包括目标进程访问的每个页的访问次数和访问频率。进一步地,内存访问模型还可以包括目标进程的远近端访问比率。在本发明实施例中,获取目标进程对应的页表并将该页表中的每个页表项的 I^esent位清零,对目标进程进行实时监听并开始计时,如果监听出目标进程访问待访问的页时产生的缺页中断事件,则增加待访问的页的访问次数,根据目标进程所访问的每个页的访问次数和计时的时间构建目标进程的内存访问模型,如此在构建目标进程的内存访问模型时不需要记录目标进程访问内存的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。实施例6如图6所示,本发明实施例提供了一种构建内存访问模型的装置,包括第一获取模块601,用于获取引用内存块的进程对应的页表,并将获取的页表中存储的每个页表项所包括的I^esent位清零,页表用于存储引用该内存块的进程所要访问的页的页表项;第一监听模块602,用于对引用该内存块的进程进行实时监听并开始计时;第一增加模块603,用于如果监听出引用该内存块的进程访问该内存块中的页时产生缺页中断事件,则增加访问的页的访问次数;其中,缺页中断事件为引用该内存块的进程判断出访问的页的页表项包括的!^resent位被清零时产生的,访问的页的页表项为引用该内存块的进程从其对应的页表中获取得到的;第二获取模块604,用于根据该内存块中的每个页的访问次数和计时的时间构建该内存块的内存访问模型,内存访问模型至少包括该内存块中的每个页的访问次数和访问频率。其中,第一获取模块601包括第一获取单元,用于通过反向映射的方法,获取引用该内存块的进程并进一步获取引用该内存块的进程对应的页表;第一存储单元,用于在节点的内存中申请一块内存区域,将获取的页表中的每个页表项包括的Present位存储在内存区域中;第一清零单元,用于将获取的页表中的每个页表项包括的Present位清零。其中,第一存储单元包括第一计算子单元,用于在节点的内存中申请一块内存区域,根据引用该内存块的进程的进程号、获取的页表中的每个页表项在页表中的序号和该内存区域的起始地址, 并通过预设的计算模型计算出在该内存区域中存储获取的页表中的每个页表项包括的 Present位的存储地址;第一存储子单元,用于根据获取的页表中的每个页表项包括的!^resent位的存储地址,将获取的页表中的每个页表项包括的!^resent位存储在该内存区域中。其中,第二获取模块604,具体用于根据该内存块中的每个页的访问次数和计时的时间计算出该内存块中的每个页的访问频率,得到内存访问模型,至少包括该内存块中的每个页的访问次数和访问频率。进一步地,该装置还包括第三获取模块,用于将节点的内存划分成多个内存段,获取内存段被远端节点访问的访问次数和访问频率,远端节点为计算机系统中除该节点以外的其他节点;第一划分模块,用于如果存在被远端节点访问的访问次数超过第一阈值且被远端节点访问的访问频率超过第二阈值的内存段,则将该内存段划分成多个内存块;第四获取模块,用于获取内存块被远端节点访问的访问次数和访问频率,如果存在被远端节点的访问次数超过第三阈值且被远端节点访问的访问频率超过第四阈值的内存块,则执行获取引用该内存块的进程对应的页表的操作。其中,第三获取模块包括第一监听单元,用于将节点的内存划分成多个内存段,通过节点对应的互联芯片实时监听内存段并开始计时,如果监听出存在远端节点访问内存段,则增加该内存段被远端节点访问的访问次数;第一计算单元,用于根据该内存段被远端节点访问的访问次数和计时的时间计算出该内存段被远端节点访问的访问频率。其中,第四获取模块包括第二监听单元,用于通过节点对应的互联芯片实时监听内存块并开始计时,如果监听出存在远端节点访问内存块,则增加该内存块被远端节点访问的访问次数;第二计算单元,用于根据该内存块被远端节点访问的访问次数和计时的时间计算出该内存块被远端节点访问的访问频率。
进一步地,该装置还包括第一判断模块,用于从内存区域中获取访问的页的!^resent位,根据获取的 Present位判断访问的页在节点的内存中是否有效;第一置位模块,用于如果有效,则在该进程对应的页表中将访问的页的页表项包括的I^esent位置位,并触发引用该内存块的进程继续访问访问的页。其中,第一判断模块包括第三计算单元,用于根据引用该内存块的进程的进程号,访问的页的页表项在页表中的序号和内存区域的起始地址,并通过预设的计算模型计算出在内存区域中存储访问的页的Present位的内存地址;第一判断单元,用于根据计算出的内存地址从内存区域中读取访问的页的 Present位,如果读取的Present位被置位,则判断出访问的页有效,如果读取的Present位被清零,则判断出访问的页无效。进一步地,该装置还包括第一清零模块,用于如果引用该内存块的进程访问完访问的页时,则在引用该内存块的进程对应的页表中将访问的页的页表项包括的!^resent位清零。在本发明实施例中,获取引用内存块的进程对应的页表并将获取的页表中的每个页表项的!^resent位清零,对引用该内存块的进程进行实时监听并开始计时,如果监听出存在引用该内存块的进程访问页时产生的缺页中断事件,则增加访问的页的访问次数,根据该内存块中的每个页的访问次数和计时的时间构建该内存块的内存访问模型,如此在构建该内存块的内存访问模型时不需要记录引用该内存块的每个进程访问该内存块的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。实施例7如图7所示,本发明实施例提供了一种构建内存访问模型的装置,包括第五获取模块701,用于获取目标进程对应的页表,并将该页表中存储的每个页表项所包括的I^esent位清零,页表用于存储目标进程所要访问的页的页表项;第二监听模块702,用于对目标进程进行实时监听并开始计时;第二增加模块703,用于如果目标进程访问待访问的页时产生缺页中断事件,则增加待访问的页的访问次数;其中,缺页中断事件为目标进程判断待访问的页的页表项包括的I^esent位被清零时产生的,待访问的页的页表项为目标进程从其对应的页表中获取得到的;第六获取模块704,用于根据目标进程所访问的每个页的访问次数和计时的时间构建目标进程的内存访问模型,内存访问模型至少包括目标进程所访问的每个页的访问次数和访问频率。其中,第五获取模块701包括第二获取单元,用于获取目标进程对应的页表;第二存储单元,用于在节点的内存中申请一块内存区域,将该页表中的每个页表项包括的!^resent位存储在内存区域中;第二清零单元,用于将该页表中的每个页表项包括的Present位清零。其中,第二存储单元包括
第二计算子单元,用于在节点的内存中申请一块内存区域,根据目标进程的进程号、该页表中的每个页表项在该页表中的序号和内存区域的起始地址,并通过预设的计算模型计算出在内存区域中存储该页表中的每个页表项包括的Present位的存储地址;第二存储子单元,用于根据该页表中的每个页表项包括的I^esent位的存储地址,将该页表中的每个页表项包括的Present位存储在内存区域中。其中,第六获取模块704,具体用于根据目标进程所访问的每个页的访问次数和计时的时间,计算出目标进程所访问的每个页的访问频率,得到内存访问模型,至少包括目标进程所访问的每个页的访问次数和访问频率。进一步地,该装置还包括第七获取模块,用于当一个时间片结束时,获取目标进程的远近端访问比率和访问频率,如果目标进程的远近端访问比率超过第五阈值且目标进程的访问频率超过第六阈值,则执行获取目标进程对应的页表的操作。其中,第七获取模块包括第三获取单元,用于获取目标进程被节点的处理器调度后的实际运行时间以及在实际运行时间内目标进程访问本地内存的次数和访问远端节点内存的次数,远端节点内存为计算机系统中除该节点以外的其他节点的内存;第四获取单元,用于根据实际运行时间和在实际运行时间内目标进程访问本地内存的次数和访问远端节点内存的次数,获取目标进程的远近端访问比率和访问频率。其中,第三获取单元包括加载子单元,用于当目标进程被节点的处理器调度后,将目标进程的上下文信息中包括的访问本地内存的次数和访问远端节点内存的次数加载到处理器的统计计数寄存器中;监听子单元,用于通过处理器对目标进程进行实时监听,如果监听出目标进程访问本地内存,则增加目标进程访问本地内存的次数,如果监听出目标进程访问远端节点内存,则增加目标进程访问远端节点内存的次数;第一获取子单元,用于当时问片结束时获取目标进程被调度后的实际运行时间;第二获取子单元,用于根据增加后的目标进程访问本地内存的次数和访问远端节点内存的次数以及统计计数寄存器中存储的目标进程访问本地内存的次数和访问远端节点的内存的次数获取目标进程在实际运行时间内访问本地内存的次数和远端节点内存的次数。其中,第四获取单元包括第三计算子单元,用于计算出在实际运行时间内目标进程访问本地内存的次数与访问远端节点内存的次数的比值,将该比值作为目标进程的远近端访问比率;第四计算子单元,用于根据在实际运行时间内目标进程访问本地内存的次数和访问远端节点内存的次数计算出目标进程的访问次数;第五计算子单元,用于根据目标进程的访问次数和实际运行时间计算出目标进程的访问频率。进一步地,该装置还包括第二判断模块,用于从内存区域中获取待访问的页的!^resent位,根据待访问的页的Present位判断待访问的页在节点的内存中是否有效;第二置位模块,用于如果有效,则在目标进程对应的页表中将待访问的页的页表项包括的Present位置位,并触发目标进程继续访问待访问的页。其中,第二判断模块包括第四计算单元,用于根据目标进程的进程号,待访问的页的页表项在页表中的序号和内存区域的起始地址,并通过预设的计算模型计算出在内存区域中存储待访问的页的 Present位的内存地址;第二判断单元,用于根据计算出的内存地址从内存区域中读取待访问的页的 Present位,如果读取的Present位被置位,则判断出待访问的页有效,如果读取的Present 位被清零,则判断出待访问的页无效。进一步地,该装置还包括第二清零模块,用于如果目标进程访问完待访问的页时,则在目标进程对应的页表中将待访问的页的页表项包括的!Resent位清零。在本发明实施例中,获取目标进程对应的页表并将该页表中的每个页表项的 I^esent位清零,对目标进程进行实时监听并开始计时,如果监听出目标进程访问待访问的页时产生的缺页中断事件,则增加待访问的页的访问次数,根据目标进程所访问的每个页的访问次数和计时的时间构建目标进程的内存访问模型,如此在构建目标进程的内存访问模型时不需要记录目标进程访问内存的内存访问地址,减少内存消耗和对系统性能的影响,从而避免造成系统崩溃。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种构建内存访问模型的方法,其特征在于,所述方法包括获取引用内存块的进程对应的页表,并将所述页表中存储的每个页表项所包括的当前 Present位清零,所述页表用于存储引用所述内存块的进程所要访问的页的页表项; 对引用所述内存块的进程进行实时监听并开始计时;如果引用所述内存块的进程访问所述内存块中的页时产生缺页中断事件,则增加所述访问的页的访问次数;其中,所述缺页中断事件为引用所述内存块的进程判断出所述访问的页的页表项包括的I^esent位被清零时产生的,所述访问的页的页表项为引用所述内存块的进程从其对应的页表中获取得到的;根据所述内存块中的每个页的访问次数和计时的时间构建所述内存块的内存访问模型,所述内存访问模型至少包括所述内存块中的每个页的访问次数和访问频率。
2.如权利要求1所述的方法,其特征在于,所述获取引用内存块的进程对应的页表,并将所述页表中存储的每个页表项所包括的当前!^resent位清零,包括通过反向映射的方法,获取引用所述内存块的进程并进一步获取引用所述内存块的进程对应的页表;在节点的内存中申请一块内存区域,将所述页表中的每个页表项包括的I^esent位存储在所述内存区域中;将所述页表中的每个页表项包括的!^resent位清零。
3.如权利要求2所述的方法,其特征在于,将所述页表中的每个页表项包括的Present 位存储在所述内存区域中,包括根据引用所述内存块的进程的进程号、所述页表中的每个页表项在所述页表中的序号和所述内存区域的起始地址,并通过预设的计算模型计算出在所述内存区域中存储所述页表中的每个页表项包括的Present位的存储地址;根据所述页表中的每个页表项包括的Present位的存储地址,将所述页表中的每个页表项包括的Present位存储在所述内存区域中。
4.如权利要求1-3任一项权利要求所述的方法,其特征在于,所述获取引用内存块的进程对应的页表之前,还包括将节点的内存划分成多个内存段,获取所述内存段被远端节点访问的访问次数和访问频率,所述远端节点为计算机系统中除所述节点以外的其他节点;如果存在被远端节点访问的访问次数超过第一阈值且被远端节点访问的访问频率超过第二阈值的内存段,则将所述内存段划分成多个内存块;获取所述内存块被远端节点访问的访问次数和访问频率,如果存在被远端节点的访问次数超过第三阈值且被远端节点访问的访问频率超过第四阈值的内存块,则执行获取引用所述内存块的进程对应的页表的操作。
5.如权利要求4所述的方法,其特征在于,获取所述内存段被远端节点访问的访问次数和访问频率,包括通过所述节点对应的互联芯片实时监听所述内存段并开始计时,如果监听出存在远端节点访问所述内存段,则增加所述内存段被远端节点访问的访问次数;根据所述内存段被远端节点访问的访问次数和计时的时间计算出所述内存段被远端节点访问的访问频率。
6.如权利要求4所述的方法,其特征在于,获取所述内存块被远端节点访问的访问次数和访问频率,包括通过所述节点对应的互联芯片实时监听所述内存块并开始计时,如果监听出存在远端节点访问所述内存块,则增加所述内存块被远端节点访问的访问次数;根据所述内存块被远端节点访问的访问次数和计时的时间计算出所述内存块被远端节点访问的访问频率。
7.如权利要求1-3任一项权利要求所述的方法,其特征在于,所述增加所述访问的页的访问次数之后,还包括从内存区域中获取所述访问的页的Present位,根据所述获取的Present位判断所述访问的页在节点的内存中是否有效;如果有效,则在所述进程对应的页表中将所述访问的页的页表项包括的Present位置位,并触发引用所述内存块的进程继续访问所述访问的页。
8.如权利要求7所述的方法,其特征在于,所述从内存区域中获取所述访问的页的 I^esent位,根据所述获取的I^esent位判断所述访问的页在节点的内存中是否有效,包括根据引用所述内存块的进程的进程号,所述访问的页的页表项在页表中的序号和内存区域的起始地址,并通过预设的计算模型计算出在所述内存区域中存储所述访问的页的 Present位的内存地址;根据所述计算出的内存地址从所述内存区域中读取所述访问的页的I^esent位,如果所述读取的Present位被置位,则判断出所述访问的页有效,如果所述读取的Present位被清零,则判断出所述访问的页无效。
9.如权利要求7所述的方法,其特征在于,所述方法还包括如果引用所述内存块的进程访问完所述访问的页时,则在引用所述内存块的进程对应的页表中将所述访问的页的页表项包括的I^esent位清零。
10.一种构建内存访问模型的方法,其特征在于,所述方法包括获取目标进程对应的页表,并将所述页表中存储的每个页表项所包括的当前Present 位清零,所述页表用于存储所述目标进程所要访问的页的页表项;对所述目标进程进行实时监听并开始计时;如果所述目标进程访问待访问的页时产生缺页中断事件,则增加所述待访问的页的访问次数;其中,所述缺页中断事件为所述目标进程判断所述待访问的页的页表项包括的 Present位被清零时产生的,所述待访问的页的页表项为所述目标进程从其对应的页表中获取得到的;根据所述目标进程所访问的每个页的访问次数和计时的时间构建所述目标进程的内存访问模型,所述内存访问模型至少包括所述目标进程所访问的每个页的访问次数和访问频率。
11.如权利要求10所述的方法,其特征在于,所述获取目标进程对应的页表,并将所述页表中存储的每个页表项包括的Present位清零,包括获取所述目标进程对应的页表;在节点的内存中申请一块内存区域,将所述页表中的每个页表项包括的I^esent位存储在所述内存区域中;将所述页表中的每个页表项包括的!^resent位清零。
12.如权利要求11所述的方法,其特征在于,将所述页表中的每个页表项包括的 Present位存储在所述内存区域中,包括根据所述目标进程的进程号、所述页表中的每个页表项在所述页表中的序号和所述内存区域的起始地址,并通过预设的计算模型计算出在所述内存区域中存储所述页表中的每个页表项包括的Present位的存储地址;根据所述页表中的每个页表项包括的Present位的存储地址,将所述页表中的每个页表项包括的Present位存储在所述内存区域中。
13.如权利要求10-12任一项权利要求所述的方法,其特征在于,所述获取目标进程对应的页表之前,还包括当一个时间片结束时,获取所述目标进程的远近端访问比率和访问频率,如果所述目标进程的远近端访问比率超过第五阈值且所述目标进程的访问频率超过第六阈值,则执行获取所述目标进程对应的页表的操作。
14.如权利要求13所述的方法,其特征在于,获取所述目标进程的远近端访问比率和访问频率,包括获取所述目标进程被节点的处理器调度后的实际运行时间以及在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数,所述远端节点内存为计算机系统中除所述节点以外的其他节点的内存;根据所述实际运行时间和在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数,获取所述目标进程的远近端访问比率和访问频率。
15.如权利要求14所述的方法,其特征在于,获取所述目标进程被节点的处理器调度后的实际运行时间以及在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数,包括当所述目标进程被节点的处理器调度后,将所述目标进程的上下文信息中包括的访问本地内存的次数和访问远端节点内存的次数加载到所述处理器的统计计数寄存器中;通过所述处理器对所述目标进程进行实时监听,如果监听出所述目标进程访问本地内存,则增加所述目标进程访问本地内存的次数,如果监听出所述目标进程访问远端节点内存,则增加所述目标进程访问远端节点内存的次数;当所述时间片结束时获取所述目标进程被调度后的实际运行时间; 根据增加后的所述目标进程访问本地内存的次数和访问远端节点内存的次数以及所述统计计数寄存器中存储的所述目标进程访问本地内存的次数和访问远端节点内存的次数获取所述目标进程在所述实际运行时间内访问本地内存的次数和远端节点内存的次数。
16.如权利要求14所述的方法,其特征在于,根据所述实际运行时间和在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数,获取所述目标进程的远近端访问比率和访问频率,包括计算出在所述实际运行时间内所述目标进程访问本地内存的次数与访问远端节点内存的次数的比值,将所述比值作为所述目标进程的远近端访问比率;根据在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数计算出所述目标进程的访问次数;根据所述目标进程的访问次数和所述实际运行时间计算出所述目标进程的访问频率。
17.如权利要求10-12任一项权利要求所述的方法,其特征在于,增加所述待访问的页的访问次数之后,还包括从内存区域中获取所述待访问的页的Present位,根据所述待访问的页的Present位判断所述待访问的页在节点的内存中是否有效;如果有效,则在所述目标进程对应的页表中将所述待访问的页的页表项包括的 Present位置位,并触发所述目标进程继续访问所述待访问的页。
18.如权利要求17所述的方法,其特征在于,所述从内存区域中获取所述待访问的页的Present位,根据所述待访问的页的Present位判断所述待访问的页在节点的内存中是否有效,包括根据所述目标进程的进程号,所述待访问的页的页表项在页表中的序号和内存区域的起始地址,并通过预设的计算模型计算出在所述内存区域中存储所述待访问的页的 Present位的内存地址;根据所述计算出的内存地址从所述内存区域中读取所述待访问的页的I^esent位,如果所述读取的Present位被置位,则判断出所述待访问的页有效,如果所述读取的Present 位被清零,则判断出所述待访问的页无效。
19.如权利要求17所述的方法,其特征在于,所述方法还包括如果所述目标进程访问完待访问的页时,则在所述目标进程对应的页表中将所述待访问的页的页表项包括的I^resent位清零。
20.一种构建内存访问模型的装置,其特征在于,所述装置包括第一获取模块,用于获取引用内存块的进程对应的页表,并将所述页表中存储的每个页表项所包括的当前I^esent位清零,所述页表用于存储引用所述内存块的进程所要访问的页的页表项;第一监听模块,用于对引用所述内存块的进程进行实时监听并开始计时; 第一增加模块,用于如果引用所述内存块的进程访问所述内存块中的页时产生缺页中断事件,则增加所述访问的页的访问次数;其中,所述缺页中断事件为引用所述内存块的进程判断出所述访问的页的页表项包括的!^resent位被清零时产生的,所述访问的页的页表项为引用所述内存块的进程从其对应的页表中获取得到的;第二获取模块,用于根据所述内存块中的每个页的访问次数和计时的时间构建所述内存块的内存访问模型,所述内存访问模型至少包括所述内存块中的每个页的访问次数和访问频率。
21.如权利要求20所述的装置,其特征在于,所述第一获取模块包括第一获取单元,用于通过反向映射的方法,获取引用所述内存块的进程并进一步获取引用所述内存块的进程对应的页表;第一存储单元,用于在节点的内存中申请一块内存区域,将所述页表中的每个页表项包括的I^esent位存储在所述内存区域中;第一清零单元,用于将所述页表中的每个页表项包括的I^resent位清零。
22.如权利要求21所述的装置,其特征在于,所述第一存储单元包括第一计算子单元,用于在节点的内存中申请一块内存区域,根据引用所述内存块的进程的进程号、所述页表中的每个页表项在所述页表中的序号和所述内存区域的起始地址, 并通过预设的计算模型计算出在所述内存区域中存储所述页表中的每个页表项包括的 Present位的存储地址;第一存储子单元,用于根据所述页表中的每个页表项包括的I^esent位的存储地址, 将所述页表中的每个页表项包括的I^esent位存储在所述内存区域中。
23.如权利要求20-22任一项权利要求所述的装置,其特征在于,所述装置还包括第三获取模块,用于将节点的内存划分成多个内存段,获取所述内存段被远端节点访问的访问次数和访问频率,所述远端节点为计算机系统中除所述节点以外的其他节点;第一划分模块,用于如果存在被远端节点访问的访问次数超过第一阈值且被远端节点访问的访问频率超过第二阈值的内存段,则将所述内存段划分成多个内存块;第四获取模块,用于获取所述内存块被远端节点访问的访问次数和访问频率,如果存在被远端节点的访问次数超过第三阈值且被远端节点访问的访问频率超过第四阈值的内存块,则执行获取引用所述内存块的进程对应的页表的操作。
24.如权利要求23所述的装置,其特征在于,所述第三获取模块包括第一监听单元,用于将节点的内存划分成多个内存段,通过所述节点对应的互联芯片实时监听所述内存段并开始计时,如果监听出存在远端节点访问所述内存段,则增加所述内存段被远端节点访问的访问次数;第一计算单元,用于根据所述内存段被远端节点访问的访问次数和计时的时间计算出所述内存段被远端节点访问的访问频率。
25.如权利要求23所述的装置,其特征在于,所述第四获取模块包括第二监听单元,用于通过所述节点对应的互联芯片实时监听所述内存块并开始计时, 如果监听出存在远端节点访问所述内存块,则增加所述内存块被远端节点访问的访问次数;第二计算单元,用于根据所述内存块被远端节点访问的访问次数和计时的时间计算出所述内存块被远端节点访问的访问频率。
26.如权利要求20-22任一项权利要求所述的装置,其特征在于,所述装置还包括 第一判断模块,用于从内存区域中获取所述访问的页的I^esent位,根据所述获取的Present位判断所述访问的页在节点的内存中是否有效;第一置位模块,用于如果有效,则在所述进程对应的页表中将所述访问的页的页表项包括的!^resent位置位,并触发引用所述内存块的进程继续访问所述访问的页。
27.如权利要求沈所述的装置,其特征在于,所述第一判断模块包括第三计算单元,用于根据引用所述内存块的进程的进程号,所述访问的页的页表项在页表中的序号和内存区域的起始地址,并通过预设的计算模型计算出在所述内存区域中存储所述访问的页的!^resent位的内存地址;第一判断单元,用于根据所述计算出的内存地址从所述内存区域中读取所述访问的页的Present位,如果所述读取的Present位被置位,则判断出所述访问的页有效,如果所述读取的Present位被清零,则判断出所述访问的页无效。
28.如权利要求沈所述的方法,其特征在于,所述装置还包括第一清零模块,用于如果引用所述内存块的进程访问完所述访问的页时,则在引用所述内存块的进程对应的页表中将所述访问的页的页表项包括的!^resent位清零。
29.一种构建内存访问模型的装置,其特征在于,所述装置包括第五获取模块,用于获取目标进程对应的页表,并将所述页表中存储的每个页表项所包括的当前I^esent位清零,所述页表用于存储所述目标进程所要访问的页的页表项;第二监听模块,用于对所述目标进程进行实时监听并开始计时;第二增加模块,用于如果所述目标进程访问待访问的页时产生缺页中断事件,则增加所述待访问的页的访问次数;其中,所述缺页中断事件为所述目标进程判断所述待访问的页的页表项包括的I^esent位被清零时产生的,所述待访问的页的页表项为所述目标进程从其对应的页表中获取得到的;第六获取模块,用于根据所述目标进程所访问的每个页的访问次数和计时的时间构建所述目标进程的内存访问模型,所述内存访问模型至少包括所述目标进程所访问的每个页的访问次数和访问频率。
30.如权利要求四所述的装置,其特征在于,所述第五获取模块包括第二获取单元,用于获取所述目标进程对应的页表;第二存储单元,用于在节点的内存中申请一块内存区域,将所述页表中的每个页表项包括的I^esent位存储在所述内存区域中;第二清零单元,用于将所述页表中的每个页表项包括的I^resent位清零。
31.如权利要求30所述的装置,其特征在于,所述第二存储单元包括第二计算子单元,用于在节点的内存中申请一块内存区域,根据所述目标进程的进程号、所述页表中的每个页表项在所述页表中的序号和所述内存区域的起始地址,并通过预设的计算模型计算出在所述内存区域中存储所述页表中的每个页表项包括的I^esent位的存储地址;第二存储子单元,用于根据所述页表中的每个页表项包括的I^esent位的存储地址, 将所述页表中的每个页表项包括的I^esent位存储在所述内存区域中。
32.如权利要求四-31任一项权利要求所述的装置,其特征在于,所述装置还包括第七获取模块,用于当一个时间片结束时,获取所述目标进程的远近端访问比率和访问频率,如果所述目标进程的远近端访问比率超过第五阈值且所述目标进程的访问频率超过第六阈值,则执行获取所述目标进程对应的页表的操作。
33.如权利要求32所述的装置,其特征在于,所述第七获取模块包括第三获取单元,用于获取所述目标进程被节点的处理器调度后的实际运行时间以及在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数,所述远端节点内存为计算机系统中除所述节点以外的其他节点的内存;第四获取单元,用于根据所述实际运行时间和在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数,获取所述目标进程的远近端访问比率和访问频率。
34.如权利要求33所述的装置,其特征在于,所述第三获取单元包括加载子单元,用于当所述目标进程被节点的处理器调度后,将所述目标进程的上下文信息中包括的访问本地内存的次数和访问远端节点内存的次数加载到所述处理器的统计计数寄存器中;监听子单元,用于通过所述处理器对所述目标进程进行实时监听,如果监听出所述目标进程访问本地内存,则增加所述目标进程访问本地内存的次数,如果监听出所述目标进程访问远端节点内存,则增加所述目标进程访问远端节点内存的次数;第一获取子单元,用于当所述时间片结束时获取所述目标进程被调度后的实际运行时间;第二获取子单元,用于根据增加后的所述目标进程访问本地内存的次数和访问远端节点内存的次数以及所述统计计数寄存器中存储的所述目标进程访问本地内存的次数和访问远端节点内存的次数获取所述目标进程在所述实际运行时间内访问本地内存的次数和远端节点内存的次数。
35.如权利要求33所述的装置,其特征在于,所述第四获取单元包括第三计算子单元,用于计算出在所述实际运行时间内所述目标进程访问本地内存的次数与访问远端节点内存的次数的比值,将所述比值作为所述目标进程的远近端访问比率;第四计算子单元,用于根据在所述实际运行时间内所述目标进程访问本地内存的次数和访问远端节点内存的次数计算出所述目标进程的访问次数;第五计算子单元,用于根据所述目标进程的访问次数和所述实际运行时间计算出所述目标进程的访问频率。
36.如权利要求四-31任一项权利要求所述的装置,其特征在于,所述装置还包括第二判断模块,用于从内存区域中获取所述待访问的页的I^esent位,根据所述待访问的页的I^esent位判断所述待访问的页在节点的内存中是否有效;第二置位模块,用于如果有效,则在所述目标进程对应的页表中将所述待访问的页的页表项包括的I^esent位置位,并触发所述目标进程继续访问所述待访问的页。
37.如权利要求36所述的装置,其特征在于,所述所述第二判断模块包括第四计算单元,用于根据所述目标进程的进程号,所述待访问的页的页表项在页表中的序号和内存区域的起始地址,并通过预设的计算模型计算出在所述内存区域中存储所述待访问的页的I^resent位的内存地址;第二判断单元,用于根据所述计算出的内存地址从所述内存区域中读取所述待访问的页的Present位,如果所述读取的Present位被置位,则判断出所述待访问的页有效,如果所述读取的Present位被清零,则判断出所述待访问的页无效。
38.如权利要求36所述的方法,其特征在于,所述装置还包括第二清零模块,用于如果所述目标进程访问完待访问的页时,则在所述目标进程对应的页表中将所述待访问的页的页表项包括的I^esent位清零。
全文摘要
本发明实施例提供了一种构建内存访问模型的方法及装置,涉及计算机领域,所述方法包括获取引用内存块的进程对应的页表,并将所述页表中存储的每个页表项所包括的Present位清零;对引用所述内存块的进程进行实时监听并开始计时;如果引用所述内存块的进程访问所述内存块中的页时产生缺页中断事件,则增加所述访问的页的访问次数;根据所述内存块中的每个页的访问次数和计时的时间构建所述内存块的内存访问模型,所述内存访问模型至少包括所述内存块中的每个页的访问次数和访问频率。所述装置包括第一获取模块、第一监听柑、第一增加模块和第二获取模块。本发明能够减少内存消耗和系统性能的影响,以及避免造成系统崩溃。
文档编号G06F13/24GK102439577SQ201180002377
公开日2012年5月2日 申请日期2011年10月31日 优先权日2011年10月31日
发明者刘仪阳, 王伟, 裘稀石 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1