一种数据预取方法及装置的制作方法

文档序号:6437879阅读:170来源:国知局
专利名称:一种数据预取方法及装置的制作方法
技术领域
本发明涉及预取技术领域,具体而言,尤其涉及一种数据预取方法及装置。
技术背景
随着服务器核数的增多,服务器的处理能力不断增强,因此要求服务器存储介质的访问速度也越来越快,否则服务器处理能力的增强并不会带来服务器性能的提升。然而由于价格、工艺等方面因素的影响,高速的存储介质容量有限,因此,如何保证服务器即将要处理的数据能够尽可能地接近处理该数据的CPU变得越来越重要。现有技术中,通常采用预取技术来保证服务器即将要处理的数据能够尽可能地接近处理该数据的CPU。所谓预取,就是通过预先读取服务器即将要处理的数据并将其存放在服务器的内存中。如此,CPU 在处理该数据时,不用到访问速度很慢的磁盘中去取,从而极大地提高了服务器的处理性能。
现有技术中,通常采用的预取机制为为服务器的全局层记录一个历史位置信息, 该历史位置信息包括处理器上一次执行读操作时读取的数据的数据位置信息。当服务器下次发起读操作时,则判断该读操作所请求读取的数据的数据位置信息与为全局层记录的历史位置信息是否是相邻的,如果相邻,则判断全局层满足预取条件,启动数据预取,提前读取服务器即将要处理的数据,并存入内存中。并且,服务器可以为客户端提供不同服务类型的业务,如提供邮件服务、网游服务等。其中,不同服务类型的服务器,由于其对应的数据流的特征不同,因此其启动数据预取的机率是不相同的。发明内容
本发明实施例提供一种数据预取方法及预取装置,可提高启动数据预取的机率。
为了解决上述技术问题,本发明实施例提供了一种数据预取控制方法,包括
接收读操作信令;
判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;
若存在,确定存在满足预取条件的预取层级,启动数据预取。
相应地,本发明实施例还提供了一种数据预取装置,包括
接收模块,用于接收读操作信令;
位置信息判断模块,用于判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述接收模块接收的读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;
数据预取模块,用于在所述位置信息判断模块的判断结果为存在时,启动数据预取。
实施本发明实施例,具有如下有益效果
通过判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息,并在判断结果为存在时,确定存在满足预取条件的预取层级,启动数据预取。与现有技术中只判断一个预取层级是否满足预取条件的预取机制相比,本实施例能够判断多个预取层级是否满足预取条件,并在任一预取层级满足预取条件时启动数据预取,提高了启动数据预取的机率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种数据预取方法第一实施例的流程图2是图1中步骤S12的第一实施例的流程图3是本发明提供的一种数据预取方法第二实施例的流程图4是本发明提供的一种数据预取装置的第一实施例的结构示意图5是图4中位置信息判断模块的实施例的结构示意图6是本发明提供的一种数据预取装置的第二实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,是本发明提供的一种数据预取方法第一实施例的流程图,所述方法包括
步骤Sl 1,接收读操作信令;
本步骤中,当需要处理数据时,均会发起读操作信令,以从磁盘中获取需要处理的数据。
步骤S12,判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;
在本发明实施例中,在判断是否启动数据预取时,采用一种多层级判定架构。所述多层级判定架构包括多个预取层级,在判断是否启动数据预取时,可根据当前的读操作信令,判断该多层级判定架构中是否存在满足预取条件的预取层级,并在存在满足预取条件的预取层级时,启动数据预取。
具体实现中,可通过判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息的方式,判断多层级判定架构中是否存在满足预取条件的预取层级。若判断为多层级判定架构中多个预取层级分别记录的历史位置信息中存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息时,则判断多层级判定结构中存在满足预取条件的预取层级, 进而可以启动数据预取。
其中,所述多个预取层级根据多核处理装置的系统架构的层级结构相应设定。 其中,多核处理装置可以为多核服务器等,例如,当多核处理装置的系统架构为NUMA(Non Uniform Memory Access 非一致内存访问)架构时,其层级结构包括CPU层、节点层、以及全局层;相应地,多层级判定架构的预取层级则包括CPU层、节点层、以及全局层。需要说明的是,若NUMA架构中的CPU为多核时,其层级结构还包括内核层,相应地,多层级判定架构的预取层级则还包括内核层。也就是说,多层级判定架构中的预取层级是变化的,具体可以根据多核处理装置的系统架构的不同层级结构,相应建立多层级判定架构的预取层级。
本步骤中,所述读操作信令请求读取的数据位置信息,指的当前读操作信令请求读取的数据在磁盘中的存储位置。
本步骤中,为多层级判定结构中的一个预取层级对应记录一个历史位置信息,可以这样理解,在确定了与所述读操作信令请求读取的数据位置信息相邻的历史位置信息之后,就确定了满足预取条件的预取层级。其中,历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息。具体地,为多层级判定架构中任一预取层级分别记录的历史位置信息,包括
若预取层级是CPU层,则为其记录的历史位置信息包括由多个子数据位置信息组成的数据位置信息,一个子数据位置信息对应CPU层中的一个CPU上一次读操作所读取数据的数据位置信息,具体地说,是该数据在磁盘中的存储位置;其中,为CPU层记录的子数据位置信息的个数与多核处理装置系统架构中CPU的数量一一对应。
若预取层级是节点层,则为其记录的历史位置信息包括由多个子数据位置信息组成的数据位置信息,一个子数据位置信息对应节点层中一个节点上一次读操作读取数据的数据位置信息,具体地说是该数据在磁盘中的存储位置;其中,为节点层记录的子数据位置信息的个数与多核处理装置系统架构中节点的数量一一对应。
若预取层级是全局层,则为其记录的历史位置信息包括仅由一个子数据位置信息组成的数据位置信息,该子数据位置信息对应多核处理装置上一次读操作所读取数据的数据位置信息,具体地说是该数据在磁盘中的存储位置。
本步骤中,在判断该多层级判定架构是否存在满足预取条件的预取层级时,对预取层级的判断顺序没有要求,可以依次判断任一预取层级是否满足预取条件,例如,可将当前读操作信令请求读取的数据位置信息与为CPU层记录的多个子数据位置信息分别比较, 如果判断请求读取的数据位置信息与为CPU层记录的任一子数据位置信息相邻,则进入步骤S13,以及停止判断剩余的预取层级是否满足预取条件。当然,也可同时判断所有的预取层级是否满足预取条件,即同时将记录的各个历史位置信息与当前读操作信令所请求读取的数据位置信息进行比较,若判断记录的各个历史位置信息中,存在与当前读操作信令所请求读取的数据位置信息相邻的任一历史位置信息,则进入步骤S13 ;若判断记录的所有历史位置信息中,均不存在与当前读操作信令所请求读取的数据位置信息相邻的历史位置信息,则只读取所述读操作信令请求读取的数据。
步骤S13,确定存在满足预取条件的预取层级,启动数据预取。
其中,在启动数据预取时,还需要确定预取数据的数量,具体地说,是确定需要读取的操作块的数量。一般地,可通过确定当前是连续第几次预取来确定需要读取的操作块的数量。例如,采用增量预取的方法来确定需要读取的操作块的数量,即若判断当前是第一次启动数据预取,则读取所述读操作请求读取的操作块数量的两倍,若是当前是连续第二次启动数据预取,则读取所述读操作请求读取的操作块数量的四倍,依次类推。当然,确定需要读取的操作块数量的方法是可以动态调整的。
本实施例中,根据接收到的读操作信令,判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息,并在判断结果为存在时,确定存在满足预取条件的预取层级,启动数据预取。与现有技术中只判断一个预取层级是否满足预取条件的预取机制相比,本实施例能够判断多个预取层级是否满足预取条件,并在任一预取层级满足预取条件时启动数据预取, 从而提高了启动数据预取的机率。
需要说明的是,本实施例的执行主体可以是多核处理装置,如多核服务器等。当多核服务器采用本实施例的方法进行数据预取时,能够保证多核服务器启动数据预取的机率尽可能地不受其服务类型的限制,尽可能地避免了不同服务类型的多核服务器采用相同预取机制判断其是否启动数据预取时得到的预取机率不一样的情况,进而提高了多核服务器的性能。
请参考图2,是本发明图1实施例中步骤S12的实施例的流程图,所述方法包括
步骤S21,判断所述读操作信令请求读取的数据位置信息与为多层级判定架构中默认预取层级记录的历史位置信息是否相邻;
本步骤中,多层级判定架构中的默认预取层级,是预先设定的、用于判断预取层级是否满足预取条件的第一个预取层级,即默认预取标识从哪个预取层级开始判断预取层级是否满足预取条件。在NUMA架构下,默认预取层级可以为CPU层、节点层、或全局层中的任意一层。进一步地,若NUMA架构下的CPU包括多个内核时,默认预取层级则可以为内核层、 CPU层、节点层、或全局层的任一层。一般地,默认预取层级为CPU层。
本步骤中,若默认预设层级为CPU层,则将当前读操作信令请求读取的数据位置信息与为CPU层记录的多个子数据位置信息分别比较,如果判断请求读取的数据位置信息与为默认预取层级记录的任一子数据位置信息相邻,则进入步骤S22,并停止判断剩余的预取层级是否满足预取条件;若判断不相邻,则进入步骤S24。当默认预设层级为其它预取层级时,判断方法类似,在此不描述。
步骤S22,则确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;
步骤S24,判断所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻;
本步骤中,判断所述读操作信令所请求读取的数据位置信息与为其它任一预取层级记录的历史位置信息是否相邻的方法与步骤S21类似,在此不赘述。并且,判断所述读操作信令所请求读取的数据位置信息与为其它任一预取层级记录的历史位置信息是否相邻的顺序没有明确的限定。一般地,若默认预取层级为CPU层,则本步骤的判断顺序可以为 先节点层,再全局层;若默认预取层级为全局层,则本步骤的判断顺序可以为先节点层, 再CPU层,若存在内核层时,最后才是内核层。本步骤中,若判断所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息相邻,则进入步骤S25,若不相邻,则确定不存在满足预取条件的预取层级,不启动数据预取。
步骤S25,确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位直fe息;
进一步地,在执行步骤SM之前,还执行步骤S23,具体为
步骤S23,判断记录的所述默认预取层级的命中率是否小于预设的第一阈值;其中,所述命中率为所述默认预取层级满足预取条件的次数与未满足预取条件的次数的比值。所述默认预取层级满足预取条件,指的是当前读操作信令所请求读取的数据位置信息与为所述默认预取层级记录的历史位置信息相邻。其中,第一阈值是预设的参考值,该参考值用于衡量通过判断默认预取层级是否满足预取条件来确定是否启动数据预取的方式是否合理。若判断命中率大于或等于第一阈值,则认为通过判断当前的预取层级是否满足预取条件来确定是否启动数据预取的方式合理的,即认为这种方式能够保证多核处理装置的性能处于较佳的状态。若判断命中率小于第一阈值,则说明该方式不能保证多核处理装置的处理性能,因此需要判断其它预取层级是否满足预取条件。
本步骤中,需要判断命中率是否小于预设的第一阈值的原因是需要考虑开销问题。例如,若预设的第一阈值为70%,所述默认预取层级的命中率为80%,则表示在10次读操作中,默认预取层级8次满足了预取条件。此时,所述命中率大于或等于预设的第一阈值,表明通过判断默认预取层级是否满足预取条件来确定是否启动数据预取的方式是合理的,是能够保证多核处理装置的性能。
此时,若某一读操作信令到来且因判断默认预取层级不满足预取条件而直接判断其它预取层级是否满足预取条件,由于通过判断默认预取层级是否满足预取条件来确定是否启动数据预取的方式是合理的,那么当下一次读操作到来时,由于其它应用预取层级命中率较低,那么确定是否启动数据预取的预取层级又会从其它预取层级跳转到该默认预取层级,如此则需要不停地判断多个不同的预取层级是否满足预取条件,从而消耗了较多的开销。因此,只有在判断当前确定是否启动数据预取的预取层级不合理时,才判断其它预取层级是否满足预取条件。因此,本步骤中需要判断默认预取层级的命中率是否小于预设的第一阈值;若否,则只读取所述读操作信令所请求读取的数据,若是,则进入步骤S24。
进一步地,在步骤S25中确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息之后,还可包括
步骤S26,判断该历史位置信息对应的预取层级的命中率是否大于预设的第二阈值;
由于一个历史位置信息对应一个预取层级,因此,在步骤S25中确定出与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息之后,即可知道该历史信息对应的满足预取条件的预取层级。其中,该满足预取条件的预取层级一定不是默认预取层级。
其中,通过步骤S25中确定出的历史位置信息对应的预取层级来确定是否启动数据预取,并在运行一段时间后,判断该预取层级的命中率是否大于第二阈值。其中,第二阈值是预设的参考值,该参考值用于衡量通过判断该预取层级是否满足预取条件来确定是否启动数据预取的方式是否合理。若判断结果为是,即大于预设的第二阈值,则进入步骤S27。
步骤S27,将该历史位置信息对应的预取层级设定为默认预取层级。
若步骤S27中的判断结果为是,则表明通过判断该历史位置信息对应的预取层级是否满足预取条件来确定是否启动数据预取的方式是合理的,因此需要将该预取层级设定为默认预取层级。如此,在下次读操作到来时,能够较快地判断出满足预取条件的预取层级,节省了开销。
本实施例中,通过先判断读操作信令所请求读取的数据位置信息与为所述多层级判定架构中默认预取层级记录的历史位置信息是否相邻,以及在判断结果为否时,再分别判断所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻的方式,达到了依次判断多层级判定架构中是否存在满足预取条件的预取层级的目的。
请参考图3,是本发明提供的一种数据预取方法第二实施例的流程图,所述方法包括
步骤S31,接收读操作信令;
本步骤与图1所示的实施例中步骤Sll相同,在此不重复描述。
步骤S32,判断所有节点的剩余内存之和是否大于预设的第三阈值;
本步骤中所述的节点,指的是多核处理装置系统架构中,距离同一块内存距离相等的CPU的集合,所有节点的集合,则称为全局。可以理解的是,一个节点中,包括多个CPU, 该多个CPU访问该内存的速度相同,该内存则称为节点中所有CPU的本地内存。
本步骤中所述的第三阈值,是预先设定的、用以判断是否需要启动数据预取的参考值,该参考值可以动态调整。若判断所有节点的剩余内存(包括空闲内存和潜在可以交换出去的内存)之和小于或等于该第三阈值,则表示此时全局的内存比较小,负载较重,没有必要启动数据预取。若所有节点的剩余内存之和大于该第三阈值,则表明此时全局的内存较大,负载较轻,可以启动数据预取。
步骤S33,判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;
步骤S34,确定存在满足预取条件的预取层级,启动数据预取;
步骤S33-步骤S34的操作与图1实施例中步骤S12-步骤S13的操作相同,在此不重复描述。可以理解的是,在执行步骤S33时,可以采用图2所示的实施例中的方法。
进一步地,由于在现有预取技术中,对于预取后得到的预取数据的存放位置并没有充分考虑。然而,某些多核处理装置系统架构中,例如在NUMA架构中,CPU访问本地内存的速度比访问其它节点的内存的速度快,若能更合理地控制预取数据的存放位置,还能进一步提高多核处理装置的性能。因此,在本发明实施例的方法中,在启动数据预取之后,还需要执行
步骤S35,按照处理预取数据的进程最多的CPU距离所述预取数据最近的原则,控制所述预取数据的存放位置;其中所述预取数据是启动数据预取得到的。1
其中,启动数据预取具体是由进程来操作的,具体实现中,步骤S35包括
若判断启动数据预取的进程所在的CPU处理所述预取数据的进程最多且本地剩余内存足够大,则控制进程将所述预取数据存入该CPU的本地内存中;
若判断启动数据预取的进程所在的CPU处理所述预取数据的进程最多且本地剩余内存不够时,则控制进程将所述预取数据存入该CPU临近节点的内存中;或者控制进程将一部分预取数据存放在当前CPU的本地内存,将另一部分预取数据存入当前CPU临近节点的内存中。
若判断启动数据预取的进程所在的CPU处理所述预取数据的进程少,查询是否存在处理所述预取数据的进程最多的CPU ;若查询到处理所述预取数据的进程最多的CPU,判断所述处理所述预取数据的进程最多的CPU的本地剩余内存是否足够大,若是,则控制进程将所述预取数据存入该CPU的本地内存中;若否,则控制进程所述预取数据存入该CPU临近节点的内存中;
若未查询到处理所述预取数据的进程最多的CPU,则控制进程将所述预取数据平均分发到处理所述预取数据的进程数量相同的CPU的本地内存中。
本实施例中,通过判断所有节点的剩余内存之和是否大于预设的第三阈值,并在剩余内存之和大于第三阈值时判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息, 并在判断结果为存在时,启动数据预取。如此设计,与现有技术中只判断一个预取层级是否满足预取条件的预取机制相比,本实施例在负载较小时,能够判断多个预取层级是否满足预取条件,并在任一预取层级满足预取条件时启动数据预取,从而提高了启动数据预取的机率。
当多核处理装置采用本实施例中的方法进行数据预取时,能够使得其启动数据预取的机率尽可能地不受其服务类型的限制,尽可能地避免了不同服务类型的多核处理装置采用相同数据预取控制方法判断其是否启动数据预取时得到的预取机率不一样的情况,进而提高了多核处理装置的性能。
同时,本实施例中还将预取得到的预取数据,按照操作所述预取数据进程最多的 CPU距离所述预取数据最近的原则,控制预取数据在多核处理装置内的存放位置,从而使得预取数据尽可能地靠近操作其最多的CPU,提高了多核处理装置获取预取数据的速度,从而提高了所述CPU处理所述预取数据的效率,进一步提高了多核处理装置的性能。
上述图1-图3对本发明实施例提供的一种数据预取方法进行了详细的接收,下面结合图4-图6,对应用上述方法进行数据预取的装置进行详细介绍。
请参考图4,是本发明提供的一种数据预取装置的结构示意图,所述装置包括
接收模块41,用于接收读操作信令;
位置信息判断模块42,用于判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述接收模块41接收的读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;
位置信息判断模块42在判断是否启动数据预取时,采用一种多层级判定架构。所述多层级判定架构包括多个预取层级,位置信息判断模块42在判断是否启动数据预取时,可根据当前接收模块41接收的读操作信令,判断该多层级判定架构中是否存在满足预取条件的预取层级,并在存在满足预取条件的预取层级时,启动数据预取。
具体实现中,位置信息判断模块42可通过判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息的方式,判断多层级判定架构中是否存在满足预取条件的预取层级。若判断为多层级判定架构中多个预取层级分别记录的历史位置信息中存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息时,则判断多层级判定架构中存在满足预取条件的预取层级,进而可以启动数据预取。
其中,所述多个预取层级根据多核处理装置的系统架构的层级结构相应设定。 其中,多核处理装置可以为多核服务器等,例如,当多核处理装置的系统架构为NUMA(Non Uniform Memory Access 非一致内存访问)架构时,其层级结构包括CPU层、节点层、以及全局层;相应地,多层级判定架构的预取层级则包括CPU层、节点层、以及全局层。需要说明的是,若NUMA架构中的CPU为多核时,其层级结构还包括内核层,相应地,多层级判定架构的预取层级则还包括内核层。也就是说,多层级判定架构中的预取层级是变化的,具体可以根据多核处理装置的系统架构的不同层级结构,相应建立多层级判定架构的预取层级。
其中,所述读操作信令请求读取的数据位置信息,指的当前读操作信令请求读取的数据在磁盘中的存储位置。
其中,为多层级判定结构中的一个预取层级对应记录一个历史位置信息,可以这样理解,在确定了与所述读操作信令请求读取的数据位置信息相邻的历史位置信息之后, 就确定了满足预取条件的预取层级。其中,历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息。具体地,为多层级判定架构中任一预取层级分别记录的历史位置信息,包括
若预取层级是CPU层,则为其记录的历史位置信息包括由多个子数据位置信息组成的数据位置信息,一个子数据位置信息对应CPU层中的一个CPU上一次读操作所读取数据的数据位置信息,具体地说,是该数据在磁盘中的存储位置;其中,为CPU层记录的子数据位置信息的个数与多核处理装置系统架构中CPU的数量一一对应。
若预取层级是节点层,则为其记录的历史位置信息包括由多个子数据位置信息组成的数据位置信息,一个子数据位置信息对应节点层中一个节点上一次读操作读取数据的数据位置信息,具体地说是该数据在磁盘中的存储位置;其中,为节点层记录的子数据位置信息的个数与多核处理装置系统架构中节点的数量一一对应。
若预取层级是全局层,则为其记录的历史位置信息包括仅由一个子数据位置信息组成的数据位置信息,该子数据位置信息对应多核处理装置上一次读操作所读取数据的数据位置信息,具体地说是该数据在磁盘中的存储位置。
其中,位置信息判断模块42在判断该多层级判定架构是否存在满足预取条件的预取层级时,对预取层级的判断顺序没有要求,可以依次判断任一预取层级是否满足预取条件;例如,位置信息判断模块42可将当前读操作信令请求读取的数据位置信息与为CPU 层记录的多个子数据位置信息分别比较,如果判断请求读取的数据位置信息与为CPU层记录的任一子数据位置信息相邻,则控制数据预取模块43启动数据预取,以及停止判断剩余的预取层级是否满足预取条件。当然,位置信息判断模块42也可同时判断所有的预取层级是否满足预取条件,即同时将记录的各个历史位置信息与当前读操作信令所请求读取的数据位置信息进行比较,若判断记录的各个历史位置中,存在与当前读操作信令所请求读取的数据位置信息相邻的历史位置信息,则控制数据预取模块43启动数据预取,若判断记录的所有历史信息中,均不存在与当前读操作信令所请求读取的数据位置信息相邻的历史位置信息,则位置信息判断模块42只读取所述读操作信令请求读取的数据。
数据预取模块43,用于在所述位置信息判断模块42的判断结果为存在时,确定存在满足预取条件的预取层级,启动数据预取。
其中,数据预取模块43在启动数据预取时,还需要确定预取数据的数量,具体地说,是确定需要读取的操作块的数量。一般地,可通过确定当前是连续第几次预取来确定需要读取的操作块的数量。例如,采用增量预取的方法来确定需要读取的操作块的数量,即 若判断当前是第一次启动数据预取,则读取所述读操作请求读取的操作块数量的两倍,若是当前是连续第二次启动数据预取,则读取所述读操作请求读取的操作块数量的四倍,依次类推。当然,确定需要读取的操作块数量的方法是可以动态调整的。
本实施例中,位置信息判断模块42根据接收模块41接收的读操作信令,判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息,并在判断结果为存在时,控制数据预取模块43启动数据预取。与现有技术中只判断一个预取层级是否满足预取条件的预取机制相比,本实施例能够判断多个预取层级是否满足预取条件,并在任一预取层级满足预取条件时启动数据预取,从而提高了启动数据预取的机率。
需要说明的是,当数据预取装置为多核处理装置,如多核服务器时,本实施例能够使得多核服务器启动数据预取的机率尽可能地不受其服务类型的限制,尽可能地避免了不同服务类型的多核处理服务器采用相同预取机制判断其是否启动数据预取时得到的预取机率不一样的情况,进而提高了多核服务器的性能。
请参考图5,是本发明图4实施例中位置信息判断模块42的实施例的结构示意图, 所述位置信息判断模块42包括
第一判断单元51,用于判断所述接收模块41接收的读操作信令所请求读取的数据位置信息与为默认预取层级记录的历史位置信息是否相邻;
其中,多层级判定架构中的默认预取层级,是预先设定的、用于判断预取层级是否满足预取条件的第一个预取层级,即默认预取标识从哪个预取层级开始判断预取层级是否满足预取条件。在NUMA架构下,默认预取层级可以为CPU层、节点层、或全局层中的任意一层。进一步地,若NUMA架构下的CPU包括多个内核时,默认预取层级则可以为内核层、CPU 层、节点层、或全局层的任一层。一般地,默认预取层级为CPU层。
其中,若默认预设层级为CPU层,第一判断单元51则将当前读操作信令请求读取的数据位置信息与为CPU层记录的多个子数据位置信息分别比较,如果判断请求读取的数据位置信息与记录的任一子数据位置信息相邻,则控制第一确定单元52的工作,并停止判断剩余的预取层级是否满足预取条件;若判断不相邻,则控制第二判断单元53进行判断。 当默认预设层级为其它预取层级时,判断方法类似,在此不描述。
第一确定单元52,用于在所述第一判断单元51的判断结果为相邻时,确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;
第二判断单元53,用于在所述第一判断单元51的判断结果为不相邻时,判断所述接收模块41接收的读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻;
第二判断单元53判断所述接收模块41接收的读操作信令所请求读取的数据位置信息与为其它任一预取层级记录的历史位置信息是否相邻的方法与第一判断单元51的判断方法类似,在此不赘述。并且,第二判断单元53判断其它任一预取层级是否满足预取条件的顺序没有明确的限定。一般地,若默认预取层级为CPU层,则第二判断单元53的判断顺序可以为先节点层,再全局层;若默认预取层级为全局层,则第二判断单元53的判断顺序可以为先节点层,再CPU层,若存在内核层时,最后才是内核层。若第二判断单元53的判断结果为相邻时,则控制第二确定单元M的工作,若判断结果为否,则控制数据预取模块43不启动数据预取。
第二确定单元M,还用于在所述第二判断单元53的判断结果为相邻时,确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;
进一步地,位置信息判断模块42还可以包括
命中率判断单元55,用于在所述第一判断单元51的判断结果为不相邻时,判断记录的所述默认预取层级的命中率是否小于预设的第一阈值;其中,所述命中率为所述默认预取层级满足预取条件的次数与未满足预取条件的次数的比值。所述默认预取层级满足预取条件,指的是当前读操作信令所请求读取的数据位置信息与为所述默认预取层级记录的历史位置信息相邻。其中,第一阈值是预设的参考值,该参考值用于衡量通过判断默认预取层级是否满足预取条件来确定启动数据预取的方式是否是合理的。若判断命中率大于或等于第一阈值,则认为通过判断当前的预取层级是否满足预取条件来确定是否启动数据预取的方式是合理的,即认为这种方式能够保证多核处理装置的性能处于较佳的状态。其中,命中率判断单元阳判断命中率是否小于预设的第一阈值的原因是需要考虑开销问题。
其中,所述第二判断单元53,用于在所述命中率判断单元55的判断结果为是时, 判断所述接收模块41接收的读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史数据位置信息是否相邻。
所述命中率判断单元55,还用于在所述第二确定单元M确定出存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息之后,判断该历史位置信息对应的预取层级的命中率是否大于预设的第二阈值;
由于一个历史位置信息对应一个预取层级,因此,在第二确定单元64确定出与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息之后,即可知道该历史信息对应的满足预取条件的预取层级。其中,该满足预取条件的预取层级一定不是默认预取层级。
通过第二确定单元M确定出的历史位置信息对应的预取层级来控制是否启动数据预取,并在运行一段时间后,命中率判断单元55还用于判断第二确定单元M确定出的历史位置信息对应的预取层级的命中率是否大于第二阈值。其中,第二阈值是预设的参考值, 该参考值用于衡量通过判断该预取层级是否满足预取条件来确定是否启动数据预取的方式能否保证多核处理装置的性能。
进一步地,所述位置信息判断模块42还包括
默认预取层级设定单元56,用于在所述命中率判定判断单元55判断该历史位置信息对应的预取层级的命中率大于第二阈值时,将所述第二确定单元M确定出的历史位置信息对应的预取层级设定为默认预取层级。
其中,命中率判定判断单元55的判断结果是大于第二阈值时,则表明通过判断当前的预取层级是否满足预取条件来确定是否启动数据预取的方式是合理的,因此默认预取层级设定单元56需要将该预取层级设定为默认预取层级。如此,在下次读操作到来时,能够较快地判断出满足预取条件的预取层级,节省了开销。
本实施例中,通过第一判断单元先判断读操作信令所请求读取的数据位置信息与为所述多层级判定架构中默认预取层级记录的历史位置信息是否相邻,以及在判断结果为否时,再通过第二判断单元分别判断所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻的方式,达到了依次判断多层级判定架构中是否存在满足预取条件的预取层级的目的。
请参考图6,是本发明提供的一种数据预取装置第二实施例的结构示意图,所述装置包括
接收模块41,用于接收读操作信令;
节点剩余内存判断模块44,用于在所述接收模块41接收到读操作信令后,判断所有节点的剩余内存之和是否大于预设的第三阈值;
其中,所述节点指的是多核处理装置系统架构中,距离同一块内存距离相等的CPU 的集合,所有节点的集合,则称为全局。可以理解的是,一个节点中,包括多个CPU,该多个 CPU访问该内存的速度相同,该内存则称为节点中所有CPU的本地内存。
所述第三阈值,是预先设定的、用以判断是否需要启动数据预取的参考值,该参考值可以动态调整。若节点剩余内存判断模块44判断所有节点的剩余内存(包括空闲内存和潜在可以交换出去的内存)之和小于或等于该第三阈值,则表示此时全局的内存比较小, 负载较重,没有必要启动数据预取。若所有节点的剩余内存之和大于该第三阈值,则表明此时全局的内存较大,负载较轻,可以启动数据预取。
位置信息判断模块42,用于判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述接收模块41接收的读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;
数据预取模块43,用于在所述位置信息判断模块42的判断结果为存在时,启动数据预取。
存放位置控制模块45,用于按照处理预取数据的进程最多的CPU距离所述预取数据最近的原则,控制预取数据的存放位置;其中,所述预取数据是所述数据预取模块43启动数据预取之后得到的。
其中,启动数据预取具体是由数据预取模块43中的进程操作的,具体实现中,存放位置控制模块45控制预取数据的存放位置的方式为
若判断启动数据预取的进程所在的CPU处理所述预取数据的进程最多且本地剩余内存足够大,则控制进程将所述预取数据存入该CPU的本地内存中;
若判断启动数据预取的进程所在的CPU处理所述预取数据的进程最多且本地剩余内存不够时,则控制进程将所述预取数据存入该CPU临近节点的内存中;或者控制进程将一部分预取数据存放在当前CPU的本地内存,将另一部分预取数据存入当前CPU临近节点的内存中。
若判断启动数据预取的进程所在的CPU处理所述预取数据的进程少,查询是否存在处理所述预取数据的进程最多的CPU ;若查询到处理所述预取数据的进程最多的CPU,判断所述处理所述预取数据的进程最多的CPU的本地剩余内存是否足够大,若是,则控制进程将所述预取数据存入该CPU的本地内存中;若否,则控制进程所述预取数据存入该CPU临近节点的内存中;
若未查询到处理所述预取数据的进程最多的CPU,则控制进程将所述预取数据平均分发到处理作所述预取数据的进程数量相同的CPU的本地内存中。
本实施例中,通过判断所有节点的剩余内存之和是否大于预设的第三预设阈值, 并在剩余内存之和大于第三阈值时为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息, 并在判断结果为存在时,启动数据预取。如此设计,与现有技术中只判断一个预取层级是否满足预取条件的预取机制相比,本实施例得在负载较小时,能够判断多个预取层级是否满足预取条件,并在任一预取层级的历史位置信息满足预取条件时启动数据预取,从而提高了启动数据预取的机率。
当需要说明的是,当数据预取装置为多核处理装置,如多核服务器时,本实施例能够使得多核服务器启动数据预取的机率尽可能地不受其服务类型的限制,尽可能地避免了不同服务类型的多核服务器采用相同预取机制判断其是否启动数据预取时得到的预取机率不一样的情况,进而提高了多核服务器的性能。
同时,本实施例中还将预取得到的预取数据,按照操作所述预取数据进程最多的 CPU距离所述预取数据最近的原则,控制预取数据在多核处理装置内的存放位置,从而使得预取数据尽可能地靠近操作其最多的CPU,提高了多核处理装置获取预取数据的速度,从而提高了所述CPU处理所述预取数据的效率,进一步提高了多核处理装置的性能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
权利要求
1.一种数据预取方法,其特征在于,包括接收读操作信令;判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;若存在,确定存在满足预取条件的预取层级,启动数据预取。
2.如权利要求1所述的方法,其特征在于,判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息,包括判断所述读操作信令所请求读取的数据位置信息与为多层级判定架构中默认预取层级记录的历史位置信息是否相邻;若相邻,则确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;若不相邻,判断所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻;若所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息相邻,确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息。
3.如权利要求2所述的方法,其特征在于,在判断所述读操作信令所请求读取的数据位置信息与为多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻之前,还包括判断记录的所述默认预取层级的命中率是否小于预设的第一阈值;其中,所述命中率为所述默认预取层级满足预取条件的次数与未满足预取条件的次数的比值;若是,则执行判断所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻的步骤。
4.如权利要求2或3所述的方法,其特征在于,在所述读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息相邻,确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息之后,所述方法还包括判断该历史位置信息对应的预取层级的命中率是否大于预设的第二阈值;若大于预设的第二阈值,则将该历史位置信息对应的预取层级设定为默认预取层级。
5.如权利要求1-4任一项所述的方法,其特征在于,所述多层级判定架构中的预取层级根据多核处理装置的系统架构的层级结构相应设定。
6.如权利要求1-5任一项所述的方法,其特征在于,在所述启动数据预取之后,所述方法还包括按照处理预取数据的进程最多的CPU距离所述预取数据最近的原则,控制所述预取数据的存放位置;其中所述预取数据是启动数据预取得到的。
7.如权利要求1-5任一项所述的方法,其特征在于,在判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息之前,还包括判断所有节点的剩余内存之和是否大于预设的第三阈值,若是,则执行判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息的步骤。
8.一种数据预取装置,其特征在于,包括 接收模块,用于接收读操作信令;位置信息判断模块,用于判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述接收模块接收的读操作信令所请求读取的数据位置信息相邻的历史位置信息;其中,所述历史位置信息包括为所述多层级判定架构中任一预取层级记录的上一次读操作所读取的数据位置信息;数据预取模块,用于在所述位置信息判断模块的判断结果为存在时,确定存在满足预取条件的预取层级,启动数据预取。
9.如权利要求8所述的装置,其特征在于,所述位置信息判断模块包括第一判断单元,用于判断所述接收模块接收的读操作信令所请求读取的数据位置信息与为多层级判定架构中默认预取层级记录的历史位置信息是否相邻;第一确定单元,用于在所述第一判断单元的判断结果为相邻时,确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;第二判断单元,用于在所述第一判断单元的判断结果为不相邻时,判断所述接收模块接收的读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史位置信息是否相邻;第二确定单元,还用于在所述第二判断单元的判断结果为相邻时,确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息。
10.如权利要求9所述的装置,其特征在于,所述位置信息判断模块还包括命中率判断单元,用于在所述第一判断单元的判断结果为不相邻时,判断记录的所述默认预取层级的命中率是否小于预设的第一阈值;其中,所述命中率为所述默认预取层级满足预取条件的次数与未满足预取条件的次数的比值;所述第二判断单元,用于在所述命中率判断单元的判断结果为是时,判断所述接收模块接收的读操作信令所请求读取的数据位置信息与为所述多层级判定架构中其它任一预取层级记录的历史数据位置信息是否相邻。
11.如权利要求10所述的装置,其特征在于,所述命中率判断单元,还用于在所述第二确定单元确定存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息之后,判断该历史位置信息对应的预取层级的命中率是否大于第二阈值;所述位置信息判断模块还包括默认预取层级设定单元,用于在所述命中率判定判断单元判断大于第二阈值时,将所述第二确定单元确定出的该历史位置信息对应的预取层级设定为默认预取层级。
12.如权要求8-11任一项所述的装置,其特征在于,所述多层级判定架构中的预取层级根据多核处理装置的系统架构的层级结构相应设定。
13.如权利要求8-12任一项所述的装置,其特征在于,所述装置还包括存放位置控制模块,用于按照处理预取数据的进程最多的CPU距离所述预取数据最近的原则,控制预取数据的存放位置;其中,所述预取数据是所述数据预取模块启动数据预取之后得到的。
14.如权利要求8-12任一项所述的装置,其特征在于,所述装置还包括 节点剩余内存判断模块,用于在所述接收模块接收到读操作信令后,判断所有节点的剩余内存之和是否大于预设的第三阈值;所述位置信息判断模块,用于在所述节点剩余内存判断模块的判断结果为是时,判断判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息。
全文摘要
本发明实施例公开了一种数据预取方法,包括接收读操作信令;判断为多层级判定架构中多个预取层级分别记录的历史位置信息中,是否存在与所述读操作信令所请求读取的数据位置信息相邻的历史位置信息;若存在,确定存在满足预取条件的预取层级,启动数据预取。本发明实施例还公开了一种数据预取装置。采用本发明实施例,与现有技术中只判断一个预取层级是否满足预取条件的预取机制相比,本实施例能够判断多个预取层级是否满足预取条件,并在任一预取层级满足预取条件时启动数据预取,从而提高了启动数据预取的几率。
文档编号G06F9/345GK102508642SQ20111035460
公开日2012年6月20日 申请日期2011年11月10日 优先权日2011年11月10日
发明者刘奖, 李海伟, 王伟, 章晓峰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1