CN117742956A - 应用程序的运行控制方法、装置、设备及介质 - Google Patents

应用程序的运行控制方法、装置、设备及介质 Download PDF

Info

Publication number
CN117742956A
CN117742956A CN202311764233.4A CN202311764233A CN117742956A CN 117742956 A CN117742956 A CN 117742956A CN 202311764233 A CN202311764233 A CN 202311764233A CN 117742956 A CN117742956 A CN 117742956A
Authority
CN
China
Prior art keywords
cpu core
data processing
task
standby
exclusive
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
CN202311764233.4A
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202311764233.4A priority Critical patent/CN117742956A/zh
Publication of CN117742956A publication Critical patent/CN117742956A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Hardware Redundancy (AREA)

Abstract

本公开提供了一种应用程序的运行控制方法、装置、设备及介质,涉及计算机技术领域,尤其涉及云计算技术。具体实现方案为:在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态;如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。本公开实施例的技术方案可以弹性增减应用程序实时使用的CPU核数量,有效节约服务端计算资源。

Description

应用程序的运行控制方法、装置、设备及介质
技术领域
本公开涉及计算机技术领域,尤其涉及云计算技术,具体涉及一种应用程序的运行控制方法、应用程序的运行控制装置、电子设备及非瞬时计算机可读存储介质。
背景技术
在容器混布场景中,可以基于DPDK(Date Plane Development Kit,数据面开发套件)线程模型开发得到满足设定服务需求的应用程序。
由于DPDK线程模型一般采用轮询的方式独占CPU(Central Processing Unit,中央处理器)核,一个轮询线程通常对应一个CPU核,进而,基于DPDK线程模型开发的应用程序在启动后,需要指定其所绑定的CPU核和轮询线程等资源的数量,在该应用程序的运行过程中,不支持增减轮询线程的数量。
上述实现方式的主要缺陷在于,为了保证这类应用程序的高性能运行,一般按照应用程序所能处理的网络IO(Input Output,输入输出)任务的数量上限,为这类应用程序申请资源。但是,这类应用程序在大多数时间下,往往是处于常态工作状态的,无需使用其所申请的全部CPU核。进而,这种独占CPU核的资源申请方式,会带来很大的资源浪费。
发明内容
本公开提供了一种用于应用程序的运行控制方法、应用程序的运行控制装置、电子设备及非瞬时计算机可读存储介质。
根据本公开的一方面,提供了一种应用程序的运行控制方法,包括:
在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;
创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态;
如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
根据本公开的另一方面,还提供了一种应用程序的运行控制装置,包括:
资源申请模块,用于在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;
备用线程创建模块,用于创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态;
备用线程唤醒模块,用于如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
根据本公开的另一方面,还提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本公开实施例任一项所述的应用程序的运行控制方法。
根据本公开的另一方面,还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据本公开实施例任一项所述的应用程序的运行控制方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例提供的一种应用程序的运行控制方法的示意图;
图2是根据本公开实施例提供的另一种应用程序的运行控制方法的示意图;
图3是根据本公开实施例提供的又一种应用程序的运行控制方法的示意图;
图4是根据本公开实施例提供的一种应用程序的运行控制装置的结构图;
图5是用来实现本公开实施例的一种应用程序的运行控制方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本公开实施例提供的一种应用程序的运行控制方法的示意图。本公开实施例可适用于在应用程序的运行过程中,弹性的增减应用程序所使用的CPU核数量的情况。该方法可以由应用程序的运行控制装置来执行,该装置可采用硬件和/或软件的方式实现,并一般可以集成在服务器或者服务器集群中所安装的,基于DPDK线程模型构建得到应用程序内。
相应的,如图1所示,所述方法具体可以包括:
S110、在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核。
其中,目标应用为预先安装在服务器或者服务器集群中的应用程序,目标应用根据DPDK线程模型开发构建得到。
一般来说,根据DPDK线程模型开发的应用,其执行的主要业务流程包括:顺序执行的接收数据处理任务、数据处理任务的处理、以及发送处理完成的数据处理任务。而为了减少跨线程访问以保证应用性能,上述业务流程中的各项操作一般会在同一个轮询线程中执行。进而,需要在目标应用中预先配置申请资源描述信息,以指定目标应用可以对服务器或者服务器集群中哪个或者哪几个CPU核进行独占使用。当目标应用启动后,可以将轮询线程分配至上述各独占的CPU核中,并在每个轮询线程中分别执行上述业务流程。其中,轮询线程可以理解为定期执行任务的线程,这类线程由于需要定期执行,因此需要独占CPU核执行相应的任务。
相应的,申请资源描述信息可以理解为对目标应用启动后所需申请的计算资源(一般为CPU核)进行描述的信息,其可以具体包括:所需申请的CPU核数量,以及全部可选申请的各CPU核的身份识别信息,或者,其可以直接包括其所需申请的各CPU核的身份识别信息等。
为了避免相关技术针对DPDK线程模型开发的应用程序,以应用程序所能处理的数据处理任务的上限进行申请资源描述信息的配置所带来的资源浪费问题,在本实施例中,申请资源描述信息根据目标应用的常态工作压力预先确定得到。
在一个具体的例子中,如果目标应用在常态工作压力下,使用3个CPU核就可以满足需求,而该目标应用在峰值工作压力下,需要使用5个CPU核才能满足需求。在本实施例中,可以仅在申请资源描述信息中配置与上述3个CPU核对应的信息,并在目标应用启动时,申请3个CPU核进行独占使用,节省了对额外2个CPU核的独占。
硬件执行环境,可以理解为安装该目标应用的硬件设备(服务器或者服务器集群)在执行时,可向各应用程序提供的各种硬件资源集合。
S120、创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态。
在本实施例中,由于是按照目标应用的常态工作压力为该目标应用申请独占CPU核的,进而,需要针对目标应用的峰值工作压力配置相应的应对措施。具体的,目标应用可以在启动后,创建设定数量的备用线程作为后备,以供峰值工作压力到来时,被唤醒使用。
由于线程只有在分配至CPU核中之后,才能通过调用CPU核中各项计算单元的方式,实现线程中的各类计算逻辑。因此,需要为目标应用所创建的各备用线程进行CPU核的分配。
可以理解的是,如果一个CPU核被某一个应用所独占,说明这个CPU核一般会常驻执行一个轮询线程,进而其他线程无法在该CPU核内执行。因此,需要首先在硬件执行环境中,识别出没有被任一应用程序所独占的CPU核,也即,无冲突CPU核,进而,可以将上述各备用线程分配至上述各无冲突CPU核中。
当目标应用处于常态工作压力时,仅使用其所独占的CPU核,即可满足数据处理任务的处理需求,此时,各备用线程可以均处于休眠状态,无需对其所分配的无冲突CPU核进行占用。
其中,备用线程的数量可以根据实际情况进行预设,例如,可以根据常态工作压力和峰值工作压力之间的差异CPU核数量确定,或者,还可以根据硬件执行环境中包含的无冲突CPU核的总数量确定等,本实施例对此并不进行限制。
S130、如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
如前所述,由于目标应用所能使用的独占CPU核是根据目标应用的常态工作压力确定的,进而,需要在目标应用出现压力过载状态时,唤醒备用线程中的一个、多个或者全部,以使用所唤醒线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
其中,该数据处理任务的任务类型可以为网络IO任务,也可以为非网络IO任务,具体的任务类型与该目标应用所提供的服务类型关联,本实施例对此并不进行限制。
在本实施例中,压力过载状态可以理解为目标应用通过调配独占CPU核执行数据处理任务时,无法满足任务所需服务质量需求的状态。具体的,可以通过检测目标应用的当前未处理数据处理任务的数量、单个数据处理任务的等待耗时,或者当前处理数据处理任务的异常处理状态等信息,检测目标应用是否处于压力过载状态。
本公开实施例的技术方案通过在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态;如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务的技术手段,可以使得按照常态工作压力申请资源的应用程序,在工作压力状态发生改变时,动态调整CPU核的使用数量,既保证了基于DPDK开发的应用程序的高性能运行,又保证了容器混布场景中计算资源的高效利用,达到了弹性增减应用程序实时使用的CPU核数量,有效节约服务端计算资源的技术效果。
图2是根据本公开实施例提供的另一种应用程序的运行控制方法的示意图。本实施例以上述各实施例为基础进行细化。在本实施例中,将根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核的操作具体化为:“在预先配置的申请资源描述信息中识别独占CPU核申请数量以及亲和CPU核集合;在硬件执行环境的亲和CPU核集合中,申请与独占CPU核申请数量匹配的独占CPU核。”
以及,将“创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中”的操作,具体化为:“在硬件执行环境中,识别未独占CPU核,并在各未独占CPU核中,去除亲和CPU核集合,得到无冲突CPU核;创建与无冲突CPU核的总数量匹配的备用线程,并将各备用线程分配至各无冲突CPU核中。”
同时,在数据处理任务为网络IO任务时,对压力过载状态的检测过程进行限定。
相应的,如图2所示,所述方法具体可以包括:
S210、在目标应用启动时,在预先配置的申请资源描述信息中识别独占CPU核申请数量以及亲和CPU核集合。
其中,独占CPU核申请数量用于指定目标应用在启动后,需要独占使用的CPU核的数量值,亲和CPU核集合中包括一个或者多个与该目标应用对应的亲和CPU核。其中,与目标应用对应的亲和CPU核可以理解为硬件执行环境,可以被目标应用选择进行独占使用的CPU核。
进一步的,亲和CPU核可以理解为与目标应用具有亲和性的CPU核,亲和性是一种调度属性,用于将应用程序(或者说进程)绑定到指定CPU核上,使得应用程序在其所绑定的CPU核(也即,亲和CPU核)上执行,而不迁移到其他CPU核上,以提高应用程序运行性能。相应的,亲和CPU核集合可以理解为目标应用所绑定的各亲和CPU核构成的集合。
具体的,上述申请资源描述信息可以为开发人员开发得到目标应用的过程中,所配置得到的。
可以理解的是,亲和CPU核集合中包括的亲和CPU核的数量,一般会大于独占CPU核申请数量。
S220、在硬件执行环境的亲和CPU核集合中,申请与独占CPU核申请数量匹配的独占CPU核。
具体的,每当目标应用启动时,可以在亲和CPU核集合内的全部亲和CPU核中,申请与独占CPU核申请数量匹配的独占CPU核。
具体的,可以依次对亲和CPU核集合中的每个亲和CPU核进行尝试申请,如果成功申请到与独占CPU核申请数量匹配的独占CPU核,则停止继续尝试。如果完成对亲和CPU核集合的遍历也没有成功申请到与独占CPU核申请数量匹配的独占CPU核,则生成报错信息进行用户提示。
通过上述设置,可以直接基于DPDK线程模型的原始代码构建得到目标应用,不会引入过多的开发工作量,进而,可以直接基于DPDK线程模型提供的开发模板,配置得到目标应用的申请资源描述信息,实现方式简单、便捷。
S230、在硬件执行环境中,识别未独占CPU核,并在各未独占CPU核中,去除亲和CPU核集合,得到无冲突CPU核。
如前所述,申请资源描述信息是基于目标应用的常态工作压力确定的,为了保证目标应用在峰值工作压力下也能高效提供数据处理服务,目标应用需要选择若干个不能被独占的CPU核,并在这类CPU核上配置可以被随时启动的备用线程。
相应的,目标应用需要在全部未独占CPU核中,首选去除自身所亲和CPU核集合,并将剩余的CPU核,均作为可以配置备用线程的无冲突CPU核。这里去除亲和CPU核集合的目的,是避免选择的无冲突CPU核与独占CPU核相冲突。
S240、创建与无冲突CPU核的总数量匹配的备用线程,并将各备用线程分配至各无冲突CPU核中。
在本实施例中,考虑到无冲突CPU核无法被任一应用所独占使用,各个应用需要以抢占或者顺序使用等方式对这类无冲突CPU核进行使用。因此,为了最大程度的保证目标应用出现压力过载状态时,能够找到可用的无冲突CPU核协助执行数据处理任务,本实施例可以按照数量上限创建备用线程。也即,可以创建与无冲突CPU核的总数量匹配的备用线程,并将各备用线程分配至各无冲突CPU核中。
通过上述设置,可以最大程度的将备用线程分配至硬件执行环境中全部可用的无冲突CPU核中,进而,当目标应用出现压力过载状态时,可以以最大的概率获取到可用的无冲突CPU核,对目标应用的高效执行提供了有效保障。
S250、将各备用线程初始化设置为休眠状态。
可以理解的是,当目标应用工作在常态工作压力下,其所申请的独占CPU核是可以满足计算需求的,因此,分配至无冲突CPU核的各备用线程可以均设置为休眠状态,以使得各无冲突CPU核被分配给最需要的应用来使用。
S260、如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
在本实施例的一个可选的实施方式中,数据处理任务可以包括网络IO任务;
相应的,检测到压力过载状态可以包括下述至少一项:
实时获取目标应用与网卡之间的活跃连接数量,并在确定执行完所述活跃连接数量的网络IO任务所需的多IO执行耗时超过第一IO耗时容限时,确定检测到压力过载状态;
实时检测网络IO任务在缓冲区中的IO排队时延,并在IO排队时延超过第二IO耗时容限时,确定检测到压力过载状态;
在检测到拥塞操作,或者当前处理的网络IO任务的单IO执行耗时超过第三IO耗时容限时,确定检测到压力过载状态。
在本实施例中,当目标应用被配置为执行网络IO任务时,其主要执行流程为:顺序执行的从网卡获取网络IO任务、对网络IO任务进行处理、以及发送网络IO任务。进而,可以通过上述三类指标中的一项或者多项,检测目标应用是否处于压力过载状态。
首先,活跃连接数量,可以理解为目标应用与网卡建立的多个连接通道中,当前传输有网络IO任务的通道数量。在确定出活跃连接数量之后,可以估计出目标应用执行完活跃连接数量个网络IO任务所需的耗时,也即,多IO执行耗时,当上述耗时过长时,需要弹性增加无冲突CPU核与独占CPU核共同执行数据处理任务。
网络IO任务在缓冲区中的IO排队时延,可以理解为缓冲区中的首个网络IO任务被处理所需的等待时间,当上述等待时间过长时,同样需要弹性增加无冲突CPU核与独占CPU核共同执行数据处理任务。
拥塞操作可以理解为目标应用在对网络IO任务进行处理的阶段,因为各种原因出现了网络IO任务的阻塞。当前处理的网络IO任务的单IO执行耗时是指当前被处理的网络IO任务在进行任务处理时,所需要的任务执行时间,当出现了拥塞操作或者该任务执行时间过长时,同样需要弹性增加无冲突CPU核与独占CPU核共同执行数据处理任务。
通过上述设置,可以及时、准确的检测出目标应用在网络IO任务的处理场景中的压力过载状态,进而,可以准确、高效的确定出目标应用弹性增加计算资源的时机,最大程度的保证了容器混布场景中计算资源的高效利用。
本公开实施例的技术方案通过在预先配置的申请资源描述信息中识别独占CPU核申请数量以及亲和CPU核集合;在硬件执行环境的亲和CPU核集合中,申请与独占CPU核申请数量匹配的独占CPU核;在硬件执行环境中,识别未独占CPU核,并在各未独占CPU核中,去除亲和CPU核集合,得到无冲突CPU核;创建与无冲突CPU核的总数量匹配的备用线程,并将各备用线程分配至各无冲突CPU核中的技术手段,可以直接基于DPDK线程模型的原始代码构建得到目标应用,最大程度的减少了开发工作量,同时,当目标应用出现压力过载状态时,可以以最大的概率获取到可用的无冲突CPU核,对目标应用的高效执行提供了有效保障。
图3是根据本公开实施例提供的又一种应用程序的运行控制方法的示意图。本实施例以上述各实施例为基础进行细化。在本实施例中,将“唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务”的操作,具体化为:“根据目标应用的常态工作压力,确定为独占CPU核分配的常态数据处理任务数量,并将常态数据处理任务数量的数据处理任务分配至各独占CPU核中的轮询线程中执行;根据常态数据处理任务数量,计算过载数据处理任务数量;按照过载数据处理任务数量确定备用线程数量,并唤醒与备用线程数量匹配的目标备用线程;将过载数据处理任务数量的数据处理任务分配至各目标备用线程中,以控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
同时,在数据处理任务为非网络IO任务时,对压力过载状态的检测过程进行限定。
相应的,如图3所示,所述方法具体可以包括:
S310、在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核。
S320、创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态。
S330、如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则根据目标应用的常态工作压力,确定为独占CPU核分配的常态数据处理任务数量。
如前所述,由于目标应用的常态工作压力,进而,可以评估该目标应用工作在常态工作压力时,其在设定时间区间下所能处理的常态数据处理任务数量。
在本实施例的另一个可选的实施方式中,数据处理任务可以包括非网络IO任务;
相应的,检测到压力过载状态可以包括下述至少一项:
在确定执行完当前未处理的全部非网络IO任务所需的多任务执行耗时超过第一业务耗时容限时,确定检测到压力过载状态;
实时检测非网络IO任务在任务队列中的任务排队时延,并在任务排队时延超过第二业务耗时容限时,确定检测到压力过载状态;
在检测到拥塞操作,或者当前处理的非网络IO任务的单任务执行耗时超过第三业务耗时容限时,确定检测到压力过载状态。
在本可选实施方式中,非网络IO任务可以理解为不是从网卡处直接获取到的数据处理任务,而是从其他应用或者操作系统处获取的数据处理任务。
其中,多任务执行耗时可以理解为目标应用将当前缓存的全部非网络IO任务处理完成时所需的耗时。非网络IO任务在任务队列中的任务排队时延可以理解为任务队列中的首个非网络IO任务被处理所需的等待时间。当前处理的非网络IO任务的单任务执行耗时可以理解为当前被处理的网络IO任务在进行任务处理时,所需要的任务执行时间。
通过上述设置,可以及时、准确的检测出目标应用在非网络IO任务的处理场景中的压力过载状态,进而,可以准确、高效的确定出目标应用弹性增加计算资源的时机,最大程度的保证了容器混布场景中计算资源的高效利用。
S340、将常态数据处理任务数量的数据处理任务分配至各独占CPU核中的轮询线程中执行。
上述常态数据处理任务数量,可以用于描述该目标应用使用其所绑定的独占CPU核,单次所能处理的工作量。进而,可以将常态数据处理任务数量的数据处理任务分配至各独占CPU核中的轮询线程中执行。
S350、根据常态数据处理任务数量,计算过载数据处理任务数量。
在获取常态数据处理任务数量之后,可以计算目标应用当前未处理的全部数据处理任务的总数量与所述常态数据处理任务数量之间的差值,作为过载数据处理任务数量。
其中,过载数据处理任务数量可以理解为需要无冲突CPU核协助处理的数据处理任务的数量值。
S360、按照过载数据处理任务数量确定备用线程数量,并唤醒与备用线程数量匹配的目标备用线程。
具体的,如果过载数据处理任务数量小于备用线程数量,则可以唤醒与过载数据处理任务数量匹配的备用线程,也即,此时确定的备用线程数量与过载数据处理任务数量相一致;如果过载数据处理任务数量大于或者等于备用线程数量,则可以唤醒全部备用线程,以共同执行过载的数据处理任务。
S370、将过载数据处理任务数量的数据处理任务分配至各目标备用线程中,以控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
本公开实施例的技术方案通过根据目标应用的常态工作压力,确定为独占CPU核分配的常态数据处理任务数量,并将常态数据处理任务数量的数据处理任务分配至各独占CPU核中的轮询线程中执行;根据常态数据处理任务数量,计算过载数据处理任务数量;按照过载数据处理任务数量确定备用线程数量,并唤醒与备用线程数量匹配的目标备用线程;将过载数据处理任务数量的数据处理任务分配至各目标备用线程中,以控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务的技术手段,可以在出现压力过载状态时,有效协调分配至无冲突CPU核以及独占CPU核中的数据处理任务的数量,以充分发挥无冲突CPU核以及独占CPU核的效能,达到尽早消除压力过载状态的技术效果。
在上述各实施例的基础上,所述方法还可以包括:
在检测到目标应用的压力过载状态消除后,重新将各目标备用线程恢复至休眠状态,以释放对目标备用线程所在的无冲突CPU的占用。
通过上述设置,可以在压力过载状态消除后,第一时间释放目标备用线程对无冲突CPU的占用,可以准确、高效的确定出目标应用弹性减少计算资源的时机,最大程度的保证了容器混布场景中计算资源的高效利用。
作为上述各应用程序的运行控制方法的实现,本公开还提供了一种实施上述各应用程序的运行控制方法的执行装置的可选实施例。
图4是根据本公开实施例提供的一种应用程序的运行控制装置的结构图。如图4所述,所述装置包括:资源申请模块410、备用线程创建模块420以及备用线程唤醒模块430,其中:
资源申请模块410,用于在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;
备用线程创建模块420,用于创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态;
备用线程唤醒模块430,用于如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
本公开实施例的技术方案通过在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态;如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务的技术手段,可以使得按照常态工作压力申请资源的应用程序,在工作压力状态发生改变时,动态调整CPU核的使用数量,既保证了基于DPDK开发的应用程序的高性能运行,又保证了容器混布场景中计算资源的高效利用,达到了弹性增减应用程序实时使用的CPU核数量,有效节约服务端计算资源的技术效果。
在上述各实施例的基础上,其中,资源申请模块,具体用于:
在预先配置的申请资源描述信息中识别独占CPU核申请数量以及亲和CPU核集合;
在硬件执行环境的亲和CPU核集合中,申请与独占CPU核申请数量匹配的独占CPU核。
在上述各实施例的基础上,其中,备用线程创建模块,具体用于:
在硬件执行环境中,识别未独占CPU核,并在各未独占CPU核中,去除亲和CPU核集合,得到无冲突CPU核;
创建与无冲突CPU核的总数量匹配的备用线程,并将各备用线程分配至各无冲突CPU核中。
在上述各实施例的基础上,其中,数据处理任务包括网络IO任务;
备用线程唤醒模块,具体用于下述至少一项:
实时获取目标应用与网卡之间的活跃连接数量,并在确定执行完所述活跃连接数量的网络IO任务所需的多IO执行耗时超过第一IO耗时容限时,确定检测到压力过载状态;
实时检测网络IO任务在缓冲区中的IO排队时延,并在IO排队时延超过第二IO耗时容限时,确定检测到压力过载状态;
在检测到拥塞操作,或者当前处理的网络IO任务的单IO执行耗时超过第三IO耗时容限时,确定检测到压力过载状态。
在上述各实施例的基础上,其中,数据处理任务包括非网络IO任务;
备用线程唤醒模块,具体用于下述至少一项:
在确定执行完当前未处理的全部非网络IO任务所需的多任务执行耗时超过第一业务耗时容限时,确定检测到压力过载状态;
实时检测非网络IO任务在任务队列中的任务排队时延,并在任务排队时延超过第二业务耗时容限时,确定检测到压力过载状态;
在检测到拥塞操作,或者当前处理的非网络IO任务的单任务执行耗时超过第三业务耗时容限时,确定检测到压力过载状态。
在上述各实施例的基础上,其中,备用线程唤醒模块,进一步用于:
根据目标应用的常态工作压力,确定为独占CPU核分配的常态数据处理任务数量,并将常态数据处理任务数量的数据处理任务分配至各独占CPU核中的轮询线程中执行;
根据常态数据处理任务数量,计算过载数据处理任务数量;
按照过载数据处理任务数量确定备用线程数量,并唤醒与备用线程数量匹配的目标备用线程;
将过载数据处理任务数量的数据处理任务分配至各目标备用线程中,以控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
在上述各实施例的基础上,所述装置还包括:
线程恢复休眠模块,用于在检测到目标应用的压力过载状态消除后,重新将各目标备用线程恢复至休眠状态,以释放对目标备用线程所在的无冲突CPU的占用。
上述产品可执行本公开任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如,执行如本公开实施例任一项所述的应用程序的运行控制方法。例如,在一些实施例中,如本公开实施例任一项所述的应用程序的运行控制方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的如本公开实施例任一项所述的应用程序的运行控制方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行如本公开实施例任一项所述的应用程序的运行控制方法。
也即,在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;
创建设定数量的备用线程分配至硬件执行环境中的无冲突CPU核中,并将各备用线程初始化设置为休眠状态;
如果在使用独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各目标备用线程所在的无冲突CPU核与独占CPU核共同执行数据处理任务。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术及机器学习/深度学习技术、大数据处理技术、知识图谱技术等几大方向。
云计算(cloud computing),指的是通过网络接入弹性可扩展的共享物理或虚拟资源池,资源可以包括服务器、操作系统、网络、软件、应用和存储设备等,并可以按需、自服务的方式对资源进行部署和管理的技术体系。通过云计算技术,可以为人工智能、区块链等技术应用、模型训练提供高效强大的数据处理能力。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开提供的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (17)

1.一种应用程序的运行控制方法,包括:
在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;
创建设定数量的备用线程分配至所述硬件执行环境中的无冲突CPU核中,并将各所述备用线程初始化设置为休眠状态;
如果在使用所述独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各所述目标备用线程所在的所述无冲突CPU核与所述独占CPU核共同执行所述数据处理任务。
2.根据权利要求1所述的方法,其中,所述根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核,包括:
在预先配置的申请资源描述信息中识别独占CPU核申请数量以及亲和CPU核集合;
在硬件执行环境的所述亲和CPU核集合中,申请与所述独占CPU核申请数量匹配的独占CPU核。
3.根据权利要求2所述的方法,其中,所述创建设定数量的备用线程分配至所述硬件执行环境中的无冲突CPU核中,包括:
在所述硬件执行环境中,识别未独占CPU核,并在各所述未独占CPU核中,去除所述亲和CPU核集合,得到无冲突CPU核;
创建与所述无冲突CPU核的总数量匹配的备用线程,并将各所述备用线程分配至各所述无冲突CPU核中。
4.根据权利要求1-3任一项所述的方法,其中,所述数据处理任务包括网络输入输出IO任务;
所述检测到压力过载状态包括下述至少一项:
实时获取所述目标应用与网卡之间的活跃连接数量,并在确定执行完所述活跃连接数量的网络IO任务所需的多IO执行耗时超过第一IO耗时容限时,确定检测到所述压力过载状态;
实时检测网络IO任务在缓冲区中的IO排队时延,并在所述IO排队时延超过第二IO耗时容限时,确定检测到所述压力过载状态;
在检测到拥塞操作,或者当前处理的网络IO任务的单IO执行耗时超过第三IO耗时容限时,确定检测到所述压力过载状态。
5.根据权利要求1-3任一项所述的方法,其中,所述数据处理任务包括非网络IO任务;
所述检测到压力过载状态包括下述至少一项:
在确定执行完当前未处理的全部非网络IO任务所需的多任务执行耗时超过第一业务耗时容限时,确定检测到所述压力过载状态;
实时检测非网络IO任务在任务队列中的任务排队时延,并在所述任务排队时延超过第二业务耗时容限时,确定检测到所述压力过载状态;
在检测到拥塞操作,或者当前处理的非网络IO任务的单任务执行耗时超过第三业务耗时容限时,确定检测到所述压力过载状态。
6.根据权利要求1-3任一项所述的方法,其中,所述唤醒至少一个目标备用线程,并控制各所述目标备用线程所在的所述无冲突CPU核与所述独占CPU核共同执行所述数据处理任务,包括:
根据所述目标应用的常态工作压力,确定为所述独占CPU核分配的常态数据处理任务数量,并将所述常态数据处理任务数量的数据处理任务分配至各所述独占CPU核中的轮询线程中执行;
根据所述常态数据处理任务数量,计算过载数据处理任务数量;
按照所述过载数据处理任务数量确定备用线程数量,并唤醒与所述备用线程数量匹配的目标备用线程;
将所述过载数据处理任务数量的数据处理任务分配至各所述目标备用线程中,以控制各所述目标备用线程所在的所述无冲突CPU核与所述独占CPU核共同执行所述数据处理任务。
7.根据权利要求1所述的方法,还包括:
在检测到所述目标应用的压力过载状态消除后,重新将各所述目标备用线程恢复至休眠状态,以释放对所述目标备用线程所在的所述无冲突CPU的占用。
8.一种应用程序的运行控制装置,包括:
资源申请模块,用于在目标应用启动时,根据预先配置的申请资源描述信息,在硬件执行环境中申请独占CPU核;
备用线程创建模块,用于创建设定数量的备用线程分配至所述硬件执行环境中的无冲突CPU核中,并将各所述备用线程初始化设置为休眠状态;
备用线程唤醒模块,用于如果在使用所述独占CPU核单独执行数据处理任务的过程中,检测到压力过载状态,则唤醒至少一个目标备用线程,并控制各所述目标备用线程所在的所述无冲突CPU核与所述独占CPU核共同执行所述数据处理任务。
9.根据权利要求8所述的装置,其中,所述资源申请模块,具体用于:
在预先配置的申请资源描述信息中识别独占CPU核申请数量以及亲和CPU核集合;
在硬件执行环境的所述亲和CPU核集合中,申请与独占CPU核申请数量匹配的独占CPU核。
10.根据权利要求9所述的装置,其中,所述备用线程创建模块,具体用于:
在所述硬件执行环境中,识别未独占CPU核,并在各所述未独占CPU核中,去除所述亲和CPU核集合,得到无冲突CPU核;
创建与所述无冲突CPU核的总数量匹配的备用线程,并将各所述备用线程分配至各所述无冲突CPU核中。
11.根据权利要求8-10任一项所述的装置,其中,所述数据处理任务包括网络输入输出IO任务;
所述备用线程唤醒模块,具体用于下述至少一项:
实时获取所述目标应用与网卡之间的活跃连接数量,并在确定执行完所述活跃连接数量的网络IO任务所需的多IO执行耗时超过第一IO耗时容限时,确定检测到所述压力过载状态;
实时检测网络IO任务在缓冲区中的IO排队时延,并在所述IO排队时延超过第二IO耗时容限时,确定检测到所述压力过载状态;
在检测到拥塞操作,或者当前处理的网络IO任务的单IO执行耗时超过第三IO耗时容限时,确定检测到所述压力过载状态。
12.根据权利要求8-10任一项所述的装置,其中,所述数据处理任务包括非网络IO任务;
所述备用线程唤醒模块,具体用于下述至少一项:
在确定执行完当前未处理的全部非网络IO任务所需的多任务执行耗时超过第一业务耗时容限时,确定检测到所述压力过载状态;
实时检测非网络IO任务在任务队列中的任务排队时延,并在所述任务排队时延超过第二业务耗时容限时,确定检测到所述压力过载状态;
在检测到拥塞操作,或者当前处理的非网络IO任务的单任务执行耗时超过第三业务耗时容限时,确定检测到所述压力过载状态。
13.根据权利要求8-10任一项所述的装置,其中,所述备用线程唤醒模块,进一步用于:
根据所述目标应用的常态工作压力,确定为所述独占CPU核分配的常态数据处理任务数量,并将所述常态数据处理任务数量的数据处理任务分配至各所述独占CPU核中的轮询线程中执行;
根据所述常态数据处理任务数量,计算过载数据处理任务数量;
按照所述过载数据处理任务数量确定备用线程数量,并唤醒与所述备用线程数量匹配的目标备用线程;
将所述过载数据处理任务数量的数据处理任务分配至各所述目标备用线程中,以控制各所述目标备用线程所在的所述无冲突CPU核与所述独占CPU核共同执行所述数据处理任务。
14.根据权利要求8所述的装置,还包括:
线程恢复休眠模块,用于在检测到所述目标应用的压力过载状态消除后,重新将各所述目标备用线程恢复至休眠状态,以释放对所述目标备用线程所在的所述无冲突CPU的占用。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
CN202311764233.4A 2023-12-20 2023-12-20 应用程序的运行控制方法、装置、设备及介质 Pending CN117742956A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311764233.4A CN117742956A (zh) 2023-12-20 2023-12-20 应用程序的运行控制方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311764233.4A CN117742956A (zh) 2023-12-20 2023-12-20 应用程序的运行控制方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN117742956A true CN117742956A (zh) 2024-03-22

Family

ID=90260459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311764233.4A Pending CN117742956A (zh) 2023-12-20 2023-12-20 应用程序的运行控制方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN117742956A (zh)

Similar Documents

Publication Publication Date Title
CN112559182B (zh) 资源分配方法、装置、设备及存储介质
CN112783659B (zh) 一种资源分配方法、装置、计算机设备及存储介质
CN109840149B (zh) 任务调度方法、装置、设备及存储介质
CN112527509B (zh) 一种资源分配方法、装置、电子设备及存储介质
EP3869324A2 (en) Voice data processing method, apparatus, storage medium and computer program product
CN112486642B (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
CN114968567A (zh) 用于分配计算节点的计算资源的方法、装置和介质
CN112346834A (zh) 数据库的请求处理方法和装置、电子设备和介质
CN115951974B (zh) Gpu虚拟机的管理方法、系统、设备和介质
CN113032102A (zh) 资源重调度方法、装置、设备和介质
CN113986497B (zh) 基于多租户技术的队列调度方法、装置及系统
CN114579323A (zh) 一种线程处理方法、装置、设备及介质
CN109189581B (zh) 一种作业调度方法和装置
CN114721818A (zh) 一种基于Kubernetes集群的GPU分时共享方法和系统
CN117539598A (zh) 任务处理方法、装置、电子设备及存储介质
CN117112222A (zh) 一种请求处理方法、装置、电子设备及存储介质
CN116303132A (zh) 一种数据缓存方法、装置、设备以及存储介质
CN116243983A (zh) 处理器、集成电路芯片、指令处理方法、电子设备和介质
CN115390992A (zh) 一种虚拟机创建方法、装置、设备和存储介质
CN117742956A (zh) 应用程序的运行控制方法、装置、设备及介质
CN115617451A (zh) 一种数据处理方法和数据处理装置
CN113051051B (zh) 视频设备的调度方法、装置、设备及存储介质
CN114116220A (zh) 一种gpu共享控制方法、gpu共享控制装置及存储介质
CN116893893B (zh) 一种虚拟机调度方法、装置、电子设备及存储介质
CN113127162A (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