CN118159947A - 用于处理任务请求的方法和计算设备 - Google Patents

用于处理任务请求的方法和计算设备 Download PDF

Info

Publication number
CN118159947A
CN118159947A CN202180103662.XA CN202180103662A CN118159947A CN 118159947 A CN118159947 A CN 118159947A CN 202180103662 A CN202180103662 A CN 202180103662A CN 118159947 A CN118159947 A CN 118159947A
Authority
CN
China
Prior art keywords
threads
task
request
tasks
shared
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
Application number
CN202180103662.XA
Other languages
English (en)
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing 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 Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Publication of CN118159947A publication Critical patent/CN118159947A/zh
Pending legal-status Critical Current

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

一种用于在多线程计算系统中处理任务请求的方法,包括确定用于服务从客户端接收的任务请求的过程。所述方法还包括:在至少两组线程之间划分用于服务所述任务请求的所述过程,其中,第一组线程用于处理比第二组线程处理的任务复杂性更低的任务。所公开的方法提高了所述多线程计算系统的性能,降低了数据复制时延,并且减少了资源(例如,内存)消耗。

Description

用于处理任务请求的方法和计算设备
技术领域
本发明大体上涉及数据管理和数据复制系统领域;更具体地,涉及用于在多线程计算系统中处理任务请求以实现低时延数据复制的方法和计算设备。
背景技术
随着数据密集型应用的快速发展,云环境下的数据存储需求也随之增加。在云环境中,持久内存(persistent memory,PM)通常用于提高小输入/输出(input/output,I/O)性能,例如元数据、索引、日志文件(或日志)、热数据等的存储。使用持久内存存储上述数据通常会使云服务加速,例如数据库、高性能计算(high-performance computing,HPC)等。此外,持久内存还可以用于存储数据结构,使得即使在创建或最后修改数据结构的过程结束之后,也可以使用内存指令或内存应用编程接口(application programming interface,API)连续访问所存储的数据结构。持久内存与常规内存一样,但它在服务器崩溃时仍然是持久的,如硬盘或固态驱动器(solid-state drive,SSD)。但是,持久内存与常规内存一样是字节寻址的,可以使用远程直接内存访问(remote direct memory access,RDMA)访问。RDMA的使用使得读写I/O操作的数据传输具有部分低时延。同时,执行写I/O的数据复制,以确保数据具有更高的可用性和可靠性。但是,将数据复制到多个节点会给数据传输过程增加大量时延。这是因为传统客户端设备仅在涉及与所有多个节点(即,复制节点)通信的数据传输过程结束时,以及在对包括传统主节点在内的每个节点的多个写操作结束时,才接收到“成功”或“失败”的应答。
在传统的多线程计算系统中,RDMA写操作到具有存储级内存的多个节点的数据复制过程涉及客户端设备向传统主节点以及复制节点(或副本)发送RDMA写请求。持久内存也称为存储级内存。然后传统主节点接收RDMA写请求,等待轮询或异常。一段时间后,复制节点(即副本)向传统主节点发送关于RDMA写请求的确认。此后,传统主节点写入其持久内存,并向传统的客户端设备发送关于RDMA写请求的确认。这样,向多个节点复制数据的过程(或一个线程)就完成了。
数据复制过程使用多个线程或过程,每个线程或过程通常以与其它线程处理该过程相同的方式处理分配的工作。因此,传统的操作系统调度器执行上下文切换,这是一个存储过程或线程状态的过程,以便它可以在稍后的时间恢复并恢复执行。执行这样的上下文切换通常是计算密集型的。在数据复制过程中,在等待来自复制节点(或副本)的应答时,传统的操作系统调度器可以执行上下文切换,以便让其它线程在等待期间(被认为是空闲时间)工作。因此,使用多个上下文切换会导致额外的时延和较多的资源消耗,这是不可取的。
其它技术方案,如快速远程内存(fast remote memory,FaRM)、Tailwind和分布式异步对象存储(distributed asynchronous object storage,DAOS)都依赖于底层操作系统来执行RDMA操作的线程或过程调度,所述调度包括数据复制过程。DAOS支持数据复制过程以及更常见的客户端复制。因此,在传统的多线程计算系统中存在高复制时延以及高资源(例如,内存)消耗的技术问题,进一步导致系统的吞吐量减小且效率降低。
因此,根据上述讨论,需要克服与到复制节点(即,副本)的数据复制的传统方法相关联的上述缺点。
发明内容
本发明提供了一种用于在多线程计算系统中处理任务请求的方法和计算设备。本发明提供了现有的高复制时延以及传统多线程计算系统中的高资源(例如,内存)消耗的问题的技术方案,进一步导致传统多线程计算系统中的吞吐量减小并且效率降低。本发明的目的是提供一种至少部分地克服现有技术中遇到的问题的技术方案,并提供一种用于在多线程计算系统中处理任务请求的改进方法和计算设备,以实现与传统系统相比时延更低的数据复制。
本发明的目标是通过所附独立权利要求中提供的技术方案来实现的。本发明的有利实施方式在从属权利要求中进一步定义。
根据本发明的一个方面,提供了一种用于在多线程计算系统中处理任务请求的方法。所述方法包括确定用于服务从客户端接收的所述任务请求的过程。所述方法还包括:在至少两组线程之间划分用于服务所述任务请求的所述过程,其中,第一组线程用于处理比第二组线程处理的任务复杂性更低的任务。
本发明的方法提高了所述多线程计算系统的性能,与现有系统相比,降低了数据复制时延,减少了资源(例如,内存)消耗。由于服务所述任务请求的过程被划分为所述第一组线程和所述第二组线程,并且每个组在不同的时间被分配不同的任务以独立工作,因此实现了较低的数据复制时延。由于每组线程独立执行多个任务,空闲时间减少,CPU利用率提高,从而提高了系统的资源利用率。
在一种实现方式中,所述第一组线程用于在主节点处从所述客户端接收所述任务请求,并将所述任务请求发送到一个或多个辅助节点进行复制。
通过将所述第一组线程用于特定任务,例如在所述主节点处从所述客户端接收所述任务请求,并将所述任务请求发送到所述一个或多个辅助节点进行复制,降低了所述数据复制时延。此外,由于更多任务并行使用更多CPU核心,计算资源利用率也会提高。
在另一种实现方式中,所述第二组线程用于接收来自所述一个或多个辅助节点的响应,在所述主节点处完成所述任务请求,并向所述客户端发送已完成任务请求的确认。
有利的是,使用所述第二组线程来接收来自所述一个或多个辅助节点的所述响应,在所述主节点完成所述任务请求,并向所述客户端发送对已完成任务请求的确认,以便加快所述任务请求的服务。
在另一种实现方式中,所述方法还包括将单独任务队列与所述第二组线程中的每个线程配对,其中,将任务从所述第一组线程添加到所述单独任务队列。
所述单独任务队列与所述第二组线程中的每个线程的配对使得可以并行执行一个或多个任务,从而造成所述多线程计算系统的高吞吐量。
在另一种实现方式中,所述方法还包括在所述第二组线程中的所有线程之间创建共享任务队列。
在所述第二组线程中的所有线程之间创建所述共享任务队列,不仅可以实现多个任务的并行执行,还可以减少内存消耗。
在另一种实现方式中,所述方法还包括将位于所述第一组线程与所述第二组线程之间的共享内存上的任务添加到所述单独任务队列或所述共享任务队列,其中,所述第一组线程中的每个线程用于使用比较并交换(compare-and-swap,CAS)技术来访问所述单独任务队列,并且所述第二组线程中的每个线程用于使用CAS技术来访问所述单独任务队列和所述共享任务队列中的每个队列。
所述CAS技术的使用提供了对所述单独任务队列和所述共享任务队列的快速访问,因为所述CAS技术取代了速度较慢的互斥技术。
在另一种实现方式中,添加到所述单独任务队列或所述共享任务队列的每个任务包括预定的往返(Return to Trip,RTT)值和返回值。
通过预先确定的RTT值和与每个任务相关联的返回值,可以轻松地选择并行执行的任务。
在另一种实现方式中,所述第二组线程中的每个线程用于在空闲时段处理来自所述对应的单独任务队列或所述共享任务队列的任务,所述空闲时段是所述线程等待完成现有任务请求所花费的时间。
通过在所述现有任务请求的所述空闲时段处理所述任务,所述系统的利用率最大化,所述空闲时段最小化。
在另一种实现方式中,当所述任务的RTT值小于所述现有任务请求的所述RTT值与所述返回值之和时,仅在所述空闲时段处理所述单独任务队列或所述共享任务队列中的任务。
处理RTT值小于所述现有任务请求的所述RTT值与所述返回值之和的任务是有利的,以便不扰乱写入顺序。
在另一种实现方式中,仅当在所述单独任务队列中没有找到所述空闲时段的符合条件的任务时,才从所述共享任务队列中挑选所述任务。
在所述空闲时段选择符合条件的任务,使得所述空闲时段最小化。
在另一个方面中,本发明提供了一种用于处理任务请求的计算设备。所述计算设备包括:内存;通信接口;处理器,用于确定用于服务从客户端接收的所述任务请求的过程;在至少两组线程之间划分用于服务所述任务请求的所述过程,其中,第一组线程用于处理比第二组线程处理的任务复杂性更低的任务。
在执行所述方法之后,所述计算设备实现了本发明方法的所有优点和效果。
在又一方面,本发明提供了一种包括指令的计算机程序,当所述程序被计算机执行时,所述指令使所述计算机执行所述方法的步骤。
所述计算机(例如,计算设备或系统的处理器)在执行所述方法后实现了所述方法的所有优点和效果。
应当理解的是,所有上述实现方式可以组合在一起。
需要说明的是,本申请中描述的所有设备、元件、电路、单元和模块都可以在软件元件或硬件元件或其任何类型的组合中实现。本申请中描述的各种实体所执行的步骤以及所描述的各种实体要执行的功能均意在指各个实体用于执行各个步骤和功能。即使在以下具体实施例的描述中,外部实体要执行的特定功能或步骤未反映在执行该特定步骤或功能的实体的特定详细元件的描述中,技术人员应清楚,这些方法和功能可以在相应的软件或硬件元件中实现,或以此类元件的任何种组合实现。可以理解的是,本发明的特征易于以各种组合进行组合,而不脱离由所附权利要求书所定义的本发明的范围。
附图以及结合所附权利要求解释的说明性实施方式的详细描述将清楚地描述本发明的其它方面、优点、特征和目的。
附图说明
结合所附附图阅读时,可以更好地理解上述发明内容以及说明性实施例的下列详细描述。为了说明本发明,本发明的示例性结构在附图中示出。然而,本发明并不限于本文公开的特定方法和手段。此外,本领域的技术人员将理解,这些附图并非按比例绘制。在可能的情况下,相同的元件使用相同的数字表示。
下面仅通过举例,结合以下附图对本发明实施例进行描述。
图1为本发明实施例提供的用于在多线程计算系统中处理任务请求的方法的流程图;
图2为本发明实施例提供的计算设备的各种示例性组件的框图;
图3示出了本发明实施例提供的在主节点处使用第一组线程和第二组线程服务任务请求;
图4示出了本发明实施例提供的在主节点的第一组线程和第二组线程之间分配一个或多个任务请求。
在附图中,带下划线的数字用于表示带下划线的数字所在的项目或与带下划线的数字相邻的项目。不带下划线的数字与将该不带下划线的数字链接到项目的线条所标识的项目相关。当数字不带下划线但带有关联箭头时,不带下划线的数字用于标识箭头所指的一般项目。
具体实施方式
以下详细描述说明了本发明的实施例以及可以实现这些实施例的方式。虽然已公开本发明的一些实施方式,但本领域的技术人员将认识到,也可以实现用于实施或实践本发明的其它实施例。
图1为本发明实施例提供的用于在多线程计算系统中处理任务请求的方法的流程图。参考图1,示出了用于在多线程计算系统中处理任务请求的方法100。方法100包括步骤102和104。方法100由计算设备执行,例如,在图2中详细描述。
方法100提供了一种改进且高效的中央处理单元(central processing unit,CPU)调度方案,所述方案能够增加多线程计算系统的吞吐量和带宽。通常,多线程计算系统可以定义为允许过程的两个或两个以上线程在共享相同资源的同时并行执行的计算系统。线程可以定义为一个自包含的指令序列,这些指令可以与属于同一过程的其它线程并行执行。例如,在网页浏览器中,一个线程用于处理用户界面,并行地,另一个线程用于获取要显示的数据。因此,多线程可以允许执行多个并发任务,这些任务可以在单个过程中执行。因此,多线程提高了计算系统的响应性。方法100将在以下步骤中详细描述。
在步骤102中,方法100包括确定用于服务从客户端接收的任务请求的过程。在一个示例中,从客户端接收的任务请求可以是远程直接内存访问(remote direct memoryaccess,RDMA)写请求。在另一个示例中,从客户端接收到的任务请求可以是RDMA读请求。在接收到来自客户端的任务请求(即RDMA写请求或RDMA读请求)后,确定为该任务请求提供服务的过程。
在步骤104中,方法100还包括:在至少两组线程之间划分用于服务所述任务请求的过程,其中,第一组线程用于处理比第二组线程处理的任务复杂性更低的任务。第一组线程用于处理任务,所述任务与第二组线程处理的任务不同。
在一种实现方式中,第一组线程用于在主节点处从客户端接收任务请求,并将所述任务请求发送到一个或多个辅助节点进行复制。第一组线程用于在主节点处从客户端接收任务请求(例如,RDMA写请求)。第一组线程接收到任务请求后,还用于将接收到的任务请求(即RDMA写请求)发送给辅助节点进行数据复制。因此,辅助节点也可以称为数据复制节点或副本。第一组线程可以与主节点上的两个或两个以上CPU核心相关联。或者,每个线程都绑定到自己的CPU核心。
在一种实现方式中,所述第二组线程用于接收来自所述一个或多个辅助节点的响应,在所述主节点处完成所述任务请求,并向所述客户端发送已完成任务请求的确认。第二组线程用于接收来自辅助节点的响应(例如,RDMA写请求的确认)。此后,第二组线程用于使用直接内存访问(direct memory access,DMA)引擎将数据写入主节点的本地持久内存,用于大于64KB的数据块组。第二组线程还用于向客户端发送完成的任务请求(即RDMA写请求)的确认(即确认(acknowledgement))。
与从一个或多个辅助节点接收响应、在辅助节点处执行任务请求(即,RDMA写请求)以及向客户端发送任务请求的确认相比,在主节点处从客户端接收任务请求(即,RDMA写请求)并将任务请求发送到一个或多个辅助节点是较不密集且较快的过程。因此,与第二组线程相比,第一组线程用于处理复杂度较低的任务。与第一组线程类似,第二组线程可以与一个或多个辅助节点处的两个或两个以上CPU核心相关联。此外,与第二组线程相比,第一组线程绑定到CPU核心的线程数量更少。由于处理复杂度较高的任务,第二组线程需要更强的CPU能力,因此绑定到CPU核心的线程数量也相应地更多。
在一种实现方式中,方法100还包括将单独任务队列与第二组线程中的每个线程配对,其中,将任务从所述第一组线程添加到所述单独任务队列。单独任务队列可以属于线程空间共享内存,共享内存可以有一个或多个工作队列。单独任务队列可以有尾部和头部。将不同的任务从第一组线程中添加(即入队)到单独任务队列的尾部。此后,每个单独任务队列从其头部部分与第二组线程中的每个线程配对,用于执行添加的任务。
在一种实现方式中,所述方法100还包括在所述第二组线程中的所有线程之间创建共享任务队列。除了线程空间共享内存中的单个任务队列外,还为第二组线程中的所有线程创建了一个共享任务队列。与单独任务列表类似,共享任务队列可以有尾部和头部。不同的任务从第二组线程的所有线程入队到共享任务队列的尾部,从共享任务队列的头部出队到第二组线程的所有线程。
在一种实现方式中,所述方法100还包括将位于所述第一组线程与所述第二组线程之间的共享内存上的任务添加到所述单独任务队列或所述共享任务队列,其中,所述第一组线程中的每个线程用于使用比较并交换(compare-and-swap,CAS)技术来访问所述单独任务队列,并且所述第二组线程中的每个线程用于使用CAS技术来访问所述单独任务队列和所述共享任务队列中的每个队列。第一组线程中的线程可以用于将任务添加到工作队列,工作队列是单独任务队列,工作队列位于第一组线程与第二组线程之间的共享内存上。或者,第一组线程用于为第二组线程生成任务,而第二组线程用于执行生成的任务。此外,第二组线程中的每个线程可以使用比较并交换(compare-and-swap,CAS)来访问专用于第二组线程的共享任务队列。比较并交换(compare-and-swap,CAS)技术是一种原子流程,可以用于重写共享内存上的数据,而不需要使用操作系统(operating system,OS)级别的锁定,例如信号量。
在一种实现方式中,添加到所述单独任务队列或所述共享任务队列的每个任务包括预定的往返(Return to Trip,RTT)值和返回值。预定的RTT值可以由辅助节点(或数据复制节点)的往返时间组成,该往返时间从向辅助节点发送任务请求(即RDMA写请求)开始,等待它们完成任务请求并返回应答。RTT值可以是一个众所周知的数字,因为辅助节点就在主节点附近,并且也可以根据净荷长度和制造商公布的数字计算主节点的本地持久内存的写入持续时间。RTT值也可称为估计到达时间(estimated-time-of-arrival,ETA)。返回值可以定义为将数据写入主节点的本地持久内存所需的持续时间。可以根据写入净荷长度和制造商公布的数字轻松计算返回值。
在一种实现方式中,第二组线程中的每个线程用于在空闲时段处理所述对应的单独任务队列或所述共享任务队列中的任务。空闲时段是线程等待现有任务请求完成所花费的时间。如果现有任务请求具有较大的RTT(即ETA)和返回值,则增加空闲时段。因此,为了减少空闲时段,第二组线程中的每个线程用于在空闲时段处理所述对应的单独任务队列或所述共享任务队列中的任务。
在一种实现方式中,当所述任务的RTT值小于所述现有任务请求的所述RTT值与所述返回值之和时,仅在所述空闲时段处理所述单独任务队列或所述共享任务队列中的任务。只有当所选任务的RTT值小于现有任务请求的RTT值与返回值之和时,才可能在空闲时段处理从单独任务队列或共享任务队列中选择的其它任务。在这种情况下,现有任务请求和选择的任务是可以并行启动的,同时也可以减少并行启动的任务之间的空闲时间。通常,可以通过从主节点向辅助节点发送任务请求(例如,RDMA写请求)来启动。
在一种实现方式中,仅当在所述单独任务队列中没有找到所述空闲时段的符合条件的任务时,才从所述共享任务队列中挑选所述任务。如果第二组线程在单独任务队列中找不到符合条件的并发任务启动,则第二组线程从共享任务队列中挑选任务。启动最佳拟合任务,使空闲时间最小化。此外,当第二组线程接收到低值ETA和返回任务并且它不值得启动时,第二组线程可以将该任务推入共享任务队列。
因此,所述方法100有效地降低了数据传输过程到复制节点期间的时延(例如,数据复制时延),因为所述数据传输过程被分为两组线程,例如第一组线程和第二组线程。第一组线程中的每个线程以及第二组线程中的每个线程都被分配一个特定的任务,进一步提高了CPU利用率(因为更多的任务并行使用更多的CPU核心)且减少了空闲时间。复制时延可以通过在辅助节点上不使用任何软件的情况下,使用对持久日志的单边RDMA操作来计算。方法100通过根据不同的时间帧(例如,RTT、返回值、启动周期等)选择任务来实现空闲时间最小化,进一步使系统的利用率最大化。此外,方法100实现了两组线程之间的无锁任务传输,这导致了更好的CPU利用率和整体较低的内存消耗。方法100也适用于高性能计算(highperformance computing,HPC)。
步骤102和104只是说明性的,并且还可以提供其它替代方案,其中添加一个或多个步骤,删除一个或多个步骤,或按照不同的顺序提供一个或多个步骤,而不脱离本文权利要求书的范围。
图2为本发明实施例提供的计算设备的各种示例性组件的框图。已经结合图1的元件描述了图2。参考图2,示出了包括内存202、通信接口204和处理器206的计算设备200的框图。内存202用于存储任务请求202A。内存202和通信接口204可以通信耦合到处理器206。计算设备200的处理器206用于执行(图1的)方法100。
计算设备200包括用于处理任务请求202A的适当逻辑、电路、接口或代码。计算设备200可以是多线程计算系统。计算设备200也可以称为主节点。计算设备200的示例包括但不限于计算服务器、大型计算机、超级计算机等。在一个示例中,计算设备200可以是单个计算设备或电子设备。在另一示例中,计算设备200可以是以并行或分布式架构运行的多个计算设备或电子设备的网络中的计算节点。
内存202包括适当的逻辑、电路、接口或代码,用于存储数据和可由处理器206执行的指令。内存202的实现示例可以包括但不限于本地持久内存或远程直接内存。内存202可以存储操作系统或其它程序产品(包括一个或多个操作算法),以操作计算设备200。
通信接口204可以包括适当的逻辑、电路、接口或代码,用于从客户端接收任务请求。此外,通信接口204用于分别与内存202和处理器206通信。通信接口204的示例可以包括但不限于射频收发器、网络接口、远程信息处理单元和/或用户身份模块(subscriberidentity module,SIM)卡。
处理器206包括适当的逻辑、电路、接口或代码,用于执行存储在内存202中的指令。在一个示例中,处理器206可以是通用处理器。处理器206的其它示例可以包括但不限于中央处理单元(central processing unit,CPU)、微处理器、微控制器、复杂指令集计算(complex instruction set computing,CISC)处理器、专用集成电路(application-specific integrated circuit,ASIC)处理器、精简指令集计算(reduced instructionset computing,RISC)处理器、超长指令字(very long instruction word,VLIW)处理器、状态机、数据处理单元以及其它处理器或控制电路。此外,处理器206可以指一个或多个单独的处理器、处理设备、作为机器一部分的处理单元,例如计算设备200。
在操作中,处理器206用于确定用于服务从客户端接收的任务请求202A的过程。处理器206用于从客户端接收任务请求(例如,RDMA写请求)。此后,处理器206用于确定服务任务请求的过程。
处理器206还用于:在至少两组线程之间划分用于服务任务请求的过程,其中,第一组线程用于处理比第二组线程处理的任务复杂性更低的任务。处理器206从客户端接收到任务请求(即,RDMA写请求)后,还用于将过程划分为两组线程,例如第一组线程和第二组线程。与由第二组线程处理的任务相比,第一组线程用于处理复杂度较低的任务,第一组线程处理的任务为,例如从客户端接收任务请求并将任务请求发送到辅助节点,第二组线程处理的任务为,例如从辅助节点接收应答、在主节点执行任务请求并将应答发送到客户端。此外,与第二组线程相比,第一组线程绑定到CPU核心的线程数量更少。由于处理复杂度较高的任务,第二组线程需要更强的CPU能力,因此绑定到CPU核心的线程数量也相应地更多。
在一个方面中,本发明提供了一种包括指令的计算机程序,当所述程序被计算机执行时,所述指令使所述计算机执行所述方法100(图1的)的步骤。在又一个方面中,本发明提供了一种其上存储有计算机实现指令的非瞬时性计算机可读介质,所述计算机实现指令在由计算机执行时使所述计算机执行所述方法100的操作。
图3示出了本发明实施例提供的在主节点处使用第一组线程和第二组线程服务任务请求。已经结合图1和图2的元件描述了图3。参考图3,示出了用于服务任务请求的序列图300。其中示出了客户端302、主节点304和一个或多个辅助节点306。还示出了主节点304处的第一组线程304A和第二组线程304B。进一步示出了一系列操作308至318。第一组线程304A和第二组线程304B中的每个线程由虚线框表示,其仅用于说明目的。
在操作308中,客户端302用于向主节点304发送任务请求(例如,RDMA写请求)。
在操作310中,主节点304处的第一组线程304A用于从客户端302接收任务请求,并将接收到的任务请求(即,RDMA写请求)发送到一个或多个辅助节点306(即,复制节点或副本)。
在操作312中,第二组线程304B正在等待来自一个或多个辅助节点306的确认。
在操作314中,一个或多个辅助节点306向主节点304处的第二组线程304B发送关于任务请求的确认。
在操作316中,第二组线程304B通过将数据写入主节点304的持久内存来完成任务请求。
在操作318中,第二组线程304B向客户端302发送对已完成任务请求的确认。这样,从客户端302接收的任务请求通过第一组线程304A和第二组线程304B在主节点304和一个或多个辅助节点306之间被服务。
此外,在操作310之后,存在等待时段(或空闲时间),在此期间,第二组线程304B等待来自一个或多个辅助节点306的确认。如果现有任务请求具有较大的往返时间和返回持续时间值,则第二组线程304B可用于选择与现有任务相比具有较小RTT值的另一任务,以便在等待期间并行执行,并且不扰乱写入的顺序。这使得系统在等待时段的利用率更高。
如上所述,服务于任务请求的过程被划分为第一组线程304A和第二组线程304B,并且第一组线程304A和第二组线程304B中的每个线程被分配不同的角色。因此,多个任务可以并行运行,从而提高了系统(即多线程计算系统)在高吞吐量、低时延和带宽方面的性能。传统上,没有特定的角色或任务请求分配给多个线程,假设每个线程以与其子成员相同的方式处理分配的任务请求。这导致上下文切换的使用增加,因此,服务任务请求的传统过程是计算密集型的,并且具有高时延。由于第一组线程304A和第二组线程304B之间的角色分离的性质,上下文切换仍然进行,但由于将分配的任务请求调度到第一组线程304A和第二组线程304B中的每个线程,上下文切换的数量显著减少。
图4示出了本发明实施例提供的在主节点的第一组线程和第二组线程之间分配一个或多个任务请求。已经结合图1、图2和图3的元件描述了图4。参考图4,示出了包括第一组线程304A和第二组线程304B的主节点304。还示出了多个单独任务队列402和共享任务队列404。主节点304由虚线框表示,该虚线框仅用于说明目的。
第一组线程304A和第二组线程304B中的每个线程对应于CPU的单个核心(例如,图2的处理器206)。最初,第一组线程304A(也表示为G1)用于将多个任务请求(例如,RDMA写请求)添加到多个单独任务队列402中的每个单独任务队列。所述多个单独任务队列402中的每个单独任务队列具有尾部和头部。将多个任务请求入队到多个单独任务队列402中的每个任务队列的尾部。此后,将多个单独任务队列402中的每个队列与第二组线程304B(也表示为G2)中的每个线程配对。
或者,来自多个单独任务队列402中的每个任务请求从其相应的头部出队到第二组线程304B(即,G2)中的每个线程。除了所述多个单独任务队列402之外,第二组线程304B(即,G2)可用于使用比较并交换(compare-and-swap,CAS)技术访问共享任务队列404。换句话说,共享任务队列404在第二组线程304B(即,G2)中的所有线程之间共享。此外,第一组线程304A(即,G1)和第二组线程304B(即,G2)中的每个线程可以用于使用CAS技术访问多个单独任务队列402。此外,使用CAS技术访问所有工作队列,即多个单独任务队列402和共享任务队列404,因为CAS技术为多个线程提供了对共享数据的快速访问,并且取代了较慢的互斥技术。多个单独任务队列402对应于线程空间共享内存,该共享内存可被第一组线程304A(即,G1)和第二组线程304B(即,G2)中的每个线程访问。
在不脱离所附权利要求书界定的本发明的范围的情况下,可以对上述本发明的实施例进行修改。用于描述和主张本发明的“包括”、“包含”、“结合”、“具有”、“是”等表达应视为以非唯一的方式解释,即允许没有明确描述的项目、部分或要素也可出现。对单数的引用也应解释为与复数有关。本文使用的词语“示例性”表示“作为一个示例、实例或说明”。任何“示例性的”实施例并不一定理解为优先于或优越于其它实施例,和/或并不排除其它实施例特点的结合。本文使用的词语“可选地”表示“在一些实施例中提供且在其它实施例中没有提供”。应当理解,为了清楚起见而在单独实施例的上下文中描述的本发明的某些特征还可以通过组合提供在单个实施例中。相反地,为了清楚起见而在单个实施例的上下文中描述的本发明的各种特征也可以单独地或通过任何合适的组合或作为本发明的任何其它描述的实施例提供。

Claims (12)

1.一种用于在多线程计算系统中处理任务请求(202A)的方法(100),其特征在于,所述方法(100)包括:
确定用于服务从客户端(302)接收的所述任务请求(202A)的过程;
在至少两组线程之间划分用于服务所述任务请求(202A)的所述过程,其中,第一组线程(304A)用于处理比第二组线程(304B)处理的任务复杂性更低的任务。
2.根据权利要求1所述的方法(100),其特征在于,所述第一组线程(304A)用于:
在主节点(304)处接收来自所述客户端(302)的所述任务请求(202A);
将所述任务请求(202A)发送到一个或多个辅助节点(306)进行复制。
3.根据权利要求2所述的方法(100),其特征在于,所述第二组线程(304B)用于:
从所述一个或多个辅助节点(306)接收响应;
在所述主节点(304)处完成所述任务请求(202A);
向所述客户端(302)发送对已完成任务请求的确认。
4.根据上述权利要求中任一项所述的方法(100),其特征在于,还包括将单独任务队列与所述第二组线程(304B)中的每个线程配对,其中,将任务从所述第一组线程(304A)添加到所述单独任务队列。
5.根据权利要求4所述的方法(100),其特征在于,还包括在所述第二组线程(304B)中的所有线程之间创建共享任务队列(404)。
6.根据权利要求4或5所述的方法(100),其特征在于,还包括将位于所述第一组线程(304A)与所述第二组线程(304B)之间的共享内存上的任务添加到所述单独任务队列或所述共享任务队列(404),其中,所述第一组线程(304A)中的每个线程用于使用比较并交换(compare-and-swap,CAS)技术来访问所述单独任务队列,并且所述第二组线程(304B)中的每个线程用于使用CAS技术来访问所述单独任务队列和所述共享任务队列(404)中的每个队列。
7.根据权利要求4至6中任一项所述的方法(100),其特征在于,添加到所述单独任务队列或所述共享任务队列(404)的每个任务包括预定的往返(Return to Trip,RTT)值和返回值。
8.根据权利要求5至7中任一项所述的方法(100),其特征在于,所述第二组线程(304B)中的每个线程用于在空闲时段处理来自所述对应的单独任务队列或所述共享任务队列(404)的任务,其中,所述空闲时段是所述线程等待完成现有任务请求所花费的时间。
9.根据权利要求8所述的方法(100),其特征在于,当所述任务的RTT值小于所述现有任务请求的RTT值与返回值之和时,仅在所述空闲时段处理所述单独任务队列或所述共享任务队列(404)中的任务。
10.根据权利要求9所述的方法(100),其特征在于,仅当在所述单独任务队列中没有找到所述空闲时段的符合条件的任务时,才从所述共享任务队列(404)中挑选所述任务。
11.一种用于处理任务请求(202A)的计算设备(200),其特征在于,包括:
内存(202);
通信接口(204);
处理器(206),用于:
确定用于服务从客户端(302)接收的所述任务请求(202A)的过程;
在至少两组线程之间划分用于服务所述任务请求(202A)的所述过程,其中,第一组线程(304A)用于处理比第二组线程(304B)处理的任务复杂性更低的任务。
12.一种包括指令的计算机程序,其特征在于,所述程序由计算机执行时使所述计算器执行根据权利要求1至10中任一项所述的方法(100)的步骤。
CN202180103662.XA 2021-11-25 2021-11-25 用于处理任务请求的方法和计算设备 Pending CN118159947A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2021/082903 WO2023093984A1 (en) 2021-11-25 2021-11-25 Method and computing device for processing task request

Publications (1)

Publication Number Publication Date
CN118159947A true CN118159947A (zh) 2024-06-07

Family

ID=78822487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180103662.XA Pending CN118159947A (zh) 2021-11-25 2021-11-25 用于处理任务请求的方法和计算设备

Country Status (2)

Country Link
CN (1) CN118159947A (zh)
WO (1) WO2023093984A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984200B2 (en) * 2012-08-21 2015-03-17 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
KR20150050135A (ko) * 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
KR102604290B1 (ko) * 2018-07-13 2023-11-20 삼성전자주식회사 전자 장치의 데이터 패킷 처리 장치 및 방법

Also Published As

Publication number Publication date
WO2023093984A1 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
CN112204513B (zh) 多租户存储系统中的基于组的数据复制
US10853207B2 (en) Asynchronous in-memory data checkpointing for distributed computing systems
US8595732B2 (en) Reducing the response time of flexible highly data parallel task by assigning task sets using dynamic combined longest processing time scheme
CN108351783A (zh) 多核数字信号处理系统中处理任务的方法和装置
WO2018018611A1 (zh) 一种任务处理方法以及网卡
WO2007084700A2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
CN110471777B (zh) 一种Python-Web环境中多用户共享使用Spark集群的实现方法和系统
US11392414B2 (en) Cooperation-based node management protocol
KR101697038B1 (ko) 파이프라이닝된 소프트웨어의 동적 최적화
CN112491426B (zh) 面向多核dsp的服务组件通信架构及任务调度、数据交互方法
US10776012B2 (en) Lock-free datapath design for efficient parallel processing storage array implementation
US10289306B1 (en) Data storage system with core-affined thread processing of data movement requests
CN113568908A (zh) 一种键值请求并行调度方法及系统
CN114253713B (zh) 一种基于reactor的异步批处理方法及系统
CN111459882B (zh) 分布式文件系统的命名空间事务处理方法和装置
CN114756287B (zh) 一种重排序缓冲区的数据处理方法、装置及存储介质
CN118159947A (zh) 用于处理任务请求的方法和计算设备
CN116243983A (zh) 处理器、集成电路芯片、指令处理方法、电子设备和介质
CN110955461A (zh) 计算任务的处理方法、装置、系统、服务器和存储介质
Huang et al. Improving speculative execution performance with coworker for cloud computing
CN115618966A (zh) 用于训练机器学习模型的方法、装置、设备和介质
CN114490074A (zh) 仲裁系统、方法、电子设备、存储介质及芯片
CN113439260A (zh) 针对低时延存储设备的i/o完成轮询
CN111104070A (zh) 分布式系统中数据一致性的实现方法及系统
WO2024060228A1 (zh) 获取数据的方法、装置、系统及存储介质

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination