CN103699435A - 负载均衡方法及装置 - Google Patents

负载均衡方法及装置 Download PDF

Info

Publication number
CN103699435A
CN103699435A CN201310728268.2A CN201310728268A CN103699435A CN 103699435 A CN103699435 A CN 103699435A CN 201310728268 A CN201310728268 A CN 201310728268A CN 103699435 A CN103699435 A CN 103699435A
Authority
CN
China
Prior art keywords
garbage reclamation
task queue
reclamation thread
thread
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310728268.2A
Other languages
English (en)
Other versions
CN103699435B (zh
Inventor
廖彬
靳国杰
高翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201310728268.2A priority Critical patent/CN103699435B/zh
Publication of CN103699435A publication Critical patent/CN103699435A/zh
Application granted granted Critical
Publication of CN103699435B publication Critical patent/CN103699435B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供一种负载均衡方法及装置,应用于包括至少两个节点的多处理器系统,其中,所述方法包括:第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,第一垃圾回收线程为任务队列为空的垃圾回收线程,第一节点为第一垃圾回收线程所属的节点,第二回收线程为与第一垃圾线程同属于同一个节点中的不同CPU核处理的垃圾回收线程;在第一垃圾回收线程确定第二垃圾回收线程的任务队列为非空任务队列时,从第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列。本发明实施例提供的负载均衡方法及装置,提高了负载均衡的伸缩性,提高了NUMA架构中垃圾回收的性能。

Description

负载均衡方法及装置
技术领域
本发明实施例涉及计算技术,尤其涉及一种负载均衡方法及装置。
背景技术
非一致性内存访问(Non-Uniform Memory Access Architecture,简称NUMA)是一种多处理器(CPU)互联架构技术。在NUMA架构中,每个节点的CPU核既可以访问所在节点的物理内存(本地内存),也可以访问其它节点的物理内存(远程内存)。
在应用程序执行过程中,如果应用线程无法在Java堆中继续分配新对象,Java虚拟机就会触发垃圾回收线程回收不再使用的内存,以便后续内存分配能够顺利进行。并行垃圾回收是指多个垃圾回收线程并行协同完成垃圾回收工作。在并行垃圾回收过程中,各个垃圾回收线程的回收压力会出现不均衡的情况,因此,在并行垃圾回收过程中,Java虚拟机需要处理垃圾回收线程负载均衡的问题。在传统的基于任务队列的并行垃圾回收的负载均衡技术中:Java虚拟机在垃圾回收初始阶段,将根引用平均分配给各个垃圾回收线程;在垃圾回收进行阶段,当某个垃圾回收线程的任务队列为空时,该垃圾回收线程将随机查找其他垃圾回收线程的任务队列,如果该任务队列不为空,则将该任务队列的尾部对象加入该垃圾回收线程的任务队列,继续进行垃圾回收工作。
然而,在NUMA架构中,传统的并行垃圾回收的负载均衡技术会导致大量的远程访问,使得垃圾回收性能降低。
发明内容
本发明实施例提供一种负载均衡方法及装置,以解决传统负载均衡技术在NUMA架构中垃圾回收的大量远程访问导致垃圾回收性能降低的问题,提高NUMA架构中垃圾回收的性能。
第一方面,本发明实施例提供一种负载均衡方法,应用于包括至少两个节点的多处理器系统,其中,所述方法包括:
第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程;
在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
根据第一方面,在第一方面的第一种可能的实现方式中,还包括:
在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;
在所述第一垃圾回收线程确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述从所述第二垃圾回收线程的任务队列中截取对象,包括:截取所述第二垃圾回收线程的任务队列中的尾部对象;
所述从所述其他节点中的第三垃圾回收线程的任务队列中截取对象,包括:截取所述第三垃圾回收线程的任务队列中的尾部对象。
根据第一方面、第一方面的第一种至第二种可能的实现方式的任意一种,在第一方面的第三种可能的实现方式中,还包括:
所述第一垃圾回收线程获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;
所述第一垃圾回收线程将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
第二方面,本发明实施例提供一种负载均衡装置,应用于包括至少两个节点的多处理器系统,其中,所述负载均衡装置包括:
第一确定模块,用于对第一节点中的第二垃圾回收线程的任务队列进行判断;
第一获取模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列;所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
根据第二方面,在第二方面的第一种可能的实现方式中,还包括:
第二确定模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;
第二获取模块,用于在所述第二确定模块确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
根据第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一获取模块具体用于:截取所述第二垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列;
所述第二获取模块具体用于:截取所述第三垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列。
根据第二方面、第二方面的第一种至第二种可能的实现方式的任意一种,在第二方面的第三种可能的实现方式中,还包括:第三获取模块,用于获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
本发明实施例提供的负载均衡方法及装置,通过在垃圾回收过程中优先在本地节点进行负载均衡,即,空闲的垃圾回收线程优先从本地节点内的其他垃圾回收线程的非空任务队列中截取对象,避免了传统技术在NUMA架构中随机截取对象导致的大量远程访问,使得负载均衡对垃圾回收性能的提升幅度不再受到CPU核数增加的限制,因而,提高了负载均衡的伸缩性,提高了NUMA架构中垃圾回收的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的负载均衡方法的流程图;
图2为本发明实施例提供的负载均衡装置的结构示意图;
图3为本发明实施例提供的负载均衡装置的另一结构示意图;
图4为本发明实施例提供的负载均衡装置的又一结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的负载均衡方法的流程图。本发明实施例提供的负载均衡方法,应用于包括至少两个节点的多处理器系统,如图1所示,所述方法包括:
101、第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二回收线程为与所述第一垃圾线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
102、在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
具体地,本发明实施例提供的负载均衡方法可以应用于NUMA架构的多处理器系统。所述多处理器系统包括至少两个节点,所述至少两个节点包括:第一节点和第二节点,所述第一垃圾回收线程和所述第二垃圾回收线程属于所述第一节点中的不同CPU核处理的垃圾回收线程;所述第一节点为所述第一垃圾回收线程的本地节点。每个节点包括内存空间(本地内存)和至少一个CPU核,每个CPU核设置一个垃圾回收线程,每个垃圾回收线程都分别维护一个任务队列,任务队列中的元素由对象组成。本发明实施例提供的负载均衡方法的执行主体可以为第一垃圾回收线程。在应用程序执行过程中,当应用线程无法在Java堆中继续分配新对象时,Java虚拟机就会触发垃圾回收,回收不再使用的内存,以供后续内存分配。在垃圾回收进行阶段,第一垃圾回收线程判断所述第一垃圾回收线程的任务队列是否为空:若确定所述第一垃圾回收线程的任务队列为空(也即所述第一垃圾回收线程处于空闲状态),则第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断;在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
在传统的并行垃圾回收的负载均衡技术,当本地节点中的某个垃圾回收线程(例如线程1)判断其任务队列为空时,线程1随机查找其他垃圾回收线程的任务队列,并从查找到的垃圾回收线程的任务队列中截取对象,然而,在NUMA结构的多处理器系统中,当所述查找到的垃圾回收线程属于其他节点时,线程1为了完成从所述查找到的垃圾回收线程的任务队列中截取对象并加入到的线程1的任务队列的操作,需要执行大量的远程访问,造成垃圾回收时间增大,垃圾回收性能降低。同时,CPU核数的增加也会带来更多的远程访问,导致垃圾回收的性能随着垃圾回收线程的增加不升反降,即负载均衡对垃圾回收性能的提升幅度受到CPU核数增加的限制,负载均衡的伸缩性差。
相比于传统技术,本发明实施例提供的负载均衡方法通过在垃圾回收过程中优先在本地节点进行负载均衡,即,空闲的垃圾回收线程优先从本地节点内的其他垃圾回收线程的非空任务队列中截取对象,避免了传统技术在NUMA架构中随机截取对象导致的大量远程访问,使得负载均衡对垃圾回收性能的提升幅度不再受到CPU核数增加的限制,因而,提高了负载均衡的伸缩性,提高了NUMA架构中垃圾回收的性能。
在上述实施例的基础上,可选的,在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;在所述第一垃圾回收线程确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
具体地,若所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空,则查找所述第二节点中的垃圾回收线程的任务队列;在确定所述第二节点中的第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
在上述实施例的基础上,所述第一垃圾回收线程从所述第二垃圾回收线程的任务队列中截取对象的一种可行的实现方式是:所述第一垃圾回收线程截取所述第二垃圾回收线程的任务队列中的尾部对象。
所述第一垃圾回收线程从所述其他节点中的第三垃圾回收线程的任务队列中截取对象的一种可行的实现方式是:所述第一垃圾回收线程截取所述第三垃圾回收线程的任务队列中的尾部对象。
在上述实施例的基础上,在垃圾回收初始阶段,虚拟机枚举所有根引用对象,构造根引用对象集合;虚拟机将所述根引用对象集合中的根引用对象分配给所述NUMA架构的多处理器系统的各个垃圾回收线程,一种可行的实现方式是:虚拟机将所述根引用对象集合中的同一节点内的根引用对象分配给所述同一节点内的垃圾回收线程;所述第一垃圾回收线程获取所述虚拟机分配给所述第一垃圾回收线程的、位于所述第一节点内的根引用对象,并加入所述第一垃圾回收线程的任务队列。实际中,所述虚拟机可以将所述根引用对象集合中的同一节点内的根引用对象平均分配给所述同一节点的垃圾回收线程。
本发明实施例提供的负载均衡方法,通过在垃圾回收初始阶段,根引用对象被分配给与该根引用对象在同一节点的垃圾回收线程,从而,在垃圾回收线程遍历的初始阶段,所有的对象访问都是本地内存访问,避免了传统技术在NUMA架构中随机分配根引用对象导致的大量远程访问,使得负载均衡对垃圾回收性能的提升幅度不再受到CPU核数增加的限制,因而,提高了负载均衡的伸缩性,提高了NUMA架构中垃圾回收的性能。
在上述实施例的基础上,下面结合一个具体的实施例对本发明实施例提供的在NUMA架构的多处理器系统中实现并行垃圾回收的负载均衡方法的实现过程进行详细说明:
在垃圾回收起始阶段:
1)当应用线程无法在Java堆中继续分配新对象时,Java虚拟机触发垃圾回收。
2)当所有应用线程全部暂停时,垃圾回收开始。
3)Java虚拟机枚举所有根引用对象,构造根引用对象集合。
4)Java虚拟机将所述根引用对象集合中的同一节点内的根引用对象平均分配给所述同一节点的垃圾回收线程。各垃圾回收线程分别将Java虚拟机为各自分配的根引用对象加入各自的任务队列。
在垃圾回收进行阶段:
5)各所述垃圾回收线程从各自的根引用对象开始遍历对象引用关系图,查找并标记活对象,并将标记的活对象加入各自的任务队列。如果某个对象在对象引用关系图中的所有子对象都被遍历过,则将该对象从任务队列中出队。
6)各所述垃圾回收线程检测各自的任务队列是否为空;若各所述垃圾回收线程中的某个垃圾回收线程确定其自身的任务队列为空时,该垃圾回收线程优先从本地节点内的其他垃圾回收线程的非空任务队列中截取对象并加入自身垃圾任务队列,之后继续进行垃圾回收工作;以第一垃圾回收线程为例:
第一垃圾回收线程判断所述第一垃圾回收线程的任务队列(第一任务队列)是否为空;
若所述第一垃圾回收线程确定所述第一任务队列为空,则判断所述第一垃圾回收线程所在的第一节点(即,本地节点)中的其他垃圾回收线程(此例中为第二垃圾回收线程)的任务队列是否为空;
若所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列,则从所述第二垃圾回收线程的非空任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列;
所述第一垃圾回收线程,继续进行垃圾回收工作。
7)若所述第一垃圾回收线程确定所述本地节点中的所有垃圾回收线程(所述第一垃圾回收线程和所述第二垃圾回收线程)的任务队列都为空,则从所述第二节点(即其他节点)中的第三垃圾回收线程的非空任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列;
所述第一垃圾回收线程,继续进行垃圾回收工作。
8)若所述第一垃圾回收线程确定NUMA架构的多处理器系统中的所有垃圾回收线程的任务队列都为空时,对象标记工作完成。
9)Java虚拟机进行Java堆的回收工作。
10)垃圾回收工作完成。
本发明实施例提供的负载均衡方法,解决了传统技术在NUMA架构中垃圾回收阶段的大量远程访问导致垃圾回收性能降低的问题,减短了NUMA架构中并行垃圾回收时间,提高了负载均衡的伸缩性,提高了并行垃圾回收性能,并且减少了内存访问开销,减短了虚拟机总的运行时间,提升了虚拟机的性能。
图2为本发明实施例提供的负载均衡装置的结构示意图。本发明实施例提供的负载均衡装置200应用于包括至少两个节点的多处理器系统,如图2所示,负载均衡装置200包括:
第一确定模块201,用于对第一节点中的第二垃圾回收线程的任务队列进行判断;
第一获取模块202,用于在所述第一确定模块201确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列;所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
本发明实施例提供的负载均衡装置200可以是第一垃圾回收线程,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
图3为本发明实施例提供的负载均衡装置的另一结构示意图。本发明实施例基于图2所示装置实施例来实现,本发明实施例提供的负载均衡装置300也包括第一确定模块201和第一获取模块202,并且各模块也分别具有图2所示装置实施例中的相应功能;进一步地,如图3所示,本发明实施例提供的负载均衡装置300,还可以包括:
第二确定模块301,用于在所述第一确定模块201确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;
第二获取模块302,用于在所述第二确定模块301确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
可选的,所述第一获取模块202具体用于截取所述第二垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列;所述第二获取模块302具体用于截取所述第三垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列。
图4为本发明实施例提供的负载均衡装置的又一结构示意图。本发明实施例提供的负载均衡装置400可以包括图2所示装置实施例中的第一确定模块201和第一获取模块202,以及图3所示装置实施例中的第二确定模块301和第二获取模块302;进一步地,如图4所示,本发明实施例提供的负载均衡装置400,还可以包括:
第三获取模块401,用于获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种负载均衡方法,应用于包括至少两个节点的多处理器系统,其特征在于,包括:
第一垃圾回收线程对第一节点中的第二垃圾回收线程的任务队列进行判断,所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程;
在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到所述第一垃圾回收线程的任务队列。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述第一垃圾回收线程确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;
在所述第一垃圾回收线程确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
3.根据权利要求2所述的方法,其特征在于,
所述从所述第二垃圾回收线程的任务队列中截取对象,包括:截取所述第二垃圾回收线程的任务队列中的尾部对象;
所述从所述其他节点中的第三垃圾回收线程的任务队列中截取对象,包括:截取所述第三垃圾回收线程的任务队列中的尾部对象。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
所述第一垃圾回收线程获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;
所述第一垃圾回收线程将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
5.一种负载均衡装置,应用于包括至少两个节点的多处理器系统,其特征在于,包括:
第一确定模块,用于对第一节点中的第二垃圾回收线程的任务队列进行判断;
第一获取模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为非空任务队列时,从所述第二垃圾回收线程的任务队列中截取对象并加入到第一垃圾回收线程的任务队列;所述第一垃圾回收线程为任务队列为空的垃圾回收线程,所述第一节点为所述第一垃圾回收线程所属的节点,所述第二垃圾回收线程为与所述第一垃圾回收线程同属于同一个节点中的不同CPU核处理的垃圾回收线程。
6.根据权利要求5所述的负载均衡装置,其特征在于,还包括:
第二确定模块,用于在所述第一确定模块确定所述第二垃圾回收线程的任务队列为空时,对第二节点中的第三垃圾回收线程进行判断,所述第二节点为所述至少两个节点中除所述第一节点以外的其他节点;
第二获取模块,用于在所述第二确定模块确定所述第三垃圾回收线程的任务队列为非空任务队列时,从所述第三垃圾回收线程的任务队列中截取对象,并加入到所述第一垃圾回收线程的任务队列。
7.根据权利要求6所述的负载均衡装置,其特征在于,
所述第一获取模块具体用于:截取所述第二垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列;
所述第二获取模块具体用于:截取所述第三垃圾回收线程的任务队列中的尾部对象并加入到所述第一垃圾回收线程的任务队列。
8.根据权利要求5-7任一项所述的负载均衡装置,其特征在于,还包括:
第三获取模块,用于获取所述多处理器系统的虚拟机分配的位于所述第一节点内的根引用对象;将所述虚拟机分配的位于所述第一节点内的根引用对象加入所述第一垃圾回收线程的任务队列。
CN201310728268.2A 2013-12-25 2013-12-25 负载均衡方法及装置 Active CN103699435B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310728268.2A CN103699435B (zh) 2013-12-25 2013-12-25 负载均衡方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310728268.2A CN103699435B (zh) 2013-12-25 2013-12-25 负载均衡方法及装置

Publications (2)

Publication Number Publication Date
CN103699435A true CN103699435A (zh) 2014-04-02
CN103699435B CN103699435B (zh) 2017-05-03

Family

ID=50360974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310728268.2A Active CN103699435B (zh) 2013-12-25 2013-12-25 负载均衡方法及装置

Country Status (1)

Country Link
CN (1) CN103699435B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139938A (zh) * 2015-07-31 2018-06-08 华为技术有限公司 用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序
CN109885404A (zh) * 2019-02-01 2019-06-14 新华三技术有限公司 一种指令处理方法及装置
CN110245135A (zh) * 2019-05-05 2019-09-17 华中科技大学 一种基于numa架构的大规模流式图数据更新方法
CN110673956A (zh) * 2019-09-24 2020-01-10 Oppo广东移动通信有限公司 回收线程创建方法、装置、计算机设备以及存储介质
WO2022111264A1 (en) * 2020-11-24 2022-06-02 International Business Machines Corporation Reducing load balancing work stealing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349656A (en) * 1990-11-28 1994-09-20 Hitachi, Ltd. Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
CN101075209A (zh) * 2006-04-28 2007-11-21 国际商业机器公司 在异构多处理器系统中收集垃圾的系统和方法
CN102027452A (zh) * 2008-05-16 2011-04-20 微软公司 调度器中的调度集合
CN103279353A (zh) * 2013-05-31 2013-09-04 新浪网技术(中国)有限公司 一种应用优化策略确定方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349656A (en) * 1990-11-28 1994-09-20 Hitachi, Ltd. Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
CN101075209A (zh) * 2006-04-28 2007-11-21 国际商业机器公司 在异构多处理器系统中收集垃圾的系统和方法
CN102027452A (zh) * 2008-05-16 2011-04-20 微软公司 调度器中的调度集合
CN103279353A (zh) * 2013-05-31 2013-09-04 新浪网技术(中国)有限公司 一种应用优化策略确定方法、装置及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
杨际祥 等: "并行分治计算中的一种Work-stealing策略", 《小型微型计算机系统》 *
王蕾 等: "任务并行编程模型研究与进展", 《软件学报》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139938A (zh) * 2015-07-31 2018-06-08 华为技术有限公司 用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序
CN109885404A (zh) * 2019-02-01 2019-06-14 新华三技术有限公司 一种指令处理方法及装置
CN109885404B (zh) * 2019-02-01 2021-07-20 新华三技术有限公司 一种指令处理方法及装置
CN110245135A (zh) * 2019-05-05 2019-09-17 华中科技大学 一种基于numa架构的大规模流式图数据更新方法
CN110245135B (zh) * 2019-05-05 2021-05-18 华中科技大学 一种基于numa架构的大规模流式图数据更新方法
CN110673956A (zh) * 2019-09-24 2020-01-10 Oppo广东移动通信有限公司 回收线程创建方法、装置、计算机设备以及存储介质
WO2022111264A1 (en) * 2020-11-24 2022-06-02 International Business Machines Corporation Reducing load balancing work stealing
US11645200B2 (en) 2020-11-24 2023-05-09 International Business Machines Corporation Reducing load balancing work stealing
GB2616755A (en) * 2020-11-24 2023-09-20 Ibm Reducing load balancing work stealing
GB2616755B (en) * 2020-11-24 2024-02-28 Ibm Reducing load balancing work stealing

Also Published As

Publication number Publication date
CN103699435B (zh) 2017-05-03

Similar Documents

Publication Publication Date Title
US11704020B2 (en) Precisely tracking memory usage in multi-process computing environment
Bu et al. A bloat-aware design for big data applications
Gidra et al. NumaGiC: A garbage collector for big data on big NUMA machines
CN103150259B (zh) 一种内存回收方法和装置
Fang et al. Interruptible tasks: Treating memory pressure as interrupts for highly scalable data-parallel programs
CN103699435A (zh) 负载均衡方法及装置
US20150205587A1 (en) Adaptive cloud aware just-in-time (jit) compilation
CN104216784A (zh) 热点均衡控制方法及相关装置
CN106095576A (zh) 虚拟化多核环境下非一致性i/o访问虚拟机资源迁移方法
CN104750620A (zh) 一种内存迁移方法及装置
CN103365784A (zh) 内存回收与分配的方法及装置
CN105528371A (zh) 一种执行写任务的方法、装置及系统
CN109189739B (zh) 缓存空间回收方法和装置
Wang et al. Dynamic memory balancing for virtualization
CN105677481A (zh) 一种数据处理方法、系统及电子设备
US20190303476A1 (en) Dynamic buffer pools for process non-conforming tasks
CN107273049B (zh) 一种应用在统一存储管理系统上的卷管理方法
CN102902820A (zh) 数据库类型的识别方法和装置
Mann et al. Study of Energy‐Efficient Optimization Techniques for High‐Level Homogeneous Resource Management
Kang et al. A comparative analysis of iterative MapReduce systems
Zhang et al. Understanding software platforms for in-memory scientific data analysis: A case study of the spark system
CN104793985A (zh) 一种虚拟机调度方法和管理设备
CN106547603B (zh) 减少golang语言系统垃圾回收时间的方法和装置
US20190303037A1 (en) Using sequential read intention to increase data buffer reuse
CN104077171A (zh) 调度虚拟机时的处理方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100190 No. 10 South Road, Zhongguancun Academy of Sciences, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.