本发明专利技术实施例提供了多线程访问多副本的方法和装置。该方法包括:当进程的多个线程被分布到不同节点时,创建与进程的进程页目录表的内容相同的线程页目录表,每份线程页目录表包括用于指向特定数据的特殊表项和特殊表项之外的普通表项,其中每个线程对应一份线程页目录表,每个线程的执行基于相对应的线程页目录表,特定数据是在不同节点具有多副本的数据;对于每个线程在被调度时,当该线程的线程页目录表中的特殊表项未指向在该线程所在节点中存储的特定数据时,基于该特定数据的物理地址,修改该特殊表项以指向该特定数据。基于上述技术方案,可以使分布到不同节点的线程访问所在节点处存储的数据副本,从而提高系统性能。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及计算机领域,并且更具体地,涉及计算机领域中多线程访问多副本的方法和装置。
技术介绍
NUMA(Non-uniform Memory Access,非一致内存访问)是一种分布式结构,每个处理器都会挂载内存、外设等。由于每组处理器和内存都连接到同一系统,NUMA显示了其扩展性的优势,加上其高可靠性、高应用性和高服务性的特征,已广泛应用到中高端服务器领域。由于NUMA节点中的任一处理器都可以访问任意的内存,使得每个处理器访问不同的内存存在着不同的延迟。随着系统的扩展,NUMA节点逐渐增加,处理器访问远端节点的延迟也相应大幅提升,从而影响系统的整体性能。特别是对于系统中被频繁访问的数据 (例如内核代码和内核只读数据),如果这些数据只存在于一个节点中,那么其他节点的处理器访问这些数据将具有较大的延迟,并且如果这些数据在短时间内被多个节点的处理器访问,互联硬件的传输带宽就成为了另一影响性能的因素。在相关技术中,可以将系统中被频繁访问的数据复制到每个节点的内存中,这样每个节点都有一个本地副本,运行在各个节点上的进程都可以访问本地副本,从而避免因为不得不在其他节点访问这些被频繁访问的数据而引发的延迟影响,同时还可以减少互联硬件的传输带宽消耗。以内核代码和内核只读数据为例,为了实现内核多副本,可以在每个节点上申请足够的内存,将内核代码和内核只读数据复制到该新区域;通过计算获取各个节点的内核多副本和对应线性地址的映射关系;当进程被调度到某个节点上时,基于保存在该节点上的内核副本的映射关系,修改进程页目录表的某些表项,使得该进程通过其进程页目录表的内容可以访问本节点的内核代码副本。虽然通过内核多副本技术,可以使进程访问本节点上的内核代码和内核只读数据,但是如果进程创建了多个线程,并且这些线程被分布到不同的节点上执行,那么这些线程仍将基于进程页目录表的内容运行。这样,由于进程页目录表指向的内核副本位于一个节点中,所以多线程并不能访问所在节点中保存的内核副本,仍将产生较大的延迟并受互联硬件传输带宽的限制。
技术实现思路
本专利技术实施例提供了多线程访问多副本的方法和装置,使得分布到不同节点的线程能够访问所在节点处保存的具有多副本的数据,从而可以改善系统性能。一方面,本专利技术实施例提供了多线程访问多副本的方法,包括当进程的多个线程被分布到不同节点时,创建与所述进程的进程页目录表的内容相同的线程页目录表,每份线程页目录表包括用于指向特定数据的特殊表项和所述特殊表项之外的普通表项,其中每个线程对应一份线程页 目录表,每个线程的执行基于相对应的线程页目录表,所述特定数据是在不同节点具有多副本的数据;对于每个线程在被调度时,当该线程的线程页目录表中的特殊表项未指向在该线程所在节点中存储的所述特定数据时,基于该特定数据的物理地址,修改该特殊表项以指向该特定数据。另一方面,本专利技术实施例提供了用于多线程访问多副本的装置,包括第一创建模块,用于当进程的多个线程被分布到不同节点时,创建与所述进程的进程页目录表的内容相同的线程页目录表,每份线程页目录表包括用于指向特定数据的特殊表项和所述特殊表项之外的普通表项,其中每个线程对应一份线程页目录表,每个线程的执行基于相对应的线程页目录表,所述特定数据是在不同节点具有多副本的数据;修改模块,用于对于每个线程在被调度时,当该线程的线程页目录表中的特殊表项未指向在该线程所在节点中存储的所述特定数据时,基于该特定数据的物理地址,修改该特殊表项以指向该特定数据。基于上述技术方案,通过创建线程页目录表,并使线程目录表中的特殊表项指向线程所在节点处的具有多副本的数据,这样在线程执行过程中可以使得分布到不同节点的线程访问所在节点处存储的数据副本,从而避免线程访问远端数据产生的延迟并避免受到互联硬件传输带宽的限制,使得系统性能得以提高。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例的多线程访问多副本的方法的流程图。图2是根据本专利技术实施例的实现多线程访问多副本的逻辑结构的示意图。图3是根据本专利技术实施例的多线程访问多副本的另一方法的流程图。图4是根据本专利技术实施例的在实现多线程访问多副本的情况下完整执行进程的总过程的流程图。图5是根据本专利技术实施例的多线程访问多副本的再一方法的流程图。图6是根据本专利技术实施例的创建图5中的进程页目录表的方法的流程图。图7是根据本专利技术实施例的用于多线程访问多副本的装置的结构框图。图8是根据本专利技术实施例的用于多线程访问多副本的另一装置的结构框图。图9是根据本专利技术实施例的用于多线程访问多副本的再一装置的结构框图。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术的一部分实施例,而不是全部实施例。基于本专利技术中的所述实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本专利技术保护的范围。首先,结合图1描述根据本专利技术实施例的多线程访问多副本的方法100。如图1所示,方法100包括在SllO中,当进程的多个线程被分布到不同节点时, 创建与进程的进程页目录表的内容相同的线程页目录表,每份线程页目录表包括用于指向特定数据的特殊表项和特殊表项之外的普通表项,其中每个线程对应一份线程页目录表, 每个线程的执行基于相对应的线程页目录表,特定数据是在不同节点具有多副本的数据; 在S120中,对于每个线程在被调度时,当该线程的线程页目录表中的特殊表项未指向在该线程所在节点中存储的特定数据时,基于该特定数据的物理地址,修改该特殊表项以指向该特定数据。这样,通过创建线程页目录表,并使线程目录表中的特殊表项指向线程所在节点处存储的在不同节点具有多副本的特定数据,可以使分布到不同节点的线程访问所在节点中的特定数据,从而避免线程访问远端数据产生的延迟并避免受到互联硬件传输带宽的限制,使得系统性能得以提高。在SllO中,进程可以被划分为多个线程,线程可以被分布到不同的节点来执行。 节点可以是NUMA架构中的节点,也可以是其他具有扩展性的系统结构中支持多处理器并发操作的节点,还可以是需要实现多线程频繁访问只读数据的任何装置中的节点等。可以为线程创建线程页目录表,使得线程基于它所对应的线程页目录表来执行。例如,每个线程可以对应只属于自己的一份线程页目录表。这样,如果进程被划分为20个线程,那么需要为20个线程创建20份线程页目录表,线程与线程页目录表一一对应。再例如,每个线程对应由与该线程处于同一节点的至少两个线程共享的一份线程页目录表。这样,如果进程被划分为20个线程,20个线程被平均分配到4个节点,那么每个节点中可以只有一份线程页目录表,由该节点上的线程所共享。从而,相比于线程与线程页目录表一一对应的情形,可以减小需要维护的线程页目录表数量,从而减小系统开销。当然,本领域技术人员也可以想到,在该例子中,在一个节点也可以存在两份线程页目录表, 其中一份由位于该节点的5个线程中的两个共享,另一份由剩余的3个线程共享。还例如本文档来自技高网...
【技术保护点】
1.一种多线程访问多副本的方法,其特征在于,包括:当进程的多个线程被分布到不同节点时,创建与所述进程的进程页目录表的内容相同的线程页目录表,每份线程页目录表包括用于指向特定数据的特殊表项和所述特殊表项之外的普通表项,其中每个线程对应一份线程页目录表,每个线程的执行基于相对应的线程页目录表,所述特定数据是在不同节点具有多副本的数据;对于每个线程在被调度时,当该线程的线程页目录表中的特殊表项未指向在该线程所在节点中存储的所述特定数据时,基于该特定数据的物理地址,修改该特殊表项以指向该特定数据。
【技术特征摘要】
【国外来华专利技术】1.一种多线程访问多副本的方法,其特征在于,包括当进程的多个线程被分布到不同节点时,创建与所述进程的进程页目录表的内容相同的线程页目录表,每份线程页目录表包括用于指向特定数据的特殊表项和所述特殊表项之外的普通表项,其中每个线程对应一份线程页目录表,每个线程的执行基于相对应的线程页目录表,所述特定数据是在不同节点具有多副本的数据;对于每个线程在被调度时,当该线程的线程页目录表中的特殊表项未指向在该线程所在节点中存储的所述特定数据时,基于该特定数据的物理地址,修改该特殊表项以指向该特定数据。2.根据权利要求1所述的方法,其特征在于,还包括在基于各线程的线程页目录表执行各线程的过程中,更新需要同步的线程页目录表中的普通表项以使各线程正常执行。3.根据权利要求2所述的方法,其特征在于,所述更新需要同步的线程页目录表中的普通表项包括当特定线程页目录表中的普通表项改变时,基于该普通表项,更新其它所有线程页目录表中的普通表项。4.根据权利要求2所述的方法,其特征在于,所述更新需要同步的线程页目录表中的普通表项包括当特定线程发生缺页异常时,寻找发生了变化的线程页目录表;基于该线程页目录表中的普通表项,更新所述特定线程的线程页目录表中的普通表项。5.根据权利要求1所述的方法,其特征在于,所述创建与所述进程的进程页目录表的内容相同的线程页目录表之前,还包括确定所述进程将使用的所有地址空间;基于所述所有地址空间,创建进程页目录表以指向所述所有地址空间。6.根据权利要求1所述的方法,所述特定数据包括如下至少一个 内核代码和内核只读数据;内存中的只读数据。7.根据权利要求1所述的方法,其特征在于,所述创建与所述进程的进程页目录表的内容相同的线程页目录表包括将所述进程页目录表设置为主线程的线程页目录表; 对于其它线程,生成与所述进程页目录表的内容相同的线程页目录表。8.根据权利要求1所述的方法,其特征在于,所述每个线程对应一份线程页目录表包括如下之一每个线程对应只属于自己的一份线程页目录表;每个线程对应由与该线程处于同一节点的至少两个线程共享的一份线程页目录表; 所述多个线程中的部分线程中的每个线程对应只属于自己的一份线程页目录表,其他线程中的每个线程对应由与该线程处于同一节点的至少两个线程共享的一份线程页...
【专利技术属性】
技术研发人员:王伟,刘仪阳,章晓峰,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:94
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。