发明内容
本发明要解决的技术问题是提供一种多核或集散系统的存储器控制方法,该方法可以使多核或集群系统满足不同软件和应用环境的需求,从而提高计算机系统的运行效率。
为解决上述技术问题,本发明多核或集群系统的存储器控制方法,所述存储器包括多核系统中的缓存和集群系统中的内存,所述方法包括如下步骤:
第1步,多核系统中,在每个内核的本地缓存或该内核与其他内核共享的缓存中建立至少一个缓存组;
或者集群系统中,在每个节点的本地内存或该节点与其他节点共享的内存中建立至少一个内存组;
第2步,当多核系统中有内核在一定时间内访问缓存和/或内存时的数据吞吐量满足预先设定的条件Ch时,该内核使用其他内核所建立的缓存组;
或者,当集群系统中有节点在一定时间内访问内存和/或硬盘的数据吞吐量满足预先设定的条件Ch时,该节点使用其他节点所建立的内存组;
条件Ch设定为:Vref值大于βh;
其中Vref的计算公式为:Rc/(Ri+Ravg);
Rc为多核系统中当前内核的数据吞吐量与数据带宽的比值,或集群系统中当前节点的数据吞吐量与数据带宽的比值;
Ravg为多核系统中所有内核或与当前内核相邻的部分内核的平均数据负荷率,或集群系统中所有节点或与当前节点相邻的部分节点的平均数据负荷率,所述平均数据负荷率为数据吞吐量与数据带宽的比值的平均值;
Ri为大于零小于1的任意实数;
βh为大于等于1的实数。
本发明对多核或集群系统的存储器采用动态控制:当多核系统中有内核在一定时间内访问内存的数据吞吐量大于预先设定的数值,即表示该内核的本地缓存存储容量不足,本发明即使用其余内核的缓存;集群系统与之类似。本发明所述方法可以使多核或集群系统适应不同软件及应用环境,从而提高计算机系统的运行效率。
具体实施方式
请参阅图1,现有的多核或集群系统中,多个内核或节点的连接结构多种多样。图1(a)所示为一维总线结构,其中圆圈代表多核系统中的一个内核或者集群系统中的一个节点。图1(b)、图1(c)、图1(d)所示分别为二维矩形结构、三维立方体结构、三维金刚石结构。
请参阅图2(a),现有的多核系统中,每个内核均连接有高速缓存,然后再连接内存。本发明所述多核系统的存储器控制方法,其中的存储器仅涉及多核系统的高速缓存,不涉及内存。
请参阅图2(b),现有的集群系统中,每个节点均连接有内存,然后再连接硬盘。本发明所述集群系统的存储器控制方法,其中的存储器仅涉及集群系统的内存,不涉及硬盘。
请参阅图3,本发明多核或集群系统的存储器控制方法包括如下步骤:
第1步,多核系统中,在每个内核的本地缓存或该内核与其他内核共享的缓存中建立至少一个缓存组;
或者集群系统中,在每个节点的本地内存或该节点与其他节点共享的内存中建立至少一个内存组;
第2步,当多核系统中有内核在一定时间内访问缓存和/或内存时的数据吞吐量满足预先设定的条件Ch时,该内核使用其他内核所建立的缓存组;
或者,当集群系统中有节点在一定时间内访问内存和/或硬盘的数据吞吐量满足预先设定的条件Ch时,该节点使用其他节点所建立的内存组;
条件Ch设定为:Vref值大于βh;
其中Vref的计算公式为:Rc/(Ri+Ravg);
Rc为多核系统中当前内核的数据吞吐量与数据带宽的比值,或集群系统中当前节点的数据吞吐量与数据带宽的比值;
Ravg为多核系统中所有内核或与当前内核相邻的部分内核的平均数据负荷率,或集群系统中所有节点或与当前节点相邻的部分节点的平均数据负荷率,所述平均数据负荷率为数据吞吐量与数据带宽的比值的平均值;
Ri为大于零小于1的任意实数;
βh为大于等于1的实数。
现有的多核系统中,内核和高速缓存之间存在两种物理形式:一种是每个内核具有各自独立的本地缓存;另一种是若干内存具有物理层面上共享的缓存。每个内核只能使用本地缓存或该内核与其他内核所共享的缓存。集群系统与之类似,节点和内存之间也存在两种物理形式:一种是每个节点具有各自独立的本地内存;另一种是若干节点具有物理层面上共享的内存。每个节点只能使用本地内存或该节点与其他节点所共享的内存。
上述内核/节点访问内存/硬盘的数据吞吐量大于预先设定的数值,即表示缓存/内存的容量不足,理应增加缓存/内存的存储空间。现有方法中,多核系统中每个内核的缓存空间受限于其本地缓存或与其他内核共享的缓存大小,集群系统中每个节点的内存空间受限于其本地内存或与其他节点共享的内存大小,无法进行扩展。
本发明所述方法使得多核系统中的每个内核可以使用的缓存最大可扩展到所有缓存,集群系统中的每个节点可以使用的内存最大可扩展到所有内存。这有利于解决多核或集群系统的缓存/内存瓶颈障碍,提升整个系统的运行效率。
所述方法的第1步中,多核系统的每个内核保存该内核所建立的缓存组的标识符、存储地址、使用权限和关联内核表,集群系统的每个节点保存该节点所建立的内存组的标识符、存储地址、使用权限和关联节点表。
所述方法的第1步中,多核系统的每个内核建立的多个缓存组之间具有不同的标识符,不同内核建立的缓存组之间具有相同或部分相同的标识符;集群系统的每个节点建立的多个内存组之间具有不同的标识符,不同节点建立的内存组之间具有相同或部分相同的标识符。
所述方法的第1步中,多核系统中有缓存组变更标识符时,与该缓存组变更前具有相同标识符的缓存组也随之变更为该缓存组变更后的标识符;集群系统中有内存组变更标识符时,与该内存组变更前具有相同标识符的内存组也随之变更为该内存组变更后的标识符。
所述方法的第1步中,多核系统的缓存组的存储地址为一个或多个、连续或不连续的缓存段组成;集群系统的内存组的存储地址为一个或多个、连续或不连续的内存段组成。
所述方法的第1步中,所述使用权限至少包括“仅限本地内核或节点使用”、“仅限部分内核或节点使用”和“为全部内核或节点使用”。
所述方法的第1步中,多核系统的每个内核均指定一个专用缓存组;集群系统的每个节点均指定一个专用内存组。
所述方法的第1步中,所述关联内核表包括与本地内核的专用缓存组具有相同标识符的其他内核所建立的缓存组的存储地址和编号;所述关联节点表包括与本地节点的专用内存组具有相同标识符的其他节点所建立的内存组的存储地址和编号。
多核系统初始化时,每个内核的专用缓存组为部分或全部的本地缓存;集群系统初始化时,每个节点的专用内存组为部分或全部的本地内存。
所述方法的第2步中,多核系统的每个内核仅使用与该内核的专用缓存组具有相同标识符的该内核及其他内核所建立的缓存组;集群系统的每个节点仅使用与该节点的专用内存组具有相同标识符的该节点与其他节点所建立的内存组。
所述方法的第2步中,多核系统中有内核使用其他内核所建立的缓存组时,该内核将其他内核所建立的缓存组的标识符、存储地址、使用权限中的一个或多个信息添加到该内核所建立的缓存组的关联信息中;集群系统中有节点使用其他节点所建立的内存组时,该节点将其他节点所建立的内存组的标识符、存储地址、使用权限中的一个或多个信息添加到该节点所建立的内存组的关联信息中。
所述方法的第2步中,当多核系统中有缓存组在一定时间内的数据吞吐量满足预先设定的条件Cm时,减少该缓存组的存储空间的大小或将该缓存组所存储的内容释放;
或者,当集群系统中有内存组在一定时间内的数据吞吐量满足预先设定的条件Cm时,减少该内存组的存储空间的大小或将该内存组所存储的内容释放;
条件Cm设定为:Vrefm值小于βm;
其中Vrefm的计算公式为:(Rc+Rm)/Ravg;
Rm为大于零小于1的任意实数;βm为小于等于1大于零的实数。
上述缓存组/内存组在一定时间内被访问的数据吞吐量小于预先设定的数值,即表示该缓存组/内存组的使用率不高,理应减少其存储空间,或者将其缓存的内容释放以备后用。
所述方法的第2步中,当多核系统中有内核的使用率超过预先设定的数值、且多核系统中有其余内核的使用率低于所述预先设定的数值时,将所述内核的一个或多个线程转移至所述其余内核进行;
或者,当集群系统中有节点的使用率超过预先设定的数值、且集群系统中有其余节点的使用率低于所述预先设定的数值时,将所述节点的一个或多个线程转移至所述其余节点进行。
上述针对内核或节点的使用率上限,通常可以设定为80%。
在多核系统中,系统实时监视各内核使用其他内核中的缓存时的效率,当调整缓存时,优先使用效率较高的缓存,释放效率较低的缓存;
在集群系统中,系统实时监视各节点使用其他节点中的内存时的效率,当调整内存时,优先使用效率较高的内存,释放效率较低的内存;
所述缓存或内存的效率为,Ec=Wci/((KeLcn)d(Tc)i),其中:
Ec为多核系统中当前内核使用其他内核的缓存时的效率,或者集群系统中当前节点使用其他节点的内存时的效率;
Wci为多核系统中其他内核的数据带宽,即每秒能传输的数据量,或者集群系统中其他节点的数据带宽;
Lcn为多核系统中一定时间内当前内核与其他内核间的数据吞吐量,或者集群系统中一定时间内当前节点与其他节点间的数据吞吐量;
Tc为多核系统中一定时间内当前内核与其他内核传送数据时的延迟时间,或者集群系统中一定时间内当前节点与其他节点传送数据时的延迟时间;
Ke、d、i为大于零的任意实数,用于调节数据吞吐量与延迟时间的权重。