CN112306669A - 一种基于多核***的任务处理方法及装置 - Google Patents

一种基于多核***的任务处理方法及装置 Download PDF

Info

Publication number
CN112306669A
CN112306669A CN201910714824.8A CN201910714824A CN112306669A CN 112306669 A CN112306669 A CN 112306669A CN 201910714824 A CN201910714824 A CN 201910714824A CN 112306669 A CN112306669 A CN 112306669A
Authority
CN
China
Prior art keywords
core
service
task
processing
cpu
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
CN201910714824.8A
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201910714824.8A priority Critical patent/CN112306669A/zh
Priority to PCT/CN2020/100834 priority patent/WO2021022964A1/zh
Publication of CN112306669A publication Critical patent/CN112306669A/zh
Pending legal-status Critical Current

Links

Images

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/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
    • 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
    • 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]

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)
  • Hardware Redundancy (AREA)

Abstract

本发明提出了一种基于多核***的任务处理方法及装置,方法包括:将CPU核划分为业务核集合域和控制核集合域;将业务处理任务绑定到所述业务核集合域中的业务核上,由所述业务核处理所述业务处理任务。根据本发明的基于多核***的任务处理方法,通过将CPU和划分为业务核集合域和控制核集合域,将业务处理任务绑定到业务核上,由业务核处理业务处理任务,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,不会因为***抖动而造成瓶颈,而影响业务性能和指标,从而可以充分利用业务核单核CPU处理能力,提升了业务处理性能。

Description

一种基于多核***的任务处理方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于多核***的任务处理方法及装置。
背景技术
随着多核CPU***的发展,尤其是在嵌入式领域中,***在完成***管理和控制等基本功能外,对要求同时完成实时性高、数据量大的业务处理任务的需求越来越高。对于这种处理任务不相同的复杂***,多核CPU如何相互协调,防止***抖动和干扰以提升业务处理性能就尤为重要。
发明内容
本发明要解决的技术问题是,如何提高对称多处理***中的业务处理能力,本发明提供一种基于多核***的任务处理方法及装置。
根据本发明实施例的基于多核***的任务处理方法,包括:
将CPU核划分为业务核集合域和控制核集合域;
将业务处理任务绑定到所述业务核集合域中的业务核上,由所述业务核处理所述业务处理任务。
根据本发明实施例的基于多核***的任务处理方法,通过将CPU和划分为业务核集合域和控制核集合域,将业务处理任务绑定到业务核上,由业务核处理业务处理任务,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,不会因为***抖动而造成瓶颈,而影响业务性能和指标,从而可以充分利用业务核单核CPU处理能力,提升了业务处理性能。
根据本发明的一些实施例,所述将CPU核划分为业务核集合域和控制核集合域,包括:
使所有CPU核均处于在线状态;
从所有CPU核中选出部分CPU核作为控制核,以形成所述控制核集合域;
将其余CPU核作为业务核,并将所述业务核进行离线后再上线的处理以形成所述业务核集合域。
在本发明的一些实施例中,所述方法还包括:
当所有CPU核均处于在线状态时,将任务分配至所有CPU核进行处理;
所述业务核离线后,将所述业务核中的任务迁移至所述控制核。
根据本发明的一些实施例,所述方法还包括:
在所述业务核再上线之前,打开所述业务核的时钟中断,并发送上线通知给操作***。
在本发明的一些实施例中,所述方法还包括:
在将业务处理任务绑定到所述业务核集合域中的业务核上之后,关闭所述业务核的时钟中断。
根据本发明的一些实施例,所述方法还包括:
在所述控制核上运行***调用代理任务;
通过共享内存的方式,使所述业务核根据所述控制核上运行***调用代理任务的运行结果进行***调用。
在本发明的一些实施例中,所述通过共享内存队列的方式,使所述业务核根据所述***调用代理任务进行***调用,包括:
分配所述共享内存,所述共享内存包括***调用描述符;
将所述业务核进行***调用时的***调用参数信息写到所述描述符中,并将所述描述符状态修改为请求中;
通过所述控制核查找状态为请求中的所述描述符,并基于所述描述符中的***调用参数信息执行***调用。
根据本发明实施例的基于多核***的任务处理装置,包括:
划分模块,用于将CPU核划分为业务核集合域和控制核集合域;
任务处理模块,用于将业务处理任务绑定到所述业务核集合域中的业务核上,由所述业务核处理所述业务处理任务。
根据本发明实施例的基于多核***的任务处理装置,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,不会因为***抖动而造成瓶颈,影响业务性能和指标。
根据本发明实施例的电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述所述的基于多核***的任务处理方法的步骤。
根据本发明实施例的电子装置,通过执行本发明提出的基于多核***的任务处理方法,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,不会因为***抖动而造成瓶颈,影响业务性能和指标。
根据本发明实施例的计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的基于多核***的任务处理方法的步骤。
根据本发明实施例的计算机存储介质,通过执行本发明提出的基于多核***的任务处理方法,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,从而充分利用了单核CPU处理能力,不会因为***抖动而造成瓶颈,影响业务性能和指标。
附图说明
图1是现有对称对处理***和非对称多处理***对比示意图;
图2是根据本发明实施例的基于多核***的任务处理装置的结构示意图;
图3是根据本发明实施例的基于多核***的任务处理方法流程图;
图4是根据本发明实施例的划分为业务核集合域和控制核集合域的方法流程图;
图5是根据本发明实施例的CPU核逻辑状态转换示意图;
图6是本发明实施例的***调用代理使用共享内存布局示意图;
图7是根据本发明实施例的业务核和控制核进行***调用代理流程示意图;
图8是根据本发明实施例的通讯设备管理和转发一体化***流程示意图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
传统的方法中,对于处理不同任务,具有非对称多处理架构(AMP,AsymmetricMultiProcessing)和基于对称多处理架构(SMP,Symmetrical Multi-Processing)两种解决方案,它们的特点如图1所示。
其中,AMP解决方案中,每个CPU核处理不同任务,甚至单独运行一个***,CPU核间不会相互影响,但这种***复杂性高,业务程序开发和移植困难,在处理任务复杂的***中很少应用。
采用SMP的方法则被广泛的使用,其特点是每个CPU核共享处理,运行操作***的单一副本。任务在多个CPU核间公平调度,负载均衡。
在对称多处理***中,为了完成实时性高、数据量大的业务处理任务,相关技术中采用的做法是通过***优化来减少***抖动以满足处理性能,其基本工作方法和原理如下文描述:
首先,关闭不必要的***服务进程,进一步的,把在业务核中运行的普通任务迁移到其它CPU核,进一步的,将所有中断迁移到其它非业务核上,进一步的,把业务处理任务绑定到业务CPU核执行。通过这些操作流程,让在业务CPU核上执行业务处理程序的时间尽可能的不受影响。
上述方式的缺点主要有:因为SMP方案其本质上的对称处理特性,并不能完全解决***抖动问题,尤其是对于CPU业务核在启动后再动态隔离CPU核进行业务绑定的应用场景中,这些优化方法还无法做到完全隔离,业务处理任务不仅容易受到其所在CPU核之前已经绑定CPU核的任务进程、定时器、中断下半部程序等的影响,而且还会受到不必要的***时钟中断调度带来的额外开销(传统的动态时钟TICKLESS只能减少),以及***调用因竞争引起阻塞,业务处理任务无法百分百占用运行业务处理的CPU核,导致业务处理任务无法满足业务处理性能,而且甚至容易因为调度策略和调度优先级的问题,反向阻塞和影响管理和控制功能的正常运行。
如图3所示,根据本发明实施例的基于多核***的任务处理方法,包括:
S101:将CPU核划分为业务核集合域和控制核集合域;
由此,可以在不同的集合域的CPU核进行不同的任务处理,提高业务处理效率。例如,如图2所示,在对称对处理***中,控制核集合域中的控制核可以是用于管理控制的CPU核;业务核可以是用于业务处理的CPU核。通过使控制核和业务核处于不同的调度集合中,可以使控制核和业务核相互隔离,互不影响,实现在业务逻辑上的非对称多处理***。
S102:将业务处理任务绑定到业务核集合域中的业务核上,由业务核处理业务处理任务。
根据本发明实施例的基于多核***的任务处理方法,通过将CPU和划分为业务核集合域和控制核集合域,将业务处理任务绑定到业务核上,由业务核处理业务处理任务,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,不会因为***抖动而造成瓶颈,而影响业务性能和指标,从而可以充分利用业务核单核CPU处理能力,提升了业务处理性能。
根据本发明的一些实施例,如图4所示,将CPU核划分为业务核集合域和控制核集合域,包括:
S201:使所有CPU核均处于在线状态;
S202:从所有CPU核中选出部分CPU核作为控制核,以形成控制核集合域;
S203:将其余CPU核作为业务核,并将业务核进行离线后再上线的处理以形成业务核集合域。
需要说明的是,传统上CPU核逻辑状态有CPU_ONLINE和CPU_OFFLINE两种。如图5所示,本发明提出了一种新的CPU核逻辑状态CPU_ONLINE_EXCLUSIVE,利用CPU热插拔技术,业务核可以通过离线再上线的方式从传统状态切换进入第三种逻辑状态CPU_ONLINE_EXCLUSIVE,如图5所示,在引入此新状态后,操作***把业务核划分为和控制核完全不同的调度集合域,独立调度,避免相互影响,达到业务逻辑上的非对称处理效果。
在进行业务核集合域和控制核集合域划分时,首先可以使所有CPU核均处于在线状态,然后,通过选出部分CPU核作为业务核,通过对其采用先离线后再上线的处理方式形成业务核集合域。
在本发明的一些实施例中,方法还可以包括:
当所有CPU核均处于在线状态时,将任务分配至所有CPU核进行处理。
当业务核离线后,将业务核中的任务迁移至控制核。
根据本发明的一些实施例,方法还包括:在业务核再上线之前,打开业务核的时钟中断,并发送上线通知给操作***。
需要说明的是,当将运行在业务核的所有程序或服务迁移到控制核后,业务核的运行环境已经清理干净,在业务核再上线之前,可以打开相应业务核的时钟中断,并发送CPU准备业务上线通知给操作***内核。
在本发明的一些实施例中,方法还包括:在将业务处理任务绑定到业务核集合域中的业务核上之后,关闭业务核的时钟中断。由此,通过关闭业务核上用于调度的时钟中断,可以避免其打断业务处理任务,从而进一步提高业务处理性能。
根据本发明的一些实施例,方法还可以包括:
在控制核上运行***调用代理任务;
通过共享内存的方式,使业务核根据在控制核上运行***调用代理任务的运行结果进行***调用。
需要说明的是,当关闭业务核上的时钟中断后,业务处理任务直接进入***调用会受到信号量、自旋锁等资源竞争而引起阻塞。因此,业务处理任务应尽量避免使用***调用,但某些场景仍无法避免,若获取时间,读写文件等。为了解决此问题,如图6和图7所示,本发明提出了一种***调用代理的方法,预先在控制核上运行***调用代理任务,在业务核上不直接调用***调用,而是通过共享内存的方式,通知代理任务间接完成,避免业务核受到***阻塞以及上下文切换带来的***性能损耗。
其中,通过共享内存队列的方式,使业务核根据***调用代理任务进行***调用,包括:
分配共享内存,共享内存包括***调用描述符。如图6所示,可以预先分配两块控制核和业务核都能访问的共享内存,其中一块用于表示***调用描述符集合,每个描述符包含状态、***调用号、参数、结果等字段,各个描述字符长度相等,在地址空间上连续,以环的方式组织。
将业务核进行***调用时的***调用参数信息写到描述符中,并将描述符状态修改为请求中。业务核进行***调用时,首先获取描述环中写指针位置,合法判断后,如果参数需要大块内存,则先从参数内存池中申请一块内存,将***调用号和参数或者参数内存地址填写到描述符中,进一步的,将描述符状态修改为请求中,循环等待描述符状态变更为执行完成,取出结果,释放参数内存池。
通过控制核查找状态为请求中的描述符,并基于描述符中的***调用参数信息执行***调用。如图7所示,控制核启动***调用代理任务,并设置为较高优先级,此任务不断轮询描述符环中读指针位置的描述符状态,直到查询到状态变更为请求中,进一步的,首先修改状态为执行中,然后取出***调用号和参数执行***调用,解析执行完后,如果参数需要大块内存保存结果,则从参数内存池中申请后并把结果复制到参数内存中,进一步的,修改状态为执行完成。读指针加1,继续取下一个描述符。
结合图4和图5所示,将CPU核划分为控制核和业务核的具体步骤包括:
步骤1:CPU完成初始化后,CPU正常进入CPU_ONLINE逻辑状态,在此状态下,CPU核对所有任务并行对称处理,公平调度,负载均衡;
步骤2:在上述步骤的基础上,发送业务核准备离线通知给操作***内核,将运行在业务核的所有程序或服务迁移到控制核,具体包括管理控制任务、定时器、工作队列、中断以及中断下半部程序,当完成迁移操作后,业务核的CPU逻辑状态即变迁为CPU_OFFLINE状态。此状态下,业务核处于下电、离线状态。
步骤3:在上述步骤的基础上,业务核的运行环境已经清理干净,进一步的,打开相应业务核的时钟中断,发送CPU准备业务上线通知给操作***内核,唤醒业务核并将业务核的CPU逻辑状态状态变迁CPU_ONLINE_EXCLUSIVE,在此状态下,业务核处于独立的调度集合域中,进程调度器以和控制核完全不同的方式开始执行,运行队列为空,不执行任何任务,也不执行任何工作队列,定时器等中断下半部程序。
步骤4:在上述步骤的基础上,业务核的时钟中断已打开,其调度器开始运行,此时启动业务处理任务,并把其绑定到相应的业务核中运行。
通过以上步骤,业务核处于CPU_ONLINE_EXCLUSIVE逻辑状态集合中,控制核处于CPU_ONLINE逻辑状态集合中,两者进入不同的调度集合域,控制核中运行普通管理控制、工作队列,定时器、中断以及中断下半部等任务,业务核则单独运行业务处理任务,不同任务在控制核和业务核之间不会进行负载均衡:业务核不会主动拉起控制核任务队列的任务,控制核调度器也不能把任务放入业务核的任务调度队列。
步骤5,可选的,在步骤4的基础上,业务处理任务已经运行,为进一步提高业务处理性能,选择关闭业务核上用于调度的时钟中断,避免其打断业务处理任务。
步骤6:可选的,在步骤4的基础上,预先在控制核上运行***调用代理任务,在业务核上运行的业务处理任务不直接调用***调用,而是通过共享内存队列的方式,通知代理任务间接完成,避免业务核受到***阻塞以及上下文切换带来的***性能损耗。
根据本发明实施例的基于多核***的任务处理装置,包括:划分模块和任务处理模块。
具体而言,划分模块可以用于将CPU核划分为业务核集合域和控制核集合域。
由此,可以在不同的集合域的CPU核进行不同的任务处理,提高业务处理效率。例如,如图2所示,在对称对处理***中,控制核集合域中的控制核可以是用于管理控制的CPU核;业务核可以是用于业务处理的CPU核。通过使控制核和业务核处于不同的调度集合中,可以使控制核和业务核相互隔离,互不影响,实现在业务逻辑上的非对称多处理***。
任务处理模块用于将业务处理任务绑定到业务核集合域中的业务核上,由业务核处理业务处理任务。
根据本发明实施例的基于多核***的任务处理装置,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,不会因为***抖动而造成瓶颈,影响业务性能和指标。
根据本发明的一些实施例,划分模块具体用于:
使所有CPU核均处于在线状态;
从所有CPU核中选出部分CPU核作为控制核,以形成控制核集合域;
将其余CPU核作为业务核,并将业务核进行离线后再上线的处理以形成业务核集合域。
需要说明的是,利用CPU热插拔技术,业务核可以通过离线再上线的方式从传统状态切换进入第三种逻辑状态CPU_ONLINE_EXCLUSIVE,如图5所示,在引入此新状态后,操作***把业务核划分为和控制核完全不同的调度集合域,独立调度,避免相互影响,达到业务逻辑上的非对称处理效果。
在进行业务核集合域和控制核集合域划分时,首先可以使所有CPU核均处于在线状态,然后,通过选出部分CPU核作为业务核,通过对其采用先离线后再上线的处理方式形成业务核集合域。
在本发明的一些实施例中,任务处理模块还用于:
当所有CPU核均处于在线状态时,将任务分配至所有CPU核进行处理;
业务核离线后,将业务核中的任务迁移至控制核。
根据本发明的一些实施例,装置还包括:控制模块。控制模块用于在业务核再上线之前,打开业务核的时钟中断,并发送上线通知给操作***。
需要说明的是,当将运行在业务核的所有程序或服务迁移到控制核后,业务核的运行环境已经清理干净,在业务核再上线之前,可以打开相应业务核的时钟中断,并发送CPU准备业务上线通知给操作***内核。
在本发明的一些实施例中,控制模块还用于:在将业务处理任务绑定到业务核集合域中的业务核上之后,关闭业务核的时钟中断。由此,通过关闭业务核上用于调度的时钟中断,可以避免其打断业务处理任务,从而进一步提高业务处理性能。
根据本发明的一些实施例,装置还可以包括:***调用代理模块,***调用代理模块用于在控制核上运行***调用代理任务;
通过共享内存的方式,使业务核根据在控制核上运行***调用代理任务的运行结果进行***调用。
需要说明的是,当关闭业务核上的时钟中断后,业务处理任务直接进入***调用会受到信号量、自旋锁等资源竞争而引起阻塞。因此,业务处理任务应尽量避免使用***调用,但某些场景仍无法避免,若获取时间,读写文件等。为了解决此问题,如图6和图7所示,本发明提出了一种***调用代理的方法,预先在控制核上运行***调用代理任务,在业务核上不直接调用***调用,而是通过共享内存的方式,通知代理任务间接完成,避免业务核受到***阻塞以及上下文切换带来的***性能损耗。
其中,***调用代理模块可以具体用于:
分配共享内存,共享内存包括***调用描述符。如图6所示,可以预先分配两块控制核和业务核都能访问的共享内存,其中一块用于表示***调用描述符集合,每个描述符包含状态、***调用号、参数、结果等字段,各个描述字符长度相等,在地址空间上连续,以环的方式组织。
将业务核进行***调用时的***调用参数信息写到描述符中,并将描述符状态修改为请求中。业务核进行***调用时,首先获取描述环中写指针位置,合法判断后,如果参数需要大块内存,则先从参数内存池中申请一块内存,将***调用号和参数或者参数内存地址填写到描述符中,进一步的,将描述符状态修改为请求中,循环等待描述符状态变更为执行完成,取出结果,释放参数内存池。
通过控制核查找状态为请求中的描述符,并基于描述符中的***调用参数信息执行***调用。如图7所示,控制核启动***调用代理任务,并设置为较高优先级,此任务不断轮询描述符环中读指针位置的描述符状态,直到查询到状态变更为请求中,进一步的,首先修改状态为执行中,然后取出***调用号和参数执行***调用,解析执行完后,如果参数需要大块内存保存结果,则从参数内存池中申请后并把结果复制到参数内存中,进一步的,修改状态为执行完成。读指针加1,继续取下一个描述符。
结合图4和图5所示,将CPU核划分为控制核和业务核的具体步骤包括:
步骤1:CPU完成初始化后,CPU正常进入CPU_ONLINE逻辑状态,在此状态下,CPU核对所有任务并行对称处理,公平调度,负载均衡;
步骤2:在上述步骤的基础上,发送业务核准备离线通知给操作***内核,将运行在业务核的所有程序或服务迁移到控制核,具体包括管理控制任务、定时器、工作队列、中断以及中断下半部程序,当完成迁移操作后,业务核的CPU逻辑状态即变迁为CPU_OFFLINE状态。此状态下,业务核处于下电、离线状态。
步骤3:在上述步骤的基础上,业务核的运行环境已经清理干净,进一步的,打开相应业务核的时钟中断,发送CPU准备业务上线通知给操作***内核,唤醒业务核并将业务核的CPU逻辑状态状态变迁CPU_ONLINE_EXCLUSIVE,在此状态下,业务核处于独立的调度集合域中,进程调度器以和控制核完全不同的方式开始执行,运行队列为空,不执行任何任务,也不执行任何工作队列,定时器等中断下半部程序。
步骤4:在上述步骤的基础上,业务核的时钟中断已打开,其调度器开始运行,此时启动业务处理任务,并把其绑定到相应的业务核中运行。
通过以上步骤,业务核处于CPU_ONLINE_EXCLUSIVE逻辑状态集合中,控制核处于CPU_ONLINE逻辑状态集合中,两者进入不同的调度集合域,控制核中运行普通管理控制、工作队列,定时器、中断以及中断下半部等任务,业务核则单独运行业务处理任务,不同任务在控制核和业务核之间不会进行负载均衡:业务核不会主动拉起控制核任务队列的任务,控制核调度器也不能把任务放入业务核的任务调度队列。
步骤5,可选的,在步骤4的基础上,业务处理任务已经运行,为进一步提高业务处理性能,选择关闭业务核上用于调度的时钟中断,避免其打断业务处理任务。
步骤6:可选的,在步骤4的基础上,预先在控制核上运行***调用代理任务,在业务核上运行的业务处理任务不直接调用***调用,而是通过共享内存队列的方式,通知代理任务间接完成,避免业务核受到***阻塞以及上下文切换带来的***性能损耗。
下面以一个具体的实施例详细描述根据本发明实施例引入新CPU核逻辑状态进行业务逻辑上非对称多处理调度的实施方式:
步骤1:新增CPU_ONLINE_EXCLUSIVE集合,该集合使用CPU位图的方式表示处于此逻辑状态下的CPU核,BIT位置代表CPU核索引,为1表示该CPU核处于持逻辑状态下,为0表示不在此逻辑状态。该集合初始状态为空。
步骤2:控制核发送下线通知,对一个或多个业务核进行离线处理,业务核进入CPU_OFFLINE逻辑状态后,操作***将业务核从CPU_ONLINE集合中剔除,即将表示该集合的CPU位图中表示业务核的BIT从1置为0。
步骤3:控制核发送业务上线通知,在执行唤醒动作前,将一个或多个业务核加入到CPU_ONLINE_EXCLUSIVE集合中,即将表示该集合的CPU位图中表示业务核的BIT从0置为1。
步骤4:业务核被唤醒时,检测代表CPU_ONLINE_EXCLUSIVE集合的CPU位图,发现其BIT为1后,便不再加入CPU_ONLINE集合中。
步骤5:业务核被唤醒后,时钟中断触发任务调度,每次调度程序运行时,检测代表CPU_ONLINE_EXCLUSIVE集合的CPU位图,发现其BIT为1后,进入不同的调度流程。
步骤6:控制核启动业务处理任务并绑定到业务核中时,判断合法条件不再仅仅是CPU_ONLINE,而是CPU_ONLINE和CPU_ONLINE_EXCLUSIVE的并集。
步骤7:业务核调度运行业务处理程序后,关闭时钟中断。
下面以一个具体的实施例详细描述根据本发明实施例的***调用代理的实施方式:
步骤1:预先分配两块控制核和业务核都能访问的共享内存:如图6所示,其中一块用于表示***调用描述符集合,每个描述符包含状态、***调用号、参数、结果等字段,各个描述符长度相等,在地址空间上连续,以环的方式组织。另一块作为参数内存池,用于保存***调用中大于8个字节的参数(如文件buf)。
步骤2:如图7所示,控制核启动***调用代理任务,并设置为较高优先级,此任务不断轮询描述符环中读指针位置的描述符状态,直到查询到状态变更为请求中,进一步的,首先修改状态为执行中,然后取出***调用号和参数执行***调用,解析执行完后,如果参数需要大块内存保存结果,则从参数内存池中申请后并把结果复制到参数内存中,进一步的,修改状态为执行完成。读指针加1,继续取下一个描述符。
步骤3:业务核进行***调用时,首先获取描述符环中写指针位置,合法判断后,如果参数需要大块内存,则先从参数内存池中申请一块内存,将***调用号和参数或者参数内存地址填写到描述符中,进一步的,将描述符状态修改为请求中,循环等待描述符状态变更为执行完成,取出结果,释放参数内存池。
下面以一个具体的实施例详细描述根据本发明实施例的基于多核***的任务处理方法在通讯设备管理和转发板卡一体化***中的实施方式:
步骤1:如图8所示,***上电,CPU完成正常初始化后状态为CPU_ONLINE,所有CPU核共同完成***版本加载,进程和服务初始化上电。区别于启动时CPU核隔离,CPU核并行执行大幅度提供上电速度。
步骤2:选择划分用于管理的控制核和用于数据报文转发的业务核,进一步的,关闭操作***中断负载均衡管理任务,进一步的,发送CPU准备离线通知给操作***内核。
步骤3:在步骤2的基础上,操作***收到上述通知后将运行在业务核的管理进程,普通业务进程、内核定时器和工作队列、中断以及中断下半部程序,迁移到控制核,当完成迁移操作后,修改业务核的CPU逻辑状态为CPU_OFFLINE状态。
步骤4:在步骤3的基础上,打开业务核时钟中断,修改CPU逻辑状态为CPU_ONLINE_EXCLUSIVE。
步骤5:在步骤4的基础上,启动收发包任务,并绑定到相应的业务核。
步骤6:可选的,在步骤5的基础上,关闭业务核上的时钟中断,减少不必要的***调度带来的时间消耗,此时数据转发任务完全占用业务核处理时间,充分利用CPU核性能。
步骤7:可选的,在步骤5的基础上,在控制核上运行***调用代理任务。
下面以一个具体的实施例详细描述根据本发明实施例的在多功能服务器***的实施方式:
随着SDN和虚拟化的发展,使用服务器架构软件自定义网络控制和计算节点,部署OVS,OpenStack等应用越来越广泛,本发明在该应用***的实施方式为:
步骤1:在服务器操作***上打入本发明相关内核补丁。
步骤2:根据服务器CPU核数目的多少以及是否足够业务使用的情况,如果CPU核数目足够,在***启动阶段即将业务CPU核进行隔离,优选的,启动参数激活补丁,在业务软件运行前也可以充分利用每个CPU核。
步骤3:服务器上电,完成操作***加载和相关应用服务的启动,可选的,指定CPU核和内存资源启动相应的虚机。
步骤4:可选的,在步骤2的基础上,选择在宿主机或虚机中作为计算或者软转发交互业务的CPU核,同上述实施例相同的步骤3-步骤7,把业务核进行动态隔离,并绑定到业务核中执行。
步骤5:可选的,重复上述步骤,实现业务核的回收和控制核的再利用。
根据本发明实施例的电子装置,电子装置包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上述的方法的步骤。
根据本发明实施例的电子装置,通过执行本发明提出的基于多核***的任务处理方法,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,不会因为***抖动而造成瓶颈,影响业务性能和指标。
根据本发明实施例的计算机存储介质,计算机存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的基于多核***的任务处理方法的步骤。
根据本发明实施例的计算机存储介质,通过执行本发明提出的基于多核***的任务处理方法,在对称多处理的***中,能动态平滑的切换为业务逻辑上的非对称多处理状态,使得业务处理任务完全独占业务核运行,从而充分利用了单核CPU处理能力,不会因为***抖动而造成瓶颈,影响业务性能和指标。
通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。

Claims (10)

1.一种基于多核***的任务处理方法,其特征在于,包括:
将CPU核划分为业务核集合域和控制核集合域;
将业务处理任务绑定到所述业务核集合域中的业务核上,由所述业务核处理所述业务处理任务。
2.根据权利要求1所述的基于多核***的任务处理方法,其特征在于,所述将CPU核划分为业务核集合域和控制核集合域,包括:
使所有CPU核均处于在线状态;
从所有CPU核中选出部分CPU核作为控制核,以形成所述控制核集合域;
将其余CPU核作为业务核,并将所述业务核进行离线后再上线的处理以形成所述业务核集合域。
3.根据权利要求2所述的基于多核***的任务处理方法,其特征在于,所述方法还包括:
当所有CPU核均处于在线状态时,将任务分配至所有CPU核进行处理;
所述业务核离线后,将所述业务核中的任务迁移至所述控制核。
4.根据权利要求2所述的基于多核***的任务处理方法,其特征在于,所述方法还包括:
在所述业务核再上线之前,打开所述业务核的时钟中断,并发送上线通知给操作***。
5.根据权利要求4所述的基于多核***的任务处理方法,其特征在于,所述方法还包括:
在将业务处理任务绑定到所述业务核集合域中的业务核上之后,关闭所述业务核的时钟中断。
6.根据权利要求1所述的基于多核***的任务处理方法,其特征在于,所述方法还包括:
在所述控制核上运行***调用代理任务;
通过共享内存的方式,使所述业务核根据在所述控制核上运行所述***调用代理任务的运行结果进行***调用。
7.根据权利要求6所述的基于多核***的任务处理方法,其特征在于,所述通过共享内存队列的方式,使所述业务核根据所述***调用代理任务进行***调用,包括:
分配所述共享内存,所述共享内存包括***调用描述符;
将所述业务核进行***调用时的***调用参数信息写到所述描述符中,并将所述描述符状态修改为请求中;
通过所述控制核查找状态为请求中的所述描述符,并基于所述描述符中的***调用参数信息执行***调用。
8.一种基于多核***的任务处理装置,其特征在于,包括:
划分模块,用于将CPU核划分为业务核集合域和控制核集合域;
任务处理模块,用于将业务处理任务绑定到所述业务核集合域中的业务核上,由所述业务核处理所述业务处理任务。
9.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。
10.一种计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于多核***的任务处理方法的步骤。
CN201910714824.8A 2019-08-02 2019-08-02 一种基于多核***的任务处理方法及装置 Pending CN112306669A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910714824.8A CN112306669A (zh) 2019-08-02 2019-08-02 一种基于多核***的任务处理方法及装置
PCT/CN2020/100834 WO2021022964A1 (zh) 2019-08-02 2020-07-08 一种基于多核***的任务处理方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910714824.8A CN112306669A (zh) 2019-08-02 2019-08-02 一种基于多核***的任务处理方法及装置

Publications (1)

Publication Number Publication Date
CN112306669A true CN112306669A (zh) 2021-02-02

Family

ID=74486593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910714824.8A Pending CN112306669A (zh) 2019-08-02 2019-08-02 一种基于多核***的任务处理方法及装置

Country Status (2)

Country Link
CN (1) CN112306669A (zh)
WO (1) WO2021022964A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115098430A (zh) * 2022-06-27 2022-09-23 西安电子科技大学 一种基于amp架构的核间通信优先级调度方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113391821B (zh) * 2021-05-11 2023-03-10 中国电力科学研究院有限公司 一种非对称多处理器嵌入式操作***
CN113778936A (zh) * 2021-08-17 2021-12-10 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 国产嵌入式dsp操作***的性能优化方法
CN113821174B (zh) * 2021-09-26 2024-03-22 迈普通信技术股份有限公司 存储处理方法、装置、网卡设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662740B (zh) * 2012-03-29 2014-12-10 迈普通信技术股份有限公司 非对称多核***及其实现方法
KR20140139371A (ko) * 2013-05-27 2014-12-05 한국전자통신연구원 멀티 코어 시스템 반도체 제어 장치 및 방법
CN104899089A (zh) * 2015-05-25 2015-09-09 常州北大众志网络计算机有限公司 一种面向异构多核体系的任务调度方法
CN108958944A (zh) * 2018-07-26 2018-12-07 郑州云海信息技术有限公司 一种多核处理***及其任务分配方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115098430A (zh) * 2022-06-27 2022-09-23 西安电子科技大学 一种基于amp架构的核间通信优先级调度方法
CN115098430B (zh) * 2022-06-27 2024-03-19 西安电子科技大学 一种基于amp架构的核间通信优先级调度方法

Also Published As

Publication number Publication date
WO2021022964A1 (zh) 2021-02-11

Similar Documents

Publication Publication Date Title
EP3754498B1 (en) Architecture for offload of linked work assignments
US10891158B2 (en) Task scheduling method and apparatus
US9864627B2 (en) Power saving operating system for virtual environment
US9996401B2 (en) Task processing method and virtual machine
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
CN112306669A (zh) 一种基于多核***的任务处理方法及装置
US9135126B2 (en) Multi-core re-initialization failure control system
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US9798595B2 (en) Transparent user mode scheduling on traditional threading systems
JP5295228B2 (ja) 複数のプロセッサを備えるシステム、ならびにその動作方法
CN113939805A (zh) 一种进程间通信的方法及***
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
CN115658277B (zh) 一种任务调度方法、装置及电子设备和存储介质
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
WO2024119988A1 (zh) 多cpu环境下的进程调度方法、装置、电子设备和介质
EP3770759A1 (en) Wake-up and scheduling of functions with context hints
US20220156103A1 (en) Securing virtual machines in computer systems
US11567884B2 (en) Efficient management of bus bandwidth for multiple drivers
WO2022042127A1 (zh) 一种协程切换的方法、装置及设备
CN116578416A (zh) 一种基于gpu虚拟化的信号级仿真加速方法
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
CN114281529A (zh) 分布式虚拟化的客户操作***调度优化方法、***及终端
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN110333899B (zh) 数据处理方法、装置和存储介质

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