CN116547646A - 减少负载平衡工作窃取 - Google Patents
减少负载平衡工作窃取 Download PDFInfo
- Publication number
- CN116547646A CN116547646A CN202180078101.9A CN202180078101A CN116547646A CN 116547646 A CN116547646 A CN 116547646A CN 202180078101 A CN202180078101 A CN 202180078101A CN 116547646 A CN116547646 A CN 116547646A
- Authority
- CN
- China
- Prior art keywords
- queue
- tasks
- heavyweight
- owner
- computer
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
- Burglar Alarm Systems (AREA)
- Refuse Collection And Transfer (AREA)
Abstract
提供了一种方法,该方法包括确定盗取方线程尝试了从垃圾收集(GC)所有方队列窃取工作。此外,该方法包括确定GC所有方队列中的任务数目满足预定阈值。此外,该方法包括确定GC所有方队列包括重量级任务。该方法还包括将所述重量级任务移动到所述GC所有方队列的顶部位置。
Description
背景技术
本公开涉及负载平衡工作窃取(work stealing),并且更具体地,涉及减少负载平衡工作窃取。
负载平衡是指计算机系统在多个进程之间划分相关工作的方式。这样,负载平衡对于使计算机系统比没有负载平衡的这些系统更高效地操作是有用的。
发明内容
公开了针对方法的实施例。该方法包括确定盗取方(thief)线程尝试了从垃圾收集(GC)所有方(owner)队列窃取工作。外,该方法包括确定GC所有方队列中的任务数目满足预定阈值。此外,该方法包括确定GC所有方队列包括重量级(heavy-weight)任务。该方法还包括将重量级任务移动到所述GC所有方队列的顶部位置。
本公开的其他方面涉及具有与以上关于计算机实现的方法讨论的功能类似的功能的系统和计算机程序产品。本发明内容不旨在示出本公开的每个实施例的每个方面、每个实现和/或每个实施例。
附图说明
本申请中包括的附图并入说明书中并形成说明书的一部分。它们示出了本公开的实施例,并且与说明书一起用于解释本公开的原理。附图仅说明某些实施例,而不限制本公开。
图1是根据本公开的一些实施例的用于减少负载平衡工作窃取的示例计算系统的框图。
图2A-2B是根据本公开的一些实施例的示例GC所有方队列和GC盗取方队列的框图。图2A-2B是根据本公开的一些实施例的示例性GC所有方队列和GC盗取方队列的框图。
图3是根据本公开的一些实施例的用于减少负载平衡工作窃取的示例存储器。
图4是根据本公开的一些实施例的用于减少负载平衡工作窃取的示例方法的过程流程图。
图5是根据本公开的一些实施例的示例垃圾收集管理器的框图。
虽然本公开可修改为各种修改和备选形式,但其细节已在附图中以示例的方式示出并将详细描述。然而,应当理解,其目的不是将本公开限制于所描述的特定实施例。相反,本发明将涵盖落入本公开的范围内的所有修改、等效物和备选方案。
具体实施方式
如前所述,负载平衡可以是使计算机系统更高效地操作的有用方式。例如,负载平衡对于工作窃取是有用的,工作窃取是垃圾收集技术。垃圾收集是指从计算机存储器中移除过期的和/或其它未使用的数据。在没有垃圾收集的情况下,计算机存储装置可能变得混乱,和/或在计算机应用程序运行的方式和存储器本身操作的方式中引入低效率。垃圾收集可以涉及并行运行的多个线程,以通过有效地删除例如计算机存储器中的未使用数据来减少混乱和其他潜在的低效率。
垃圾收集(GC)线程可以使用垃圾收集线程在其探测存储器时建立的任务队列来跟踪它们自己的工作。然而,当垃圾收集线程的任务用完时,该垃圾收集线程,例如,盗取方线程可以从所有方垃圾收集线程“窃取工作”,所有方垃圾收集线程在其相应队列中具有未完成任务。换句话说,当垃圾收集线程用完任务时,此盗取方线程从所有方线程的队列窃取任务。以这种方式,GC系统在垃圾收集线程之间平衡垃圾收集的负载。然而,当以这种方式执行工作窃取时,存在关于维持存储器完整性的计算成本。
因此,本公开的实施例可以以降低盗取方线程从其他垃圾收集线程窃取任务的频率的方式建立垃圾收集队列。在一些实施例中,垃圾收集线程可以将重量级的任务放置在其队列中以供盗取方线程窃取。重量级任务可以是执行起来比相对轻量级(light-weight)的任务在计算上相对更昂贵的垃圾收集任务。因此,盗取方线程可以花费比完成较轻任务所涉及的时间更多的时间来完成所盗取的重量级任务,从而延迟了窃取之间的时间。以这种方式,本公开的实施例可以降低盗取尝试的频率,并且提高负载平衡工作盗取的效率。
图1是根据本公开的一些实施例的用于减少负载平衡工作窃取的示例计算系统100的框图。计算系统100包括存储器102和运行时环境(运行时)104。存储器102可以是存储数据和计算机应用的计算机指令的计算机存储器。存储器102可以包括应用对象106,其可以表示当前正在或已经完成在计算机系统100上运行的计算机应用的数据和计算机指令。在一些场景中,应用对象106可以被表示为树图,其关于图2更详细地描述。
返回参考图1,运行时104可以是计算机应用程序在其中执行的计算环境。此外,运行时104可以管理存储器102、应用如何访问变量、提供用于在应用之间传递参数的机制、以及与操作系统(未示出)的接口。运行时104可以包括企业和/或开源平台中的虚拟机,诸如Java(JVM)。
根据本公开的一些实施例,运行时104可以包括垃圾收集管理器108和垃圾收集线程110。运行时104可使用垃圾收集管理器108和垃圾收集线程110来通过清除存储器中剩余的应用对象106来管理存储器102。以这种方式,运行时104可以帮助防止存储器102变得混乱并且妨碍在计算机系统100上运行的应用的性能。以这种方式,垃圾收集管理器108可以使用垃圾收集线程110来在存储器102中“收集垃圾”。此外,垃圾收集线程110可以通过执行工作窃取来对垃圾收集的工作进行负载平衡。
在垃圾收集处理期间,垃圾收集线程110可以包括垃圾收集(GC)所有方线程110-1和GC盗取方线程110-2。如前所述,当垃圾收集线程110之一完成其队列112中的任务时,该线程可以从另一线程(例如GC所有方线程110-1)的GC所有方队列112-1“窃取”任务,并执行所窃取的任务以帮助平衡垃圾收集的负载。窃取任务的垃圾收集线程110因此被称为GC盗取方线程110-2。
如前所述,工作窃取可能是计算量大的,并且降低计算机系统100的效率。因此,在本公开的一些实施例中,垃圾收集管理器108可以通过提供被盗取的工作,例如使GC盗取方线程110-2比其他任务花费相对更长的时间来执行的任务,来降低工作盗取的频率及其相关联的成本。例如,当GC盗取方线程110-2试图从GC所有方线程110-1窃取任务时,垃圾收集管理器108可将重量级任务置于GC盗取方线程110-2要窃取的队列顶部。因此,相比相对较轻量级的任务,GC盗取方线程110-2可以花费更多的时间来执行重量级的任务。因此,如果GC盗取方线程110-2完成了所盗取的任务,则在GC盗取方线程110-2从GC所有方线程110-1盗取另一任务之前存在更长的延迟,以这种方式,垃圾收集管理器108可以减少GC盗取方线程110-2执行的负载平衡工作盗取的次数。因此,在本公开的实施例中,垃圾收集管理器108可以提高负载平衡工作窃取的性能。
图2A是根据本公开的一些实施例的示例GC所有方队列202-1和GC盗取方队列202-2的框图。GC所有方队列202-1和GC盗取方队列202-2也被统称为GC队列202。队列202被表示为包含按字母顺序标记的圆圈的圆柱体,每个圆圈表示针对相应命名的应用对象的任务。这些应用对象可以是参考图1描述的应用对象106的示例。返回参考图2,GC所有方队列202-1包括针对相应应用对象的任务“b”、“c”、“d”和“a”。另外,队列202具有指示队列的底部(B)和顶部(T)的指针的箭头。另外,“推送”和“弹出”操作分别用指向任务“B”和从任务“B”出来的线来表示。推送操作将新的条目添加到队列。相反,弹出操作从队列移除项。在该示例中,队列202表示示例后进先出(LIFO)双端队列。因此,底部任务是被推送入队列202的最后一个任务。因此,任务“b”在队列的底部,并且因此是将被读取并从GC所有方队列202-1移除的下一个任务。此外,任务“b”是GC所有方线程110-1执行的下一个任务。相对地,任务“a”在队列的顶部。
与GC所有方队列202-1相对,GC盗取方队列202-2没有任务。为清楚起见,分别表示了B和T箭头。然而,GC盗取方队列202-2的底部和顶部指示相同的空条目。该示例表示GC盗取方线程110-2可以尝试从GC所有方队列202-1“窃取”任务的时间,这种窃取尝试由GC队列202之间的线来指示。与发生在队列顶部的弹出操作相对,工作窃取涉及队列顶部的条目,例如任务a。根据本公开的一些实施例,垃圾收集可以响应于工作窃取尝试而放置任务“a”,如果满足附加准则的话。例如,如果GC所有方队列202-1中的条目数目满足预定阈值并且任务“a”是重量级任务,则垃圾收集管理器108将任务“a”移至队列的顶部。
图2B是根据本发明的一些实施例的示例GC队列202的框图。在该示例中,GC盗取方线程110-2已经完成了工作窃取。因此,任务“a”从GC所有方队列202-1被移除,并且被复制到GC盗取器队列202-2。此外,当GC所有方队列202-1的底部仍在任务“B”时,GC所有方队列202-1的顶部现在在任务“d”。对于GC盗取方队列202-2,为了清楚起见,底部和顶部箭头被分开放置,但是表示指向相同条目的指针。因此,任务“a”位于GC盗取方队列202-2的顶部和底部。
图3是根据本公开的一些实施例的用于减少负载平衡工作窃取的示例存储器300的框图。如前所述,参考图1描述的垃圾收集线程110执行垃圾收集任务。在一些情况下,垃圾收集任务可以涉及并行复制垃圾收集(并行复制GC)。并行复制GC例如在企业和开源JVMS两者中都被使用。并行复制GC可以包括将活动的应用对象复制到存储器中的新空间中。活应用对象可以是仍在由计算机应用使用的应用对象106。相对地,不活动应用对象不被复制到新的存储器空间中。非活动应用对象可以是不再被计算机应用使用的应用对象106。因为在并行复制GC期间不活动应用对象没有被复制到新的存储器空间中,所以这些不活动应用对象有效地从存储器102被删除。
返回参考图3,存储器300可以包括存储器栈302、堆空间304、GC所有方线程队列306-1和GC盗取方线程队列306-2。存储器栈302可以是由诸如运行时104等运行时维护的目录,其具有指向活动应用对象的指针。在该示例中,应用对象106按字母顺序被标记为“a”至“n”。来自栈302的箭头指示指向应用对象a和b的指针。应用对象106可以使用树结构来表示。树结构可以指示个体应用对象之间的关系。例如,应用对象a与应用对象a、e和f相关,从应用对象A到应用对象d、e和f的行可以指示应用对象a包括指向应用对象d、e和f的指针,这些关系可以指示从一个应用对象106到另一个应用对象的执行调用、通过另一个应用对象的计算机指令对被存储在一个应用对象中的数据的使用等。
堆空间304可以是存储器300的其中运行时104可以维护计算机应用程序的应用对象106的区域。GC所有方线程队列306-1和GC盗取方线程队列306-2可以类似于参考图1所述的GC所有方线程110-1的GC所有方队列112-1和GC盗取方线程110-2的GC盗取方队列112-2。返回参考图3,306-顶部和306-底部可以表示GC所有方和盗取方队列的相应顶部和底部索引。另外,堆空间304可包含来自(from)空间308和去往(to)空间310。来自空间308可以是运行时104正在用于应用对象106的当前存储器空间。去往空间310可以表示垃圾收集线程110正在将活动应用对象复制到的新存储器空间。
如图所示,没有来自堆栈302的指针也没有来自任何其它应用对象的指针指向应用对象k和n。指针的缺乏可以指示这些应用对象是非活动的应用对象。因此,垃圾收集线程110可以不将应用对象k和n复制到去往空间310,从而有效地删除这些对象。
更具体地说,在并行复制GC中,运行时104可以在GC时间期间,即当垃圾收集线程110正在执行时,挂起计算机应用程序线程。此外,垃圾收集线程110可通过以下操作来复制应用对象:1)获取去往空间310中的空间,2)将应用对象复制到去往空间310中的获取空间,3)在来自空间308中的原始应用对象的标头中设置转发指针以指向去往空间310中的复制对象,4)在复制对象A'中设置指针以指向其原始对象是A引用的对象的另一复制对象B',并且将复制对象A'中朝向原始对象B的指针移除,以及5)通过扫描复制应用对象来找到对其它应用对象106的引用。由于可以从若干应用对象106引用应用对象106,因此多个垃圾收集线程110可以在复制过程期间到达相同的应用对象。这样,垃圾收集线程110原子地复制应用对象106。由于仅一个垃圾收集线程110可以成功地复制应用对象106,因此转发指针通过使用比较和交换操作原子地被设置。未通过比较和交换操作的线程因此可以删除其应用对象106的副本。
图4是根据本公开的一些实施例的用于减少负载平衡工作窃取的方法400的示例过程流程图的框图。垃圾收集管理器,诸如垃圾收集管理器108,可以执行方法400。
在操作402,垃圾收集管理器108可以确定诸如GC盗取方线程110-2的盗取方线程尝试了工作窃取。垃圾收集管理器108可以基于针对GC盗取方队列112-2的顶部的局部索引是否与全局索引匹配来确定尝试发生。如果不匹配,则GC盗取方线程110-2尝试了工作窃取。
在操作404,垃圾收集管理器108可以确定所有方队列中的任务数目满足或超过预定阈值。如果GC所有方队列112-1中存在相对低数目的任务,则减少工作窃取可能不是有用的。这样,预定阈值可以指示使得减少工作窃取提高效率的最少数目的任务。
在操作406,垃圾收集管理器108可以确定GC所有方队列112-1具有排队的重量级任务。重量级任务可以是针对重量级应用对象的任务,诸如引用数组。在本公开的一些实施例中,如果应用对象包括多于预定数目的任务,则改应用对象可以表示重量级任务。
在操作408,垃圾收集管理器108可以将重量级任务推送到GC所有方队列112-1的顶部。垃圾收集管理器108可以通过以下操作将重量级任务推送到GC所有方队列112-1的顶部:1)局部递减指向顶部指针的索引,2)在递减的顶部存储针对重量级任务的条目,以及3)使用比较和交换(CAS)指令来全局更新顶部指针。CAS指令可以确定是否已经将重量级任务复制到去往空间。如果否,则垃圾收集管理器108可以更新顶部指针。
图5是根据本公开的一些实施例的示例垃圾收集管理器500的框图。在各种实施例中,垃圾收集管理器500类似于垃圾收集管理器108,并且可以执行图4中描述的方法和/或图1-3中讨论的功能。在一些实施例中,垃圾收集管理器500向客户端机器提供用于上述方法和/或功能性的指令,使得客户端机器基于由垃圾收集管理器500提供的指令执行方法或方法的部分。在一些实施例中,垃圾收集管理器500包括在并入多个设备的硬件上执行的软件。
垃圾收集管理器500包括存储器525、存储装置530、互连(例如,总线)520、一个或多个CPU 505(本文也称为处理器505)、I/O设备接口510、I/O设备512和网络接口515。
每个CPU 505检索并执行被存储在存储器525或存储装置530中的编程指令。互连520用于在CPU 505、I/O设备接口510、存储装置530、网络接口515和存储器525之间移动数据(例如编程指令)。互连520可以使用一个或多个总线来实现。在各种实施例中,CPU 505可以是单个CPU、多个CPU、或具有多个处理核的单个CPU。在一些实施例中,CPU 505可以是数字信号处理器(DSP)。在一些实施例中,CPU 505包括一个或多个3D集成电路(3DIC)(例如,3D晶片级封装(3DWLP)、基于3D中介体的集成、3D堆叠IC(3D-SIC)、单片3D IC、3D异构集成、3D系统级封装(3DSiP)和/或封装上封装(PoP)CPU配置)。存储器525通常被包括以表示随机存取存储器(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或闪存)。存储器530通常被包括以表示非易失性存储器,例如硬盘驱动器、固态设备(SSD)、可移动存储器卡、光学存储装置和/或山村存储器装置。另外,存储装置530可以包括存储区域网络(SAN)设备、云、或经由I/O设备接口510连接到垃圾收集管理器500或经由网络接口515连接到网络550的其他设备。
在一些实施例中,存储器525存储指令560。然而,在各种实施例中,指令560部分地被存储在存储器525中并且部分地被存储在存储装置530中,或者它们完全地被存储在存储器525中或者完全地被存储在存储装置530中,或者它们经由网络接口515通过网络550被访问。
指令560可以是用于执行图3中描述的任何方法和/或图1-2中讨论的功能中的任何部分或全部的处理器可执行指令。
在各种实施例中,I/O设备512包括能够呈现信息和接收输入的接口。例如,I/O设备512可以向与垃圾收集管理器500交互的监听器信息以及从监听器接收输入。
垃圾收集管理器500经由网络接口515连接到网络550。网络550可以包括物理、无线、蜂窝或不同的网络。
在一些实施例中,垃圾收集管理器500可以是多用户大型计算机系统、单用户系统、或者具有很少或没有直接用户接口但从其它计算机系统(客户端)接收请求的服务器计算机或类似设备。此外,在一些实施例中,垃圾收集管理器500可以被实现为台式计算机、便携式计算机、膝上型或笔记本计算机、平板计算机、袖珍计算机、电话、智能电话、网络交换机或路由器、或者任何其他适当类型的电子设备。
注意,图5旨在描述示例性垃圾收集管理器500的代表性主要组件。然而,在一些实施例中,个体组件可以具有比图5中所表示的更大或更小的复杂度,可以存在不同于图5中所示的那些组件或除其之外的组件,并且这些组件的数目、类型和配置可以变化。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机可读介质。计算机程序产品可以包括其上具有计算机可读程序指令的一个或多个计算机可读存储介质,该计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码的设备(诸如上面记录有指令的打孔卡或凹槽中的凸起结构),以及前述各项的任何合适的组合。如本文中所使用的,计算机可读存储介质不应被解释为暂态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
本文所述的计算机可读程序指令可以从计算机可读存储介质被下载到相应的计算/处理设备,或者经由网络(例如,因特网、局域网、广域网和/或无线网络)被下载到外部计算机或者外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、集成电路系统的配置数据,或者以一种或多种编程语言的任何组合编写的源代码或目标代码,包括诸如Smalltalk、C++等面向对象的编程语言、以及诸如“C”编程语言的过程式编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路装置、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路装置个性化。
本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各个框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或者其他可编程数据处理装置以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置、和/或其他设备以特定方式运作,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或者其他设备上,以使一系列操作步骤在计算机、其他可编程装置或者其他设备上被执行以产生计算机实现的过程,使得在计算机、其他可编程装置或者其他设备上执行的指令实现流程图和/或框图中的一个或多个框中指定的功能/动作。
图中的流程图和/或框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能的实现的架构、功能和操作。对此,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现(多个)指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以通过执行指定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
Claims (20)
1.一种计算机实现的方法,包括:
确定盗取方线程尝试了从垃圾收集(GC)所有方队列的工作窃取;
确定所述GC所有方队列中的任务的数目满足预定阈值;
确定所述GC所有方队列包括重量级任务;以及
将所述重量级任务移动到所述GC所有方队列的顶部位置。
2.根据权利要求1所述的方法,其中移动所述重量级任务包括:
将局部指针递减到所述GC所有方队列的所述顶部位置;以及
将所述重量级任务存储在到所述顶部位置的经递减的所述局部指针处。
3.根据权利要求2所述的方法,其中移动所述重量级任务还包括:
针对经递减的所述局部指针和到所述GC所有方队列的所述顶部位置的全局指针执行比较和交换;
确定所述重量级任务未被复制到堆空间的去往空间;以及
将所述全局指针更新为经递减的所述局部指针。
4.根据权利要求1所述的方法,其中所述重量级任务包括针对包括引用数组的应用对象的垃圾收集任务。
5.根据权利要求1所述的方法,其中所述重量级任务包括对其他应用对象的多个引用,所述多个引用超过预定任务引用阈值。
6.根据权利要求1所述的方法,其中所述GC所有方队列包括双端队列。
7.根据权利要求6所述的方法,其中所述GC所有方队列包括后进先出队列。
8.一种计算机程序产品,包括一个或多个计算机可读存储介质以及共同被存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括被配置为使一个或多个处理器执行方法的指令,所述方法包括:
确定盗取方线程尝试了从垃圾收集(GC)所有方队列的工作窃取;
确定所述GC所有方队列中的任务的数目满足预定阈值;
确定所述GC所有方队列包括重量级任务;以及
将所述重量级任务移动到所述GC所有方队列的顶部位置。
9.根据权利要求8所述的计算机程序产品,其中移动所述重量级任务包括:
将局部指针递减到所述GC所有方队列的顶部位置;以及
将所述重量级任务存储在到所述顶部位置的经递减的所述局部指针处。
10.根据权利要求9所述的计算机程序产品,其中移动所述重量级任务还包括:
针对经递减的所述局部指针和到所述GC所有方队列的所述顶部位置的全局指针执行比较和交换;
确定所述比较和交换成功;以及
将所述全局指针更新为经递减的所述局部指针。
11.根据权利要求8所述的计算机程序产品,其中所述重量级任务包括针对包括引用数组的应用对象的垃圾收集任务。
12.根据权利要求8所述的计算机程序产品,其中所述重量级任务包括对其他应用对象的多个引用,所述多个引用超过预定任务引用阈值。
13.根据权利要求8所述的计算机程序产品,其中所述GC所有方队列包括双端队列。
14.根据权利要求13所述的计算机程序产品,其中所述GC所有方队列包括后进先出队列。
15.一种系统,包括:
一个或多个计算机处理电路;以及
存储程序指令的一个或多个计算机可读存储介质,所述程序指令在由所述一个或多个计算机处理电路执行时被配置为使所述一个或多个计算机处理电路执行方法,所述方法包括:
确定盗取方线程尝试了从垃圾收集(GC)所有方队列的工作窃取;
确定所述GC所有方队列中的任务的数目满足预定阈值;
确定所述GC所有方队列包括重量级任务;以及
将所述重量级任务移动到所述GC所有方队列的顶部位置。
16.根据权利要求15所述的系统,其中移动所述重量级任务包括:
将局部指针递减到所述GC所有方队列的顶部位置;以及
将所述重量级任务存储在到所述顶部位置的经递减的所述局部指针处。
17.根据权利要求16所述的系统,其中移动所述重量级任务还包括:
针对经递减的所述局部指针和到所述GC所有方队列的所述顶部位置的全局指针执行比较和交换;
确定所述比较和交换成功;以及
将所述全局指针更新为经递减的所述局部指针。
18.根据权利要求15所述的系统,其中所述重量级任务包括针对包括引用数组的应用对象的垃圾收集任务。
19.根据权利要求15所述的系统,其中所述重量级任务包括对其他应用对象的多个引用,所述多个引用超过预定任务引用阈值。
20.根据权利要求15所述的系统,其中所述GC所有方队列包括双端队列和后进先出队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/102,696 US11645200B2 (en) | 2020-11-24 | 2020-11-24 | Reducing load balancing work stealing |
US17/102,696 | 2020-11-24 | ||
PCT/CN2021/129290 WO2022111264A1 (en) | 2020-11-24 | 2021-11-08 | Reducing load balancing work stealing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116547646A true CN116547646A (zh) | 2023-08-04 |
Family
ID=81657064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180078101.9A Pending CN116547646A (zh) | 2020-11-24 | 2021-11-08 | 减少负载平衡工作窃取 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11645200B2 (zh) |
JP (1) | JP2023549727A (zh) |
CN (1) | CN116547646A (zh) |
DE (1) | DE112021005217T5 (zh) |
GB (1) | GB2616755B (zh) |
WO (1) | WO2022111264A1 (zh) |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490496B1 (en) * | 1999-02-25 | 2002-12-03 | 3D Systems, Inc. | Method, apparatus, and article of manufacture for a control system in a selective deposition modeling system |
US6826583B1 (en) * | 2000-05-15 | 2004-11-30 | Sun Microsystems, Inc. | Local allocation buffers for parallel garbage collection |
US6823351B1 (en) * | 2000-05-15 | 2004-11-23 | Sun Microsystems, Inc. | Work-stealing queues for parallel garbage collection |
US6526422B1 (en) * | 2000-05-15 | 2003-02-25 | Sun Microsystems, Inc. | Striding-type generation scanning for parallel garbage collection |
US7103887B2 (en) * | 2001-06-27 | 2006-09-05 | Sun Microsystems, Inc. | Load-balancing queues employing LIFO/FIFO work stealing |
US7159215B2 (en) | 2001-06-27 | 2007-01-02 | Sun Microsystems, Inc. | Termination detection for shared-memory parallel programs |
US7016923B2 (en) * | 2002-11-05 | 2006-03-21 | Sun Microsystems, Inc. | Multi-threaded garbage collector employing cascaded memory arrays of task identifiers to implement work stealing queues for task identification and processing |
US20060123423A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corporation | Borrowing threads as a form of load balancing in a multiprocessor data processing system |
US7945911B1 (en) * | 2005-06-03 | 2011-05-17 | Oracle America, Inc. | Barrier synchronization method and apparatus for work-stealing threads |
US8539493B1 (en) * | 2006-03-23 | 2013-09-17 | Emc Corporation | Configurable prioritization and aging of queued tasks |
US7926035B2 (en) * | 2007-04-24 | 2011-04-12 | Microsoft Corporation | Testing multi-thread software using prioritized context switch limits |
US8914799B2 (en) * | 2009-06-30 | 2014-12-16 | Oracle America Inc. | High performance implementation of the OpenMP tasking feature |
US8245234B2 (en) * | 2009-08-10 | 2012-08-14 | Avaya Inc. | Credit scheduler for ordering the execution of tasks |
CN101917384B (zh) * | 2009-11-17 | 2013-05-01 | 新奥特(北京)视频技术有限公司 | 一种分布式转码系统的任务分发方法及装置 |
US8640140B2 (en) * | 2010-10-25 | 2014-01-28 | Samsung Electronics Co., Ltd. | Adaptive queuing methodology for system task management |
EP2746941A1 (en) | 2012-12-20 | 2014-06-25 | Thomson Licensing | Device and method for optimization of data processing in a MapReduce framework |
US9317339B2 (en) * | 2013-03-13 | 2016-04-19 | Oracle International Corporation | Systems and methods for implementing work stealing using a configurable separation of stealable and non-stealable work items |
CN103699435B (zh) | 2013-12-25 | 2017-05-03 | 龙芯中科技术有限公司 | 负载均衡方法及装置 |
US9348658B1 (en) * | 2014-12-12 | 2016-05-24 | Intel Corporation | Technologies for efficient synchronization barriers with work stealing support |
US10055259B2 (en) * | 2015-05-26 | 2018-08-21 | Mediatek Inc. | Method for performing processor resource allocation in an electronic device, and associated apparatus |
US10089155B2 (en) | 2015-09-22 | 2018-10-02 | Advanced Micro Devices, Inc. | Power aware work stealing |
US10360063B2 (en) * | 2015-09-23 | 2019-07-23 | Qualcomm Incorporated | Proactive resource management for parallel work-stealing processing systems |
WO2017105888A1 (en) * | 2015-12-17 | 2017-06-22 | Ab Initio Technology Llc | Processing data using dynamic partitioning |
US10545887B2 (en) * | 2017-02-24 | 2020-01-28 | Ati Technologies Ulc | Multiple linked list data structure |
US10331554B2 (en) | 2017-04-28 | 2019-06-25 | International Business Machines Corporation | Balanced double deques for eliminating memory fences in garbage collection |
US11630832B2 (en) * | 2017-06-07 | 2023-04-18 | Sap Se | Dynamic admission control for database requests |
US10977087B2 (en) | 2018-08-07 | 2021-04-13 | International Business Machines Corporation | Steal one-process many work-stealing |
US10942824B2 (en) * | 2018-10-08 | 2021-03-09 | Hewlett Packard Enterprise Development Lp | Programming model and framework for providing resilient parallel tasks |
CN111209311B (zh) * | 2018-11-06 | 2024-02-06 | 京东科技控股股份有限公司 | 用于处理数据的方法和装置 |
US10725817B2 (en) | 2018-11-09 | 2020-07-28 | International Business Machines Corporation | Reducing spin count in work-stealing for copying garbage collection based on average object references |
US10846217B1 (en) * | 2019-05-07 | 2020-11-24 | International Business Machines Corporation | Garbage collection work stealing with multiple-task popping |
CN110908794B (zh) | 2019-10-09 | 2023-04-28 | 上海交通大学 | 基于任务窃取算法的任务窃取方法及系统 |
-
2020
- 2020-11-24 US US17/102,696 patent/US11645200B2/en active Active
-
2021
- 2021-11-08 JP JP2023526851A patent/JP2023549727A/ja active Pending
- 2021-11-08 DE DE112021005217.9T patent/DE112021005217T5/de active Pending
- 2021-11-08 WO PCT/CN2021/129290 patent/WO2022111264A1/en active Application Filing
- 2021-11-08 GB GB2308888.3A patent/GB2616755B/en active Active
- 2021-11-08 CN CN202180078101.9A patent/CN116547646A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022111264A1 (en) | 2022-06-02 |
GB202308888D0 (en) | 2023-07-26 |
DE112021005217T5 (de) | 2023-08-10 |
JP2023549727A (ja) | 2023-11-29 |
GB2616755A (en) | 2023-09-20 |
US11645200B2 (en) | 2023-05-09 |
GB2616755B (en) | 2024-02-28 |
US20220164282A1 (en) | 2022-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324836B2 (en) | Balanced double deques for eliminating memory fences in garbage collection | |
US9811424B2 (en) | Optimizing restoration of deduplicated data | |
US8756379B2 (en) | Managing concurrent accesses to a cache | |
US10140461B2 (en) | Reducing resource consumption associated with storage and operation of containers | |
US10083193B2 (en) | Efficient remote pointer sharing for enhanced access to key-value stores | |
EP3186760B1 (en) | Dynamic load-based merging | |
US10169358B2 (en) | Data deduplication using a small hash table | |
US11556496B2 (en) | Outputting map-reduce jobs to an archive file | |
US10102244B2 (en) | Identifying user managed software modules | |
US10127270B1 (en) | Transaction processing using a key-value store | |
US10977087B2 (en) | Steal one-process many work-stealing | |
WO2024001025A1 (zh) | 一种预执行缓存数据清理方法和区块链节点 | |
CN116547646A (zh) | 减少负载平衡工作窃取 | |
US11093169B1 (en) | Lockless metadata binary tree access | |
US11126371B2 (en) | Caching file data within a clustered computing system | |
US11494382B2 (en) | Optimization of first set of ordered items | |
US11960721B2 (en) | Dynamic storage in key value solid state drive | |
WO2022161170A1 (en) | Database log writing based on log pipeline contention | |
US11281513B2 (en) | Managing heap metadata corruption | |
CN111881085B (zh) | 一种读写带宽性能的优化方法及系统 | |
CN110990377B (zh) | 一种数据装载方法、装置、服务器及存储介质 | |
US20220391119A1 (en) | Data relocation for data units in scale-out storage systems | |
CN116467270A (zh) | 数据管理系统、数据更新方法及装置 | |
KR20230080902A (ko) | 분산 컴퓨팅 환경에서의 데이터 선 적재 장치 및 이를 이용한 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |