CN107615246A - 线程弹性负载平衡的内核负载知识 - Google Patents

线程弹性负载平衡的内核负载知识 Download PDF

Info

Publication number
CN107615246A
CN107615246A CN201680031953.1A CN201680031953A CN107615246A CN 107615246 A CN107615246 A CN 107615246A CN 201680031953 A CN201680031953 A CN 201680031953A CN 107615246 A CN107615246 A CN 107615246A
Authority
CN
China
Prior art keywords
thread
kernel
row
bitmap
domain
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
CN201680031953.1A
Other languages
English (en)
Other versions
CN107615246B (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.)
Shanghai Pengbang Industrial Co ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN107615246A publication Critical patent/CN107615246A/zh
Application granted granted Critical
Publication of CN107615246B publication Critical patent/CN107615246B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

一种平衡多个内核上的负载的方法包括在全局内存位置中保存多个位图。每个位图指示线程域中包含的所述线程的负载。所述多个线程与每个内核关联。每个内核基于所述线程的所述负载保存并更新相应的位图。所述多个位图在可被多个线程域访问的所述全局内存位置中保存,所述多个线程域用于使用所述内核来执行线程。所述多个线程域的执行使用所述多个内核基于每个位图中所描述的每个线程的负载来平衡。

Description

线程弹性负载平衡的内核负载知识
相关申请案交叉申请
本申请要求2015年8月4日递交的发明名称为“线程弹性负载平衡的内核负载知识(Core load knowledge for elastic load balancing of threads)”的第14/818,253号美国非临时专利申请案的在先申请优先权和权益,该在先申请的内容以引用的方式并入本文本中。
背景技术
随着计算机产业向大规模多核处理器(有时称为单芯片多处理器(ChipMultiprocessor,CMP)发展,中央处理器(central processing unit,CPU)芯片上的内核数量增加。许多这种CPU通过快速互连焊接在一起,形成非一致性内存访问(non-uniformmemory access,NUMA)机器。因此,现代计算机服务器配备了大量物理内核。当多个客户端发起对特定资源的请求时,一个或多个内核执行这些请求。多个请求可以进行排队并由一个或多个内核一次一个或一批一批进行服务,这样会造成一些请求在队列中等待,直至前一个请求或一批请求已得到服务。然而,一些物理内核与其它一些物理内核相比,可能执行相对较少的请求。负载平衡是指将队列中的服务请求转移到与负载较大的物理内核相比负载相对较小的那些物理内核。负载平衡对于调整多个内核的性能非常重要。
发明内容
本说明书描述了线程的弹性负载平衡。在一些实现方式中,线程的弹性负载平衡可以通过每个处理器内核中负载的动态知识来实现。
本说明书中所描述的主题的某些实现方式可以实现为一种平衡多个线程执行内核上的负载的方法。每个位图指示线程域中包含的多个线程的负载。所述多个线程与每个线程执行内核关联。每个线程执行内核基于所述多个线程的所述负载保存并更新相应的位图。所述多个位图在可被多个线程域访问的全局内存位置中保存,所述多个线程域用于使用所述多个线程执行内核来执行线程。所述多个线程域的执行使用所述多个线程执行内核基于所述多个位图中的每个位图中所描述的所述多个线程中的每个线程的负载来平衡。
此处所描述的主题的某些实现方式可以实现为一种用于负载自平衡的线程执行内核。所述线程执行内核用于执行此处所描述的操作。此处所描述的主题的某些实现方式可以实现为一种平衡多个线程执行内核上的负载的系统。所述系统包括可被多个线程域访问的全局内存位置,所述多个线程域用于使用所述多个线程执行内核执行线程。各个线程执行内核耦合到所述全局内存位置并用于执行此处所描述的操作。
本说明书中所描述的主题的一种或多种实现方式的详情在附图和以下描述中阐述。该主题的其它特征、方法和优点将从描述内容、附图和权利要求书中变得显而易见。
附图说明
图1是具有多个线程执行内核的机器的示例的示意图。
图2是包含由多个线程执行内核保存的位图的位图表的示意图。
图3是由线程执行内核保存的指示该内核空闲的位图的示意图。
图4是由线程执行内核保存的指示该内核忙碌的位图的示意图。
图5是对可在图1的机器上执行的线程实现弹性负载平衡的过程的示例的流程图。
具体实施方式
本说明书描绘了在用户级别对跨机器中的进程和线程执行内核的线程的负载进行弹性平衡的技术。线程执行内核是一种可以在其上执行一个或多个线程的内核。如下所述,每个线程执行内核(“内核”)可以包括一个共享位图,用于提供描述执行线程的内核的可用性的全局知识,包括例如内核是忙碌还是空闲以及内核是否已被预分配给线程域。如果线程域已预分配给内核,则线程域是该内核的主域;如果线程域尚未预分配给内核,则线程域是该内核的来宾域。如果内核空闲,则其它线程可以利用该空闲内核来执行。如果需要执行来自已预分配内核的线程域的任意线程,则利用该内核的线程可以在持续执行一段时间之后将该内核返回给来自主域的线程。这样执行一段时间之后,线程会将内核返回给主域线程。
可实施本发明书中所描述的负载平衡方法以支持任意线程均具有机器的每个内核上的负载的动态知识。线程可以来自任意进程或任意内核。用于保存每个内核上的负载的数据结构可以通过一种简单且低成本的方式来实施。混合调度可以支持通过灵活的内核分配方式(例如,稍后描述的捐赠或共享)进行的负载迁移的时间具有弹性。此处所描述的技术的实现方式可以支持主域(稍后描述)在利用预分配给主域的内核资源时优先于未预分配给内核的来宾域。这些技术是忙时驱动的,平衡处理在需要时进行。
图1是具有多个线程执行内核(例如,线程执行内核102a、102b、102c、102d、102e、102f,或更多或更少节点)的机器100的示例的示意图。机器100可以通过多个内核执行多个应用(例如,第一应用110、第二应用112或更多应用)。为每个应用分配一个或多个内核。例如,内核102a、102b和102c被预分配给第一应用110,内核102d、102e和102f被预分配给第二应用112。其它内核(未示出)可以分配给其它应用(未示出)。可以通过设置CPU亲和力并绕过用户定义的调度将内核分配给应用。
每个在机器100上执行的应用可以实现为存储在计算机可读介质上的计算机指令,这些计算机指令可被执行以响应于输入而执行操作。所有应用中的一个或多个应用的延迟较低,可能需要满足严格的最后期限。从此意义上来说,所有应用中的一个或多个应用可以实时执行。当响应于收到输入而进行处理的输出之间感觉不到延迟(例如,毫秒或更小量级)时,应用实时运行。
此外,每个应用可以包括一个或多个线程或与一个或多个线程关联,每个线程为内核上的一个执行单元。被分配了应用的每个内核可以执行(或处理)包含在应用中的或与应用关联的一个或多个线程。例如,第一应用110包括线程106a、106b和106c或与线程106a、106b和106c关联,这些线程分别在内核102a、102b和102c上执行。类似地,第二应用110包括线程106d、106e和106f或与线程106d、106e和106f关联,这些线程分别在内核102d、102e和102f上执行。在替代性实现方式中,第一应用110包括线程106a-1、106b-1、106c-1、106d-1、106e-1和106f-1或与线程106a-1、106b-1、106c-1、106d-1、106e-1和106f-1关联,这些线程分别在内核102a、102b、102c、102d、102e和102f上执行。类似地,第二应用112包括线程106a-2、106b-2、106c-2、106d-2、106e-2和106f-2或与线程106a-2、106b-2、106c-2、106d-2、106e-2和106f-2关联,这些线程分别在内核102a、102b、102c、102d、102e和102f上执行。在这种情况下,内核102a、102b和102c分别被预分配给106a-1、106b-1、106c-1;内核102d、102e和102f分别被预分配给106d-2、106e-2、106f-2。在一些实施方式中,内核可以执行一个线程或多于两个线程,这些进程包含在已分配了内核的应用中或与已分配了内核的应用关联。
在机器100上执行的每个应用作为独立进程运行。即,一个应用的线程对其它线程,特别是对其它线程的负载了解有限或不了解。在一段时间中,一些应用的负载会比较重,而其它应用的负载相对较轻,导致负载不平衡。
机器100中的每个内核可以通过实施本说明书中所描述的技术促进弹性负载平衡。每个内核可以保存一个位图,位图包括描述可由该内核和机器中的其它内核执行的线程的负载的信息。例如,内核102a、102b、102c、102d、102e和102f可以分别保存位图104a、104b、104c、104d、104e和104f。内核的位图可以包括一列或多列。例如,位图104a、104b、104c、104d、104e和104f各自可以有两列(或更多列),分别是104a-1和104a-2、104b-1和104b-2、104c-1和104c-2、104d-1和104d-2、104e-1和104e-2以及104f-1和104f-2。例如,执行一个应用的内核的位图可以包括一列。在另一个示例中,执行多个应用的内核的位图可以包括不止一列。内核的位图还可以包括不对应任何应用的附加列。这种列是可用于其它应用的备用列。内核可以通过以下操作来保存位图:在本地(即,在只能由内核访问的位置处)存储位图并定期更新位图中的条目以反映内核可执行的线程的负载。每个内核的位图的大小可以旨在避免缓存的错误共享。例如,位图的大小可以为64字节。
此外,每个内核可以使位图只存在于全局内存位置(例如,机器100中的内存114)。为此,每个内核可以将位图映射到全局图中的一个区域,这样其它应用可以访问该信息。例如,每个内核可以实施mmap函数以将每个内核的位图映射到全局内存位置。在这种实现方式中,mmap函数建立了地址空间与文件或共享内存对象之间的映射。除了mmap之外,还存在一些实施映射或保存功能的替代性方法。此外,位图的任何改变都可以在全局内存位置中自动反映出。在一些实现方式中,每个内核上运行的操作系统(operating system,OS)可以将内核上的位图映射(或保存)到全局内存位置中的位图表。
在一些实施方式中,全局内存位置可以保存位图表,该位图表包括从所有内核映射而来的位图。全局内存位置可以使位图表可被机器中的所有其它内核访问,使得在任意给定时间,可在内核上执行的线程都可以通过访问在全局内存位置处可用的其它内核的位图来获取描述可在其它内核上执行的线程的负载的信息。
第一应用110中包含的线程106a可以在内核上执行。例如,可以响应于第一应用110收到的输入而执行线程106a以进行计算机操作,线程106a可以访问机器100中的内存114以扫描从内核102a、102b、102c、102d、102e和102f映射而来的位图。在一些实施方式中,线程106a可以访问机器100中的内存114以扫描从内核102b、102c、102d、102e和102f映射而来的位图。在线程未被预分配给内核的实现方式中,线程106a可以基于根据内核的位图所确定的内核可用性来执行。例如,通过扫描位图表,线程106a可以确定内核102c空闲,而其余内核在忙。作为响应,线程106a可以基于分配决定向空闲内核102c请求资源。在被分配所请求的资源后,线程106a可以在空闲内核102c上执行。
在一些实现方式中,线程可以被预分配给内核。例如,第二应用112中包含的线程106d可以被预分配给内核102d。当线程被预分配给内核时,预分配的线程在内核上执行的优先权高于尚未预分配给内核的其它线程。在这些实现方式中,线程106d可以扫描位图表以确定是否已有任何内核被预分配给线程。在确定内核102d已被预分配给线程106d后,可以终止在内核102d上执行其它线程。如下所述,其它线程的终止无需立即执行,而是可以在线程执行能够达到逻辑断点的时间段之后进行。
在一示例实施例中,机器100包括:位图更新模块,其更新多个位图,其中多个位图中的每个位图指示多个线程的负载,多个线程与多个线程执行内核中的每个线程执行内核关联;位图保存模块,其在全局内存位置中保存多个位图,该全局内存位置可被与多个线程执行内核中的每个线程执行内核关联的多个线程访问;以及负载平衡模块,其基于全局内存位置中的多个位图来平衡与多个线程执行内核中的每个线程执行内核关联的多个线程的负载。在一些实施例中,机器100可包括其它或额外的模块,用于执行实施例中所描述的任一步骤或步骤的组合。
图2是包含由多个线程执行内核保存的位图的位图表200的示意图。例如,位图表200可以包括分别从内核102a、102b、102c、102d、102e和102f映射而来的位图104a、104b、104c、104d、104e和104f。位图表200可以在内存114等全局内存位置中保存,例如在全局内存位置中存储或被其访问。位图中的单元格可以包括可以由映射位图的内核所设置的条目。或者,或此外,每个位图中的每个单元格可以包括可以由连接到机器中的所有内核的控制器所设置的条目。
位图表的宽度可以基于机器上正在执行的应用数量来调整。位图中的条目可以按照下文所述进行设置和调整。应注意,位图中的条目只可以由保存该位图的内核来设置。条目可以由在其它内核上执行的线程或等待执行的线程来读取。弹性负载平衡或自平衡可以通过引用位图表200中的条目来实施。
位图表200包括多行(例如,行204a、204b……204n)和多列。位图表200中的每个列对应于从内核映射而来的位图的列(例如,位图104a、104b、104c、104d、104e、104f的列)。如上所述,从每个内核映射而来的每个位图可以包括分配给应用的一个或多个列或未分配给任何应用的备用列(或两者)。列可以指示包括线程域或与线程域关联的应用。例如,位图表200中的列对应于由内核102c保存和更新的位图104c。列指示第一应用110,意味着包含在第一应用110中或与第一应用110关联的部分或全部线程106c在内核102c上执行。线程域包括可在内核上执行的一个或多个线程。位图表200中的多个行可以指示线程域中的线程。即,除位图第一行之外的其它行中的每个单元格可以指示线程域中的一个相应线程。
位图表200中的条目可以从总体上描述用于执行线程的位图表200的可用性。例如,表示位图(例如,位图104a)的列中的条目可以描述保存位图104a的内核是否可用于执行线程,内核是否已被预分配给应用的一个或多个线程,或者用于执行线程的内核的可用性是否已改变(即,从可用变为忙碌或从忙碌变为可用)。
如上所述,位图表200中的每个列是位图中包含的列,指示包括线程域或与线程域关联的应用。在一些实施方式中,位图表200中的每个列中的第一行202可以指示线程域是否已被预分配给保存位图表200的内核。如果线程域已被预分配给内核,则线程域是该内核的主域。所有其它线程域是该内核的来宾域。如上所述,主域中的线程在访问已预分配主域的内核的资源方面优先于(即,享有优先权)来宾域中的其它线程。
例如,当已有线程域被预分配给内核时,列中的第一个单元格中存储的值设为1;当没有线程域被预分配给内核时,列中的第一个单元格中存储的值设为0。在位图表200中,位图104a、位图104b、位图104c中的每个位图的第一列第一行中的条目为1,指示这些列所指示的应用的线程域已被预分配给保存对应位图的相应内核。在位图表200中,位图104d、位图104e、位图104f中的每个位图的第二列第一行中的条目为0,指示没有线程域被预分配给保存对应位图的内核。
还如上文所述,每个位图中除第一行之外的多个行可以指示线程域中的线程。如果线程忙碌,则行中存储的值设为1;如果线程可用,则行中存储的值设为0。在位图表200中,位图104a的第一列第四行中的条目为1,指示第一列第三行所指示的线程忙碌。在另一个示例中,位图104b的第二列第二行中的条目为0,指示第二列第二行所指示的线程空闲。
图3是由线程执行内核保存的指示该内核空闲的位图的示意图。位图300中的第一行指示主域,如若存在。例如,位图300中第352行和第366列的交叉处值为1的比特条目指示保存位图300的内核已被预分配了主域。第一行的剩余单元格中值为0的比特条目指示未分配主域。如上所述,每列中除第一行之外的行中的每个单元格指示可在保存位图300的内核上执行的线程的可用性。如果内核中的所有线程均空闲,则内核空闲。换言之,如果列中除第一行之外的每行中的每个条目均为0,则该内核空闲。为了确定内核是否空闲,可以对列的每行(除第一行)中设置的条目执行布尔或(Boolean OR)运算。这种对位图300的列的运算显示保存位图300的内核空闲。
当空闲的内核变为忙碌时,该内核将内核位图中的对应条目从0更新为1。如果线程的待处理作业队列较长,如果线程有一个大作业待处理,或一些待由线程处理的作业可能错过或已错过最后期限(或它们的组合),则线程是忙碌的。等待执行或在其它内核上执行的线程可以扫描位图表来识别将可用性状态从0(空闲)更新为1(忙碌)的内核。更具体地说,线程无需一直扫描位图表以确定内核状态。而是线程可以扫描位图表以便只在线程负载高于阈值负载或线程需要额外的资源来执行操作或执行功能时识别可用内核。在这些情况下,线程可以确定忙碌内核的资源不能用于执行,直到内核再次变为空闲并且对应位图条目更新为0。这样,扫描位图表的线程的标准可以是忙时驱动的。
图4是由线程执行内核保存的指示该内核忙碌的位图300的示意图。图4中的位图300与图3中的位图300大体上相同,除了图3中的单元格310已被修改为图4中的单元格410。图3中的单元格310包括条目“0”,图4中的单元格410包括条目“1”。如上所述,如果内核中所有线程均空闲,则该内核为空闲。当线程对位图300中除第一行之外的行进行布尔或运算时,结果将为1,指示位图300对应的内核忙碌。此外,如果线程对布尔或运算的结果和第一行执行布尔与(Boolean AND)运算,则结果将为1,不仅指示内核忙碌,还指示内核正忙于执行来自内核的预分配应用即来自主域的线程。
当忙碌内核变为空闲时,内核将内核位图中的对应条目从1更新为0。内核还向全局内存位置广播更新,从而使位图表中进行对应更新。忙碌线程可以扫描位图表以识别可用性状态从1(忙碌)更新为0(空闲)的内核。一个或多个线程随后可以使用空闲内核的资源来执行,这转而可能造成位图条目从0(空闲)更新为1(忙碌)。
在包含在线程域中且在第一内核上执行的线程确定第二内核最近变为可用的实例中,整个线程执行无需从第一内核转移到第二内核。反而来自同一应用的睡眠线程可以从第二内核中激活,忙碌线程的一部分工作量可以转移到新激活的线程,造成剩余执行在第一内核中进行。这样,同一应用可以同时在两个或更多内核上执行。睡眠线程(或帮助线程)是一种处于睡眠(即,空闲)状态直至被激活的线程。当睡眠线程的对应应用从内核获取执行机会时,可以激活睡眠线程。因此,帮助线程在激活后才有负载。
在一些实现方式中,内核执行线程的可用性状态可以基于是否给内核预分配了线程域,即内核是否具有主域来确定。如上所述,当已有线程域被预分配给内核时,列中的第一个单元格中存储的值设为1;当没有线程域被预分配给内核时,列中的第一个单元格中存储的值设为0。如果内核中的线程可用并且主域无需执行,则来宾域(即,尚未预分配给内核的线程域)可以在内核上执行。
例如,在内核上执行的来自来宾域的运行线程可以定期检查内核主域中的线程是否忙碌。如果来宾域确定内核主域中的线程空闲,则来宾域可以继续在内核上执行。或者,如果来宾域确定主域中的线程忙碌,则来宾域可以将预分配的内核返回给主域。如果主域中的一个或多个线程正在排队或者正在除主域的预分配内核之外的一个或多个内核上执行,则来宾域可以确定主域忙碌。之后,来宾域可以继续执行一段时间,然后停止在主域的预分配内核上执行,从而将预分配内核返回给主域。来宾域继续执行的时间段可以取决于作业时延和最后期限等因素。该时间段还可以取决于来宾域在执行中是否到达逻辑断点,例如执行可以转移到不同内核并在不造成任何损失或延迟的情况下重启的那个点。
返回图1,在一些实现方式中,机器100中已被预分配了线程域的内核可以保存标志(例如,标志108a、108b、108c、108d、108e、108f以及更多或更少标志),标志指示内核决定捐赠其资源或者与其它线程共享其资源。捐赠或共享决定可以由包括主域或与主域关联的应用作出。如果应用确定捐赠预分配内核的资源,则应用可以标记决定标志,并提供(部分或全部)内核资源给其它线程域中的忙碌线程。在这些实例中,应用的当前活动线程将开始睡眠。整个内核将专用于来自其它域的忙碌线程。当应用变为忙碌时,即,主域中的一个或多个线程变为忙碌时,应用的睡眠线程将被激活,来自来宾域的线程将迁移到可用于执行的其它内核。
另一方面,如果应用确定共享预分配内核的资源,则应用可以相应地标记决定标志。在这些实例中,应用的线程将不做任何处理,并且无需进入睡眠状态。相反,这些线程可以与其它域的忙碌线程在同一内核上一起运行并且共享时间片。当应用变为忙碌时,在预分配内核上执行的另一应用的线程将被迁移到另一内核,从而将预分配内核的资源让给主域。总而言之,内核的捐赠意味着内核专用于不同的忙碌域,而专用于内核的应用进入睡眠状态。共享意味着应用拥有内核,但将与其它线程共享内核,直至应用再次需要线程。
此处所描述的技术可以通过每个内核来实现。即,每个内核可以保存位图,将位图提供到全局内存位置,并且通过引用在全局内存位置处保存的位图表来实现自平衡。此外,在每个内核上运行的操作系统(operating system,OS)可以通过引用位图表来实现自平衡。或者,此处所描述的技术可以由连接到机器中的多个内核的控制器来实现。例如,控制器可以接收来自多个内核的位图,在全局内存位置处保存位图表,并且通过引用位图表来实现弹性负载平衡。
图5是对可在图1的机器上执行的线程实现弹性负载平衡的过程500的示例的流程图。过程500可以由机器中的每个内核来实施,或者由连接到机器中的多个内核的控制器来实施,或者由这两者来实施。在502处,每个内核基于多个线程的负载更新位图,多个线程与内核关联。
在504处,每个内核在位图表映射多个位图中的该位图。位图表可以在可被多个线程域访问的全局内存位置中保存,线程域用于使用多个线程执行内核来执行线程。每个位图指示线程域中包含的多个线程的负载。多个线程与各个内核关联,并且将使用各个内核执行。各个内核基于多个线程的负载保存并更新相应的位图。
在506处,使用多个执行内核基于位图表中所描述的负载来平衡多个线程域的执行。
本说明书中所描述的主题和操作的实现方式可以实现为一种包括数字电子电路的控制器,或者包括本说明书中所公开的结构及其结构等效物的计算机软件、固件或硬件,或者它们中的一个或多个的组合。本说明书中所描述的主题的实现方式可以实现为在计算机存储介质上编码以供数据处理装置执行或者用于控制数据处理装置的操作的一个或多个计算机程序,即一个或多个计算机程序指令模块。计算机存储介质可以是或者包含于计算机可读存储设备、计算机可读存储基板、随机或串行存取存储阵列或设备,或者它们中的一个或多个的组合。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是在人为生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质也可以是一个或多个单独的物理部件或介质(例如,多个CD、磁盘或其它存储设备),或者包含在一个或多个单独的物理部件或介质中。
本发明书中所描述的操作可以实施为控制器对一个或多个计算机可读存储介质上存储的或从其它源收到的数据所执行的操作。
控制器可以包括用于执行此处所描述的操作的一个或多个数据处理装置。术语“数据处理装置”涵盖了所有种类的用于处理数据的装置、设备和机器,例如包括可编程处理器、计算机、片上系统、或者前述示例的多个或者组合。装置可以包括专用逻辑电路,例如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC)。除了硬件之外,装置还可以包括为正在讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、交叉平台运行时环境、虚拟机或者它们中的一项或多项的组合的代码。装置和执行环境可以实现各种不同计算模型基础设施,例如web服务、分布式计算和网格计算基础设施。
举例而言,适用于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或者多个处理器。一般而言,处理器将从只读存储器或随机存取存储器或者这两者接收指令和数据。计算机的基本单元是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。一般而言,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或者光盘,或者可操作地耦合以从一个或多个大容量存储设备接收数据或者向一个或多个大容量存储设备发送数据或者接收并发送数据。但是计算机不需要这样的设备。此外,计算机可以嵌入在另一设备中,聊举数例,比如移动电话、个人数字助理(personal digital assistant,PDA)、移动音频或者视频播放器、游戏控制台、全球定位系统(Global Positioning System,GPS)接收器,或者便携式存储设备(例如,通用串行总线(universal serial bus,USB)快闪驱动)。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或者可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或者并入到专用逻辑电路中。
因此,已描述了主题的特定实现方式。其它实现方式在以下权利要求的保护范围之内。

Claims (20)

1.一种平衡多个线程执行内核上的负载的方法,其特征在于,所述方法包括:
更新多个位图,其中所述多个位图中的每个位图指示多个线程的负载,所述多个线程与所述多个线程执行内核中的每个线程执行内核关联;
在全局内存位置中保存所述多个位图,所述全局内存位置可被与所述多个线程执行内核中的每个线程执行内核关联的所述多个线程访问;以及
基于所述全局内存位置中的所述多个位图平衡与所述多个线程执行内核中的每个线程执行内核关联的所述多个线程的负载。
2.根据权利要求1所述的方法,其特征在于,所述多个线程执行内核包括第一线程执行内核,与所述第一线程执行内核关联的位图包括行表,所述表中除第一行之外的行指示与所述第一线程执行内核关联的第一多个线程中的第一线程是否忙碌。
3.根据权利要求2所述的方法,其特征在于,所述行表中的所述第一行指示线程域是否已被分配给所述第一线程执行内核,所述分配的线程域包括所述第一线程。
4.根据权利要求3所述的方法,其特征在于,当线程域已被分配给所述第一线程执行内核时,所述第一行中存储的值设为1;当线程域未被分配给所述第一线程执行内核时,所述第一行中存储的所述值设为0。
5.根据权利要求2所述的方法,其特征在于,如果所述第一线程忙碌,则除所述第一行之外的所述行中的值设为1;如果所述第一线程可用,则除所述第一行之外的所述行中的所述值设为0。
6.根据权利要求5所述的方法,其特征在于,如果所述第一线程变为可用,则除所述第一行之外的所述行中的所述值从1变为0。
7.根据权利要求1至6中的任一项所述的方法,其特征在于,基于所述全局内存位置中的所述多个位图平衡与所述多个线程执行内核中的每个线程执行内核关联的所述多个线程的负载包括:
确定与第一线程执行内核关联的第一线程忙碌;
基于扫描所述全局内存位置中的所述多个位图中的第二位图识别可用的第二线程执行内核;以及
将所述第一线程的至少一部分转移到所述第二线程执行内核。
8.根据权利要求7所述的方法,其特征在于,所述第二位图包括多个行;如果可由所述第二线程执行内核执行的线程可用于执行线程,则每个行中的值设为0;如果可由所述第二线程执行内核执行的所述线程忙碌,则每个行中的所述值设为1;识别所述第二线程执行内核包括:
对所述多个行执行布尔或(Boolean OR)运算,其中如果所述第二线程执行内核可用于执行线程,则所述布尔或运算的结果为0;如果所述第二线程执行内核忙碌,则所述布尔或运算的所述结果为1。
9.根据权利要求7所述的方法,其特征在于,包括第二线程的第二线程域被分配给所述第二执行内核,导致所述第二线程与其它线程相比优先被所述第二执行内核执行,所述方法还包括:
在将所述第一线程的至少一部分转移到所述第二线程执行内核之后的某个时间,确定所述第二执行内核忙碌;以及
在确定所述第二执行内核忙碌后,将所述第一线程的所述执行转移出所述第二线程执行内核。
10.根据权利要求9所述的方法,其特征在于,所述第二位图包括多个行,所述多个行包括第一行和剩余行;当已有线程域被分配给所述第二线程执行内核时,所述第一行中存储的值设为1;当没有线程域被分配给所述第二线程执行内核时,所述第一行中存储的所述值设为0;如果可由所述第二线程执行内核执行的线程可用于执行线程,则每个剩余行中的值设为0;如果可由所述第二线程执行内核执行的所述线程忙碌,则每个剩余行中的所述值设为1;确定所述第二线程执行内核忙碌包括:
对所述剩余行执行布尔或运算;以及
对对所述剩余行执行所述布尔或运算的结果和所述第一行执行布尔与(Boolean AND)运算。
11.根据权利要求1至10中的任一项所述的方法,其特征在于,被分配给第三线程执行内核的第三线程域包括多个线程的子集,所述子集与所述第三线程执行内核关联,所述方法还包括:
将所述第三线程域设置为捐赠所述第三线程执行内核来执行与其它线程域关联的线程;以及
在将所述第三线程域设置为捐赠所述第三线程执行内核来执行与其它线程域关联的线程后,将与所述第三线程域关联的活动线程设置为睡眠。
12.根据权利要求1至11中的任一项所述的方法,其特征在于,第四线程域被分配给第四线程执行内核,所述第四线程域包括多个线程的子集,所述子集与所述第四线程执行内核关联,所述方法还包括:
将所述第四线程域设置为共享所述第四线程执行内核来执行与其它线程域关联的线程;以及
在将所述第四线程域设置为共享所述第四线程执行内核来执行与其它线程域关联的线程后:
将与所述第四线程域关联的活动线程的子集设置为可供另一线程域使用,
使用所述第四线程执行内核执行所述活动线程子集的至少一部分,以及
响应于所述另一线程域需要线程来执行,将所述活动线程子集迁移到所述另一线程域。
13.根据权利要求12所述的方法,其特征在于,与所述第四线程域关联的所述活动线程子集用于执行与另一线程域关联的线程,还包括:
确定所述第四线程域上的负载超过阈值负载;
在确定所述第四线程域上的所述负载超过所述阈值负载后,在确定的时长内将与所述第四线程域关联的所述活动线程子集上的执行迁移到一个不同的内核;以及
在所述确定的时长到期之后,将与所述第四线程域关联的所述活动线程子集让给所述第四线程执行内核。
14.根据权利要求1至13中的任一项所述的方法,其特征在于,基于所述全局内存位置中的所述多个位图平衡与所述多个线程执行内核中的每个线程执行内核关联的所述多个线程的负载包括基于在所述多个线程执行内核中保存的标志来平衡负载,每个标志指示每个线程执行内核的资源是否可用于捐赠或共享,所述方法还包括,对于第一线程执行内核:
确定由所述第一线程执行内核保存的第一位图中的第一标志被设置为指示所述第一线程执行内核的资源可用于捐赠;以及
在确定所述第一标志被设置为指示所述资源可用于捐赠后,将预分配给所述第一线程执行内核的线程设置为睡眠。
15.一种用于负载自平衡的线程执行内核,其特征在于,所述线程执行内核用于执行包含以下的操作:
基于多个线程的负载更新位图,所述多个线程与所述线程执行内核关联;
在全局内存位置中保存所述多个位图中的所述位图,其中,所述全局内存位置可被与所述线程执行内核关联的所述多个线程访问,所述多个位图中的每个位图指示与多个线程执行内核中的每个线程执行内核关联的多个线程的负载;以及
基于所述全局内存位置中的所述多个位图平衡与所述线程执行内核关联的所述多个线程的负载。
16.根据权利要求15所述的内核,其特征在于,由所述线程执行内核保存的所述位图包括行表,所述表中除第一行之外的行指示与所述线程执行内核关联的所述多个线程中的第一线程是否忙碌。
17.根据权利要求16所述的内核,其特征在于,所述行表中的所述第一行指示线程域是否已被分配给所述线程执行内核,所述分配的线程域包括所述第一线程;当线程域已被分配给所述线程执行内核时,所述第一行中存储的值设为1;当线程域未被分配给所述线程执行内核时,所述第一行中存储的所述值设为0。
18.根据权利要求17所述的内核,其特征在于,如果所述第一线程忙碌,则除所述第一行之外的所述行中的值设为1;如果所述第一线程可用,则除所述第一行之外的所述行中的所述值设为0;如果所述第一线程变为可用,则除所述第一行之外的所述行中的所述值从1变为0。
19.根据权利要求15至18中的任一项所述的内核,其特征在于,基于所述全局内存位置中的所述多个位图平衡与所述线程执行内核关联的所述多个线程的负载包括基于在所述多个线程执行内核中保存的标志来平衡所述多个线程的负载,每个标志指示每个线程执行内核的资源是否可用于捐赠或共享。
20.一种用于平衡多个线程执行内核上的负载的系统,其特征在于,所述系统包括:
可被多个线程域访问的全局内存位置,所述多个线程域用于使用所述多个线程执行内核来执行线程;以及
所述多个线程执行内核中的一个线程执行内核,所述线程执行内核耦合到所述全局内存位置,所述线程执行内核用于执行包含以下的操作:
基于多个线程的负载更新位图,所述多个线程与所述线程执行内核关联;
更新所述全局内存位置中的多个位图中的所述位图,其中所述多个位图中的每个位图指示多个线程的负载,所述多个线程与所述多个线程执行内核中的每个线程执行内核关联;以及
基于所述全局内存位置中的所述多个位图平衡与所述线程执行内核关联的所述多个线程的执行。
CN201680031953.1A 2015-08-04 2016-07-30 线程弹性负载平衡的内核负载知识 Active CN107615246B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/818,253 US20170039093A1 (en) 2015-08-04 2015-08-04 Core load knowledge for elastic load balancing of threads
US14/818,253 2015-08-04
PCT/CN2016/092483 WO2017020798A1 (en) 2015-08-04 2016-07-30 Core load knowledge for elastic load balancing of threads

Publications (2)

Publication Number Publication Date
CN107615246A true CN107615246A (zh) 2018-01-19
CN107615246B CN107615246B (zh) 2021-02-12

Family

ID=57942458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680031953.1A Active CN107615246B (zh) 2015-08-04 2016-07-30 线程弹性负载平衡的内核负载知识

Country Status (4)

Country Link
US (1) US20170039093A1 (zh)
EP (1) EP3304302A4 (zh)
CN (1) CN107615246B (zh)
WO (1) WO2017020798A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829510A (zh) * 2018-05-04 2018-11-16 天津猎鹰网络技术有限公司 线程绑定处理方法和装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286513A1 (en) * 2016-04-05 2017-10-05 International Business Machines Corporation Supplementing change streams
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US12008401B2 (en) * 2019-12-20 2024-06-11 Advanced Micro Devices, Inc. Automatic central processing unit (CPU) usage optimization

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601475A (zh) * 2003-09-25 2005-03-30 国际商业机器公司 用于在smt处理器中进行cpi负载平衡的系统和方法
US20120066688A1 (en) * 2010-09-13 2012-03-15 International Business Machines Corporation Processor thread load balancing manager
US20140026146A1 (en) * 2011-12-29 2014-01-23 Sanjeev S. Jahagirdar Migrating threads between asymmetric cores in a multiple core processor
US20140089936A1 (en) * 2012-09-21 2014-03-27 Htc Corporation Multi-core device and multi-thread scheduling method thereof

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389506B1 (en) * 2002-07-30 2008-06-17 Unisys Corporation Selecting processor configuration based on thread usage in a multiprocessor system
US8539491B1 (en) * 2004-07-26 2013-09-17 Oracle America, Inc. Thread scheduling in chip multithreading processors
US8806491B2 (en) * 2007-12-31 2014-08-12 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
CN100562854C (zh) * 2008-03-11 2009-11-25 浙江大学 多核处理器操作系统负载均衡的实现方法
US8887171B2 (en) * 2009-12-28 2014-11-11 Intel Corporation Mechanisms to avoid inefficient core hopping and provide hardware assisted low-power state selection
US20120110303A1 (en) * 2010-10-28 2012-05-03 International Business Machines Corporation Method for Process Synchronization of Embedded Applications in Multi-Core Systems
US8881159B2 (en) * 2011-03-24 2014-11-04 International Business Machine Corporation Constant time worker thread allocation via configuration caching
US9448940B2 (en) * 2011-10-28 2016-09-20 The Regents Of The University Of California Multiple core computer processor with globally-accessible local memories
WO2014032011A2 (en) * 2012-08-23 2014-02-27 Old Dominion University Reasearch Foundation Method and system for generating four dimensional mesh from images
JP5522283B1 (ja) * 2013-02-27 2014-06-18 日本電気株式会社 リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置
US9448934B2 (en) * 2013-02-28 2016-09-20 International Business Machines Corporation Affinity group access to global data
US20150007196A1 (en) * 2013-06-28 2015-01-01 Intel Corporation Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores
US9342374B2 (en) * 2013-06-28 2016-05-17 Dell Products, L.P. Method of scheduling threads for execution on multiple processors within an information handling system
US9703708B2 (en) * 2013-09-27 2017-07-11 Intel Corporation System and method for thread scheduling on reconfigurable processor cores
KR102182295B1 (ko) * 2014-04-21 2020-11-24 삼성전자 주식회사 하드웨어 기반 태스크 스케쥴링 장치 및 방법
US9501327B2 (en) * 2014-05-13 2016-11-22 International Business Machines Corporation Concurrently processing parts of cells of a data structure with multiple processes
US9600392B2 (en) * 2014-08-11 2017-03-21 International Business Machines Corporation Tracking pipelined activity during off-core memory accesses to evaluate the impact of processor core frequency changes
US9582052B2 (en) * 2014-10-30 2017-02-28 Qualcomm Incorporated Thermal mitigation of multi-core processor
US20160179680A1 (en) * 2014-12-18 2016-06-23 Dell Products L.P. Systems and methods for integrated rotation of processor cores
US10133602B2 (en) * 2015-02-19 2018-11-20 Oracle International Corporation Adaptive contention-aware thread placement for parallel runtime systems
US9678806B2 (en) * 2015-06-26 2017-06-13 Advanced Micro Devices, Inc. Method and apparatus for distributing processing core workloads among processing cores

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601475A (zh) * 2003-09-25 2005-03-30 国际商业机器公司 用于在smt处理器中进行cpi负载平衡的系统和方法
US20120066688A1 (en) * 2010-09-13 2012-03-15 International Business Machines Corporation Processor thread load balancing manager
US20140026146A1 (en) * 2011-12-29 2014-01-23 Sanjeev S. Jahagirdar Migrating threads between asymmetric cores in a multiple core processor
US20140089936A1 (en) * 2012-09-21 2014-03-27 Htc Corporation Multi-core device and multi-thread scheduling method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829510A (zh) * 2018-05-04 2018-11-16 天津猎鹰网络技术有限公司 线程绑定处理方法和装置

Also Published As

Publication number Publication date
US20170039093A1 (en) 2017-02-09
EP3304302A1 (en) 2018-04-11
CN107615246B (zh) 2021-02-12
WO2017020798A1 (en) 2017-02-09
EP3304302A4 (en) 2018-07-04

Similar Documents

Publication Publication Date Title
US9659081B1 (en) Independent data processing environments within a big data cluster system
US9898601B2 (en) Allocation of shared system resources
US9430391B2 (en) Managing coherent memory between an accelerated processing device and a central processing unit
US10037222B2 (en) Virtualization of hardware accelerator allowing simultaneous reading and writing
US10191759B2 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9280380B2 (en) Management of I/O reqeusts in virtual machine migration
US8166288B2 (en) Managing requests of operating systems executing in virtual machines
JP2018533122A (ja) マルチバージョンタスクの効率的なスケジューリング
US20060206891A1 (en) System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted
US9141173B2 (en) Thread consolidation in processor cores
US9697029B2 (en) Guest idle based VM request completion processing
US20060227788A1 (en) Managing queues of packets
CN107615246A (zh) 线程弹性负载平衡的内核负载知识
US9256470B1 (en) Job assignment in a multi-core processor
KR102086019B1 (ko) 이종 프로세서를 사용하여 애플리케이션에 낮은 레이턴시를 제공하는 시스템 및 방법
US20210117240A1 (en) Cpu utilization for service level i/o scheduling
US10387178B2 (en) Idle based latency reduction for coalesced interrupts
US20160124763A1 (en) Limited virtual device polling based on virtual cpu pre-emption
US8914779B2 (en) Data placement for execution of an executable
US9088569B2 (en) Managing access to a shared resource using client access credentials
US20180181442A1 (en) Resource allocation
US9547522B2 (en) Method and system for reconfigurable virtual single processor programming model
US7216213B2 (en) Method of analyzing data utilizing queue entry
US20240201876A1 (en) Method and apparatus for managing memory
CN114741194A (zh) I/o请求的处理方法及装置

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220629

Address after: 510670 Room 518, 91 Kefeng Road, Huangpu District, Guangzhou City, Guangdong Province

Patentee after: Guangzhou Fangwei Information Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Effective date of registration: 20220629

Address after: 201800 room 1026, 10th floor, No.3 Lane 733, Hewang Road, Jiading District, Shanghai

Patentee after: Shanghai Pengxi Semiconductor Co.,Ltd.

Address before: 510670 Room 518, 91 Kefeng Road, Huangpu District, Guangzhou City, Guangdong Province

Patentee before: Guangzhou Fangwei Information Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231229

Address after: 201899 5th floor, building 2, 333 Huangqing Road, Jiading District, Shanghai

Patentee after: SHANGHAI PENGBANG INDUSTRIAL Co.,Ltd.

Address before: 201800 room 1026, 10th floor, No.3 Lane 733, Hewang Road, Jiading District, Shanghai

Patentee before: Shanghai Pengxi Semiconductor Co.,Ltd.

TR01 Transfer of patent right