CN111831442A - 一种资源分配的方法、装置、存储介质及电子设备 - Google Patents
一种资源分配的方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111831442A CN111831442A CN202010628873.2A CN202010628873A CN111831442A CN 111831442 A CN111831442 A CN 111831442A CN 202010628873 A CN202010628873 A CN 202010628873A CN 111831442 A CN111831442 A CN 111831442A
- Authority
- CN
- China
- Prior art keywords
- threads
- processor
- thread
- load value
- processor cores
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 103
- 238000013468 resource allocation Methods 0.000 title claims abstract description 47
- 238000003860 storage Methods 0.000 title claims abstract description 17
- 230000003993 interaction Effects 0.000 claims abstract description 85
- 238000004590 computer program Methods 0.000 claims description 15
- 230000000903 blocking effect Effects 0.000 abstract description 10
- 238000012360 testing method Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 13
- 230000003068 static effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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 the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例一种资源分配的方法、装置、存储介质及电子设备,其中,本申请实施例通过统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除第一类线程之外的线程作为第二类线程,根据各类线程的第一数量,以及每一类别对应的权重,计算处理器的第一参考负载值,根据第一参考负载值调整参与运算的处理器核心的数量。本方案通过在计算负载值时,由于执行用户交互事件相关的线程有较高的权重,使得在处理器的运行队列中大量存在与用户交互场景相关的第一类线程时,减少离线的处理器核心的数量,以减少在用户交互场景中出现卡顿的次数。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种资源分配的方法、装置、存储介质及电子设备。
背景技术
随着技术的发展,电子设备中安装的各类应用程序越来越多,例如视频类应用、游戏类应用以及即时通讯类应用等。这使得电子设备经常需要在前台和后台运行多个应用程序,容易在用户交互场景中出现卡顿现象。
现有的系统资源分配方式不能很好的处理上述问题,因此导致较差的用户体验。
发明内容
本申请实施例提供一种资源分配的方法、装置以及存储介质,可以减少在用户交互场景中的卡顿现象。
第一方面,本申请实施例提供了一种资源分配的方法,包括:
统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程;
根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重;
根据所述第一参考负载值调整参与运算的处理器核心的数量。
第二方面,本申请实施例提供了一种资源分配装置,包括:
统计单元,用于统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程;
计算单元,用于根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重;
调整单元,用于根据所述第一参考负载值调整参与运算的处理器核心的数量。
第三方面,本申请实施例提供的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的资源分配的方法。
第四方面,本申请实施例提供的电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的资源分配的方法。
本申请实施例通过统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程,然后,根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重,再然后,根据所述第一参考负载值调整参与运算的处理器核心的数量。本方案通过在计算负载值时,由于执行用户交互事件相关的线程有较高的权重,使得在处理器的运行队列中大量存在与用户交互场景相关的第一类线程时,减少离线的处理器核心的数量,进而在用户交互场景中,相关线程可以获得更多的处理器核心参与处理,提高其运行效率,以减少在用户交互场景中出现卡顿的次数。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的资源分配的方法的一种场景示意图。
图2为本申请实施例提供的资源分配的方法的一种流程示意图。
图3为本申请实施例提供的资源分配的方法的另一场景示意图。
图4为本申请实施例提供的资源分配的方法的另一流程示意图。
图5为本申请实施例提供的资源分配装置的结构示意图。
图6为本申请实施例提供的电子设备的结构示意图。
图7为本申请实施例提供的电子设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种资源分配方法,该资源分配的方法的执行主体可以是本申请实施例提供的资源分配装置,或者集成了该资源分配装置的电子设备,其中,所述资源分配装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑等设备,还可以是游戏设备、AR(Augmented Reality,增强现实)设备、汽车装置、数据存储装置、音频播放装置、视频播放装置、笔记本电脑、桌面计算设备等。
例如,以该资源分配的方法的执行主体为电子设备为例,则如图1所示,电子设备可以通过统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程(例如,可以为T1(ux)、T2(ux)...Tn(ux)),将除第一类线程之外的线程作为第二类线程(例如,可以为t1、t2...tn),然后,电子设备根据各类线程的第一数量,以及每一类别对应的权重,计算处理器的第一参考负载值,其中,第一类线程对应的第一权重大于第二类线程对应的第二权重,在然后,电子设备根据第一参考负载值调整参与运算的处理器核心的数量。这样,设置执行用户交互事件相关的线程有较高的权重,使得在处理器的运行队列中大量存在与用户交互场景相关的第一类线程时,减少离线的处理器核心的数量,减少在用户交互场景中出现卡顿的次数。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
实施例一、
本申请实施例提供一种资源分配方法,如图2所示,图2为本申请实施例提供的资源分配的方法的流程示意图,该资源分配的方法可以包括以下步骤:
101、统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除第一类线程之外的线程作为第二类线程。
其中,本申请中从线程的运行情况是否会影响到用户体验的角度出发,将系统运行队列中的线程分为第一类线程和第二类线程,参考图3,其中,将那些直接或者间接地影响到用户体验的线程记为Ux或ux(User Experience,用户体验)线程,作为第一类线程,例如:T1(ux)、T2(ux)...Tn(ux);将除了Ux线程之外的其他线程记为非Ux线程,作为第二类线程,例如:t1、t2...tn。
具体地,以下内容将对第一类线程与第二类线程的识别与标记进行具体说明。
在一实施方式中,电子设备的操作系统可以是基于linux内核的系统,例如,安卓操作系统等。电子设备上运行着系统进程和应用程序的进程,线程是进程的一条执行路径,是程序执行时的最小单位。一个进程可以有多个线程,但至少有一个线程。
对于内核来说,在进行资源调度时,比如CPU调度,都是具体到某个线程的。进程内有一个主线程,它也会创建出很多子线程来协助工作。比如一个内容交互应用程序的进程,它会创建一个主线程来执行代码,执行途中也会创建其它子线程来协助运行各部分的任务代码。
其中,电子设备的系统架构至少包括应用框架(framework)层和内核(kernel)层,本申请实施例,从应用框架层和内核层的角度对ux线程进行识别和标记,例如,应用框架层为一些直接执行用户交互事件中相关任务的线程添加预设标签,以将这些线程标记为静态ux线程,内核层将一些间接地影响到用户交互事件中相关任务执行的线程标记为动态ux线程。
本申请实施例中的进程包括系统级进程和应用级进程。由于产生用户可感知的界面的卡顿的场景多是相对于运行在前台的进程来说的。因此,本申请实施例的方案中,在检测到有进程切换到前台运行时,先确定该前台进程。在确定前台进程后,从该前台进程的线程中确定出用于执行用户交互事件中相关任务的线程,作为目标线程。
例如,在一实施例中,“从前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”包括:从前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程;为目标线程添加预设标签,以将线程标记为第一类线程。
例如,上述第一预设线程包括进程运行时创建的一些用于直接执行用户交互事件的相关任务的线程,如UI(user interface,用户界面)线程,Render(渲染)线程,GL线程,用户输入事件的分发线程,用户输入事件的检测线程等。这些线程是否能够流畅运行决定着是否会在用户与该进程的交互界面中产生用户可感知的卡顿。
比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这次交互事件中,需要UI线程、Render线程、用户输入事件的分发线程、用户输入事件的检测线程等线程共同工作,以完成本次用户交互事件,其中,每一个线程的运行都需要系统为其分配资源。因此,在检测到该聊天软件在前台运行时,识别出这些线程,将其标记为ux线程。
其中,第一预设线程一般是应用级线程,这些线程可以是通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个线程处理任务太慢导致的,则可以认为该线程是用于执行用户交互事件中相关任务的,该线程的运行与用户体验紧密相关,可以将该线程作为第一预设线程。
基于此,可以通过对各种可能的卡顿场景进行测试,记录这些导致卡顿出现的线程。电子设备中存储这些第一预设线程的相关信息,当进程切换到前台运行时,将该进程下的属于预先记录的第一预设线程的线程都标记为ux线程。
可以理解的是,对于电子设备来说,存储的第一预设线程的相关信息并不是不可修改的,当进行系统升级时,可以对第一预设线程的相关信息进行更新。
此外,在另一实施例中,该方法还包括:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,第二预设线程为系统级线程。
由于在执行用户交互事件的过程中,除了应用级线程之外,可能还涉及到一些系统级的线程来完成任务,系统框架层也需要将这些系统级线程标记为ux线程。一般这些线程在系统启动时就会创建,因此,可以在检测到系统启动时,识别出这些线程并进行标记,比如,Surfaceflinger线程、系统动画线程等。或者,在系统运行过程中,如果检测到有新的系统进程的线程创建并用来执行用户交互事件中相关任务,系统框架层也将这些线程标记为ux线程。比如,SystemUI线程。其中,第二预设线程也可以通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个系统级线程处理任务太慢导致的,则可以认为该系统级线程是用于执行用户交互事件中相关任务的,该系统级线程的运行与用户体验紧密相关,可以将该系统级线程作为第二预设线程。电子设备中存储这些第二预设线程的相关信息,如果检测到系统创建了这些线程,则将其标记为ux线程。
其中,预设标签可以为ux标签,其添加方式如下:Linux使用task_struct结构体描述和记录线程,每个线程都有对应的task_struct结构体。task_struct中记录了线程的名称、标识符、状态、优先级、内存指针、上下文数据等属性信息。因此,应用框架层可以在task_struct结构体中增加对应的ux flag成员,以将前台进程的UI线程、Render线程、GL线程等执行用户交互事件中相关任务的线程,通过标记ux flag位,使内核层能够识别该线程的任务属性。
需要说明的是,上述几种静态ux线程仅为举例说明,并不局限于此,只要是直接地执行用户交互事件中相关任务的线程,使得其运行情况直接地影响到用户体验的线程,都可以将其标记为静态ux线程。对于应用框架层来说,在检测到新创建的线程是用来执行用户交互事件,或者检测到某些常驻系统级线程是用以处理用户交互事件时,为这些线程添加ux标签,以将其标记为静态ux线程。
在另一实施例方式中,“从前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”还包括:在前台进程的运行过程中,当检测到有新线程创建时,确定新创建的线程是否用于执行用户交互事件中的相关任务;当新创建的线程用于执行用户交互事件中的相关任务时,将新创建的线程标记为第一类线程。
前台进程在运行过程中,如果有用户交互事件发生,除了上述应用级的第一预设线程和系统级的第二预设线程之外,还可能会有一些临时创建的任务线程,这些任务线程的运行也会直接影响到是否会在用户与该进程的交互界面中产生用户可感知的卡顿。因此,应用框架层会将这些线程也标记为ux线程。
其中,电子设备根据检测到的用户指令确定发生的用户交互事件。用户交互事件一般是指用户触发了某指令后,电子设备需要即时的对该指令进行响应,进行某种处理并将处理结果显示在界面上的情况。例如,用户使用电子设备观看视频、编辑短信、使用聊天软件、使用游戏软件、控制电子设备界面的切换、使用浏览浏览网页等,都属于用户交互事件。比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这个过程中,电子设备需要调度多个线程以完成本次用户交互事件,从该用户交互事件的开始到完成的整个过程中,进程创建的用来完成这次用户交互事件的线程都可以认为是与用户体验相关的线程。
在另一实施例中,为目标线程添加预设标签之后,该方法还包括:若前台进程为应用进程,则在检测到前台进程切换至后台运行时,删除第一预设线程的预设标签。当前台进程切换到后台运行时,该进程的运行情况已经与用户体验无关,其线程的重要程度也有所下降,因此,可以将该进程对应的第一预设线程的ux标记删除,将这些ux线程恢复为普通线程。
此外,对于那些在用户交互事件中临时创建的任务线程来说,在执行完对应的任务后就会被销毁,其自然会丢失掉ux标签。而对于系统级的第二预设线程来说,即使发生了进程的前后台切换,这些线程始终与用户体验相关,所以始终保有ux标签。
通过上述实施例,框架层识别出那些直接影响到用户体验的线程并为其添加标记。而线程需要内核为之分配系统资源供其运行。因此,线程在执行任务前,会向内核发送系统资源分配请求。当内核接收到资源分配请求时,可以先判断该线程是否为ux线程,对于ux线程和非ux线程采用不同的资源分配方式。
需要说明的是,这里的第一类线程和第二类线程中的“第一类”和“第二类”,仅仅是为了区分线程是否具有ux标签,而不是说将系统中的线程只划分为这两种类别。本申请的资源分配优化方案是从线程是否具有ux标签这一角度出发的,如果线程同时还具有其他属性,则在资源分配时,考虑了是否具有ux标签这一属性后,仍然会考虑其他属性。
上面介绍了静态ux线程的识别。还有一些线程虽然并没有直接地执行用户交互事件的相关任务,但是这些线程的运行情况也会影响到静态ux线程的运行情况,进而间接地影响到用户交互事件的相关任务的执行。也就是说,这些线程并不是总是与用户体验相关,但是这些线程在执行过程的某段时间内,可能通过资源约束与静态ux线程产生关联,因此,在一些实施方式中,为了进一步地减少交互场景下的卡顿现象,内核层将这些与静态ux线程之间有约束关系的线程也标记为ux线程。而一旦这种约束关系结束,就会将该线程恢复至非ux线程。本申请实施例中将这类线程定义为动态ux线程。其中,具体的约束关系包括但不限于进程间通信、线程间通信或者持有临界资源等。比如,静态ux线程通过进程间通信请求的普通线程,静态ux线程通过某种线程间通信方式请求的普通线程,持有静态ux线程需要的等待信号量、读写信号量、互斥锁等临界资源的普通线程等,本申请实施例中将这类线程标记为动态ux线程。基于此,在一些实施例中,该方法还包括:对第一类线程的运行状态进行检测;当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;为关联线程添加预设标签,以将关联线程标记为第一类线程。
在一些实施方式中,将关联线程标记为第一类线程之后,还包括:当检测到约束关系解除时,删除关联线程的预设标签。
其中,关于线程的阻塞状态,在内核层面一般会区分为D状态(Uninterruptablesleep状态,不可中断的睡眠状态)和S状态(interruptable sleep状态,可中断的睡眠状态),比如,线程发起IO请求但得不到满足,就进入D状态;线程发起同步Binder请求,就会进入S状态。线程进入这些状态一般都是因为这些都是线程任务执行途中因为某些原因或者逻辑,需要主动或者被动地放弃CPU资源。
该实施方式中,内核层对静态ux线程的状态进行检测,当检测到ux线程进入到堵塞状态时,确定出与进入堵塞状态的ux线程之间具有约束关系的关联线程,如果这些关联线程没有及时分配到资源,比如IO资源,而导致运行受阻,则由于关联线程的运行缓慢又会导致该ux线程长时间处于阻塞状态,因此,为了避免该ux线程长时间处于阻塞状态,内核层会将识别出的关联线程也标记为ux线程,以提高其IO处理效率,保证其及时执行,进而快速解除该ux线程的阻塞状态。
102、根据各类线程的第一数量,以及每一类别对应的权重,计算处理器的第一参考负载值,其中,第一类线程对应的第一权重大于第二类线程对应的第二权重。
其中,第一数量中包括第一类线程对应的数量,以及第二类线程对应的数量。例如,第一类线程的数量为3,第二类线程的数量为2。
其中,权重值为经过测试和实验得到的经验值。由于第一类线程为执行用户交互事件中相关任务的线程,因此,第一类线程能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,所以本申请中在进行资源分配时,将资源向这些线程倾斜,即相对于第二线程,第一线程被赋予的第一权重大于第二线程被赋予的第二权重。
其中,负载值指的是系统CPU(中央处理器,central processing unit))的负载程度的度量,即有多少线程在等待被CPU调度,也可以理解为有多少线程在等待被CPU调度,参考负载值指的是通过对不同类别的线程进行加权计算后得到的负载值。
例如,在计算参考负载值时,第一类线程和第二类线程对应的权重可以分别为W1=1.5和W2=1,对应的数量可以分别为N1=3,N2=2,相应的参考负载值R可以为:R=W1*N1+W1*N2=6.5。
又例如,第一类线程和第二类对应的权重还可以分别为W1=2和W2=1,对应的数量可以分别为N1=5,N2=1,相应的参考负载值R可以为:
R=W1*N1+W1*N2=11。
值得注意的是,该权重在同一电子设备中是固定的值,可以根据不同的设备调整该权重。
在一实施方式中,还可以对第二类线程进一步进行分类。例如,第二类线程中包括前台进程和后台进程建立的任务线程,这里标记为前台线程和后台线程。此时,可以将处理器运行队列中的线程分为属于第一类线程的Ux线程,以及属于第二类线程的前台线程和后台线程,可以分别给它们赋予相应的权重。
比如,Ux线程、前台线程、后台线程,它们的权重可以依次为W1=1.5、W2=0.9、W3=0.8,以及它们的数量可以分别为N1=6,N2=1,N3=5,得到参考负载值R=W1*N1+W2*N2+W3*N3=13.9,其中,W1>W2>W3。
又比如,Ux线程、前台线程、后台线程,它们的权重可以依次为W1=1.2、W2=0.8、W3=0.7,以及它们的数量可以分别为N1=10,N2=1,N3=1,得到参考负载值R=W1*N1+W2*N2+W3*N3=13.5。
103、根据第一参考负载值调整参与运算的处理器核心的数量。
其中,处理器核心(CPU core)是处理器的重要组成部分,处理器中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,处理器所有的计算、接受/存储命令、处理数据都由核心执行。各种处理器核心都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元都会有科学的布局。处理器的处理器核心数量是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的处理器核心单元组,四核就包含4个相对独立的处理器核心单元组,等等,依次类推。
其中,目前大部分智能终端的CPU架构都是采用ARM架构,在ARM标准的架构中,处理器核心的算力是存在差异的,一般会将算力较强的核心成为大核,算力较弱的核心称为小核,从性能的角度出发,线程运行在大核上可以提高程序运行速度,提高用户体验。例如,八核智能终端中,主处理器2.6G四核,用于运行型程序;协处理器2.1G四核,用于处理普通应用程序,比较省电。
在一实施方式中,该根据第一参考负载值调整参与运算的处理器核心的数量的步骤,可以包括:
(1)根据第一参考负载值计算负载程度。
(2)当所述负载程度不小于第一预设阈值时,增加当前参与运算的处理器核心的数量。
(3)当所述负载程度小于所述第一预设阈值时,减少当前参与运算的处理器核心的数量。
其中,负载程度为第一参考负载值/当前参与运算的处理器核心所能处理的负载值,该负载程度不超过100%。
具体地,在负载均衡调度系统中,在更新系统负载时,如果发生了任务迁移,那么就会触发处理器核心数量的调整。
在一实施方式中,系统会轮询处理器中运行的所有处理器核心的负载程度,当所述负载程度不小于预设阈值时,则将当前参与运算的处理器核心加1,当所述负载程度小于预设阈值时,则将当前参与运算的处理器核心减1,直到轮询完所有的处理器。其中,具体增加和减少处理器核心的数量可以根据测试和实验数据进行调整。
其中,预设阈值为通过测试和实验得到的经验值。
例如,目前经过测试和实验,将小核的预设阈值设置为60%,大核的预设阈值设置为68%。在小核中,当该负载程度大于60%时,将当前参与运算的小核数量加1,当该负载程度小于60%时,将当前参与运算的小核数量减少1。在大核中同理。其中,该预设阈值可以根据实际情况进行调整,这里不做具体限定,另外,具体增加和减少处理器核心的数量可以根据测试和实验数据进行调整。
在一实施方式中,该当负载程度大于第一预设阈值时,增加当前参与运算的处理器核心的数量的步骤还可以包括:
(1)当负载程度大于第一预设阈值、且小于第二预设阈值时,按照预设调整量增加当前参与运算的处理器核心的数量,其中,第二预设阈值大于第一预设阈值。
(2)当负载程度大于第二预设阈值时,开启全部处理器核心。
其中,当负载程度大于第二预设阈值时,此时系统的负载处于很高的状态,则需要开启全部的处理器核心。例如,第二预设阈值可以设置为90%。实际中,第二预设阈值经过测试和实验评估得到。
在一实施方式中,该根据第一参考负载值调整参与运算的处理器核心的数量的步骤,还可以包括:
(1)获取第一参考负载值对应的参考核心数量,以及当前的目标核心数量。
(2)根据参考核心数量,更新目标核心数量。
(3)按照更新后的目标核心数量调整参与运算的处理器核心的数量。
其中,参考核心数量为根据第一参考负载值计算的到的对应的处理器核心的数量。
其中,当前的目标核心数量为CPU调度器根据当前系统中各个处理器核心的负载情况来动态的调整系统内参与运算的处理器核心的数量。目标核心数量可以记为need_cpus,need_cpus的初始值为0。
具体地,根据参考核心数量来对目标核心数量need_cpus进行调整,得到更新后的目标数量后,将系统内参与运算的处理器核心的数量调整为更新后的need_cpus值。
在一实施方式中,该根据参考核心数量,更新目标核心数量的步骤,可以包括:
(1)当参考核心数量不小于当前目标核心数量,相应增加目标核心数量,以与参考核心数量一致。
(2)当参考核心数量小于当前目标核心数量,相应减少目标核心数量,以与参考核心数量一致。
例如,当参考核心数量为2,当前目标核心数量为1时,也即当前的参考核心数量不小于当前目标核心数量,计算参考核心数量与目标核心数量的差值,为正1,则将目标核心数量加1,得到更新后的目标核心数量为2。
又例如,当参考核心数量为3,当前目标核心数量为3时,也即当前的参考核心数量不小于当前的目标核心数量,计算参考核心数量与目标核心数量的差值,为0,保持目标核心数量和参考核心数量一致。
再例如,当参考核心数量为2,当前目标核心数量为4时,也即当前参考核心数量小于当前目标核心数量,计算参考和行数量与目标核心数量的差值,为负2,则将目标核心数量减2,得到更新后的目标核心数量为2。
在一实施方式中,在根据第一参考负载值调整参与运算的处理器核心的数量的步骤之前,还可以包括:
(1)统计上一周期内处理器执行的各类线程的第二数量;
(2)根据各类线程的第二数量,以及每一类别对应的权重,计算处理器的第二参考负载值;
(3)根据第一参考负载值调整参与运算的处理器核心的数量,包括:
(4)根据第一参考负载值和第二参考负载值调整参与运算的处理器核心的数量。
其中,统计上一周期内处理器执行的各类线程的第二数量,即统计上一预设周期内为处理器贡献负载的各类线程数量,例如,预设周期可以为1秒,即统计上一秒内运行过的各类别线程的数量,得到该第二数量。其中,第二数量中包括第一类线程对应的数量,以及第二类线程对应的数量。例如,第一类线程的数量为5,第二类线程的数量为10。
在一实施方式中,可以设置预设负载阈值,根据该第二数量进行加权求和计算得到相应的第二参考负载值,当第二参考负载值不小于预设负载阈值时,将目标核心数量,即need_cpus加1,当第二参考负载值小于预设负载阈值时,将目标核心数量,即need_cpus减1。其中,预设负载阈值经过测试和实验得出。
例如,预设周期为1秒,假设经过测试或实验得到1个处理器核心只能运行2条线程,则若上1秒内有3个处理器核心参与运行,则此时预设负载阈值为6,若此时第二参考负载值为7,即第二参考负载值不小于预设负载阈值,则此时将目标核心数量,即need_cpus加1。
又例如,若上1秒内有3个处理器核心参与运行,则此时预设负载阈值为6,若此时第二参考负载值为5,即第二参考负载值小于预设负载阈值,则此时将目标核心数量,即need_cpus减1。
本申请实施例通过统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程,然后,根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重,再然后,根据所述第一参考负载值调整参与运算的处理器核心的数量。本方案通过在计算负载值时,由于执行用户交互事件相关的线程有较高的权重,使得在处理器的运行队列中大量存在与用户交互场景相关的第一类线程时,减少离线的处理器核心的数量,进而在用户交互场景中,相关线程可以获得更多的处理器核心参与处理,提高其运行效率,以减少在用户交互场景中出现卡顿的次数。
实施例二、
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
请参阅图4,图4为本申请实施例提供的资源分配的方法的另一流程图。具体而言,本实施例中,将以电子设备作为执行主体进行说明。
201、统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除第一类线程之外的线程作为第二类线程。
例如,电子设备可以通过将那些直接或者间接地影响到用户体验的线程记为Ux(User Experience,用户体验)线程,作为第一类线程;将除了Ux线程之外的其他线程记为非Ux线程,作为第二类线程。
202、根据各类线程的第一数量,以及每一类别对应的权重,计算处理器的第一参考负载值,其中,第一类线程对应的第一权重大于第二类线程对应的第二权重。
例如,由于第一类线程为执行用户交互事件中相关任务的线程,因此,第一类线程能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,所以本申请中电子设备在进行资源分配时,将资源向这些线程倾斜,即相对于第二线程,第一线程被赋予的第一权重大于第二线程被赋予的第二权重。
例如,在计算参考负载值时,第一类线程和第二类线程对应的权重可以分别为W1=1.5和W2=1,对应的数量可以分别为N1=3,N2=2,相应的参考负载值R可以为:R=W1*N1+W1*N2=6.5。
又例如,第一类线程和第二类对应的权重还可以分别为W1=2和W2=1,对应的数量可以分别为N1=5,N2=1,相应的参考负载值R可以为:R=W1*N1+W1*N2=11。
在一实施方式中,还可以对第二类线程进一步进行分类。例如,第二类线程中包括前台进程和后台进程建立的任务线程,这里标记为前台线程和后台线程。此时,可以将处理器运行队列中的线程分为属于第一类线程的Ux线程,以及属于第二类线程的前台线程和后台线程,可以分别给它们赋予相应的权重。
比如,Ux线程、前台线程、后台线程,它们的权重可以依次为W1=1.5、W2=0.9、W3=0.8,以及它们的数量可以分别为N1=6,N2=1,N3=5,得到参考负载值R=W1*N1+W2*N2+W3*N3=13.9。
又比如,Ux线程、前台线程、后台线程,它们的权重可以依次为W1=1.2、W2=0.8、W3=0.7,以及它们的数量可以分别为N1=10,N2=1,N3=1,得到参考负载值R=W1*N1+W2*N2+W3*N3=13.5。
203、统计上一周期内处理器执行的各类线程的第二数量。
例如,预设周期可以为1秒,即统计电子设备处理器内上一秒内运行过的各类别线程的数量,得到该第二数量,其中,第二数量包括第一类线程对应的数量,以及第二类线程对应的数量。例如,第一类线程的数量为5,第二类线程的数量为10。
204、根据各类线程的第二数量,以及每一类别对应的权重,计算处理器的第二参考负载值。
例如,在计算参考负载值时,第一类线程和第二类线程对应的权重可以分别为W1=1.5和W2=1,对应的数量可以分别为N1=3,N2=2,相应的参考负载值R可以为:R=W1*N1+W1*N2=6.5。
其中,第一负载参考值和第二参考值都是根据加权求和得到。在求第二参考负载值时,每一类别对应的权重同样经过测试和实验得到,这里仅举例说明计算方式。
205、根据第一参考负载值和所述第二参考负载值调整参与运算的处理器核心的数量。
其中,电子设备在通过第一参考负载值调整参与运算的核心的数量时,可以有多种实施方式,以下举例其中两种进行说明:
方式一、电子设备根据第一参考负载值计算负载程度,当所述负载程度不小于第一预设阈值时,电子设备增加当前参与运算的处理器核心的数量;当所述负载程度小于所述第一预设阈值时,电子设备减少当前参与运算的处理器核心的数量。
其中,方式一还包括,当负载程度大于第一预设阈值、且小于第二预设阈值时,电子设备按照预设调整量增加当前参与运算的处理器核心的数量,其中,第二预设阈值大于第一预设阈值;当负载程度大于第二预设阈值时,开启全部处理器核心。
例如,目前经过测试和实验,将小核的预设阈值设置为60%,大核的预设阈值设置为68%。在小核中,当该负载程度大于60%时,电子设备将当前参与运算的小核数量加1,当该负载程度小于60%时,电子设备将当前参与运算的小核数量减少1。其中,该预设阈值可以根据实际情况进行调整,这里不做具体限定,另外,具体增加和减少处理器核心的数量可以根据测试和实验数据进行调整。
又例如,由于当负载程度大于第二预设阈值时,此时电子设备系统的负载处于很高的状态,则需要开启全部的处理器核心。可以将第二预设阈值可以设置为90%。实际中,第二预设阈值经过测试和实验评估得到。
方式二,获取第一参考负载值对应的参考核心数量,以及当前的目标核心数量,根据参考核心数量,更新目标核心数量,按照更新后的目标核心数量调整参与运算的处理器核心的数量。
具体地,当参考核心数量不小于当前目标核心数量,相应增加目标核心数量,以与参考核心数量一致;当参考核心数量小于当前目标核心数量,相应减少目标核心数量,以与参考核心数量一致。
例如,当参考核心数量为2,当前目标核心数量为1时,也即当前的参考核心数量不小于当前目标核心数量,电子设备计算参考核心数量与目标核心数量的差值,为正1,则电子设备将目标核心数量加1,得到更新后的目标核心数量为2。
又例如,当参考核心数量为3,当前目标核心数量为3时,也即当前的参考核心数量不小于当前的目标核心数量,电子设备计算参考核心数量与目标核心数量的差值,为0,电子设备保持目标核心数量和参考核心数量一致。
再例如,当参考核心数量为2,当前目标核心数量为4时,也即当前参考核心数量小于当前目标核心数量,电子设备计算参考和行数量与目标核心数量的差值,为负2,则电子设备将目标核心数量减2,得到更新后的目标核心数量为2。
实际对当前参与运算的处理器核心的调整可以通过第一参考负载值得到的调整方式进行调整,也可以通过第二参考负载值得到的调整方式进行调整,还可以结合第一参考负载值以及第二参考负载值得到的调整方式进行综合调整。例如,比较不同调整方式所得到的需要参与运算的处理器核心的数量,取最大值、最小值,或者取中间值等。
需要注意的是,由于上述的实施例是从不同的维度来对参与运算的处理器核心进行调整,也可以根据一定的顺序,依次利用上述不同维度的方案,来对参与运算的处理器核心进行调整,在此不做具体限定。
本申请实施例通过统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程,然后,根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重,再然后,根据所述第一参考负载值调整参与运算的处理器核心的数量。本方案通过在计算负载值时,由于执行用户交互事件相关的线程有较高的权重,使得在处理器的运行队列中大量存在与用户交互场景相关的第一类线程时,减少离线的处理器核心的数量,进而在用户交互场景中,相关线程可以获得更多的处理器核心参与处理,提高其运行效率,以减少在用户交互场景中出现卡顿的次数。
实施例三、
为便于更好的实施本申请实施例提供的资源分配方法,本申请的实施例还提供一种资源分配装置。其中名词的含义与上述资源分配的方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图5,图5为本申请实施例提供的资源分配装置的结构示意图,具体而言,该资源分配装置300,包括:统计单元301、计算单元302以及调整单元303。
统计单元301,用于统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程。
其中,本申请中从线程的运行情况是否会影响到用户体验的角度出发,将系统中的线程分为第一类线程和第二类线程,其中,将那些直接或者间接地影响到用户体验的线程记为Ux(User Experience,用户体验)线程,作为第一类线程;将除了Ux线程之外的其他线程记为非Ux线程,作为第二类线程。
例如,在一实施例中,“从前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”包括:从前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程;为目标线程添加预设标签,以将线程标记为第一类线程。
计算单元302,用于根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重。
其中,第一数量中包括第一类线程对应的数量,以及第二类线程对应的数量。例如,第一类线程的数量为3,第二类线程的数量为2。
调整单元303,用于根据所述第一参考负载值调整参与运算的处理器核心的数量。
其中,电子设备在通过第一参考负载值调整参与运算的核心的数量时,可以有多种实施方式,以下举例其中两种进行说明:
方式一、根据第一参考负载值计算负载程度,当所述负载程度不小于第一预设阈值时,电子设备增加当前参与运算的处理器核心的数量;当所述负载程度小于所述第一预设阈值时,电子设备减少当前参与运算的处理器核心的数量。
其中,负载程度为参考负载值/当前参与运算的处理器核心所能处理的负载值,该负载程度不超过100%。
例如,目前经过测试和实验,将小核的预设阈值设置为60%,大核的预设阈值设置为68%。在小核中,当该负载程度大于60%时,将当前参与运算的小核数量加1,当该负载程度小于60%时,将当前参与运算的小核数量减少1。
方式二、获取第一参考负载值对应的参考核心数量,以及当前的目标核心数量,根据参考核心数量,更新目标核心数量,按照更新后的目标核心数量调整参与运算的处理器核心的数量。
其中,当前的目标核心数量为CPU调度器根据当前系统中各个处理器核心的负载情况来动态的调整系统内参与运算的处理器核心的数量。目标核心数量可以记为need_cpus,need_cpus的初始值为0。
例如,当参考核心数量为2,当前目标核心数量为1时,也即当前的参考核心数量不小于当前目标核心数量,计算参考核心数量与目标核心数量的差值,为正1,则将目标核心数量加1,得到更新后的目标核心数量为2。
又例如,当参考核心数量为3,当前目标核心数量为3时,也即当前的参考核心数量不小于当前的目标核心数量,计算参考核心数量与目标核心数量的差值,为0,保持目标核心数量和参考核心数量一致。
由上述可知,本申请实施例提供了一种资源分配装置,通过统计单元301统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程,然后,通过计算单元302根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重,再然后,通过调整单元303根据所述第一参考负载值调整参与运算的处理器核心的数量。本方案通过在计算负载值时,由于执行用户交互事件相关的线程有较高的权重,使得在处理器的运行队列中大量存在与用户交互场景相关的第一类线程时,减少离线的处理器核心的数量,进而在用户交互场景中,相关线程可以获得更多的处理器核心参与处理,提高其运行效率,以减少在用户交互场景中出现卡顿的次数。
本申请实施例还提供一种电子设备。请参阅图6,电子设备400包括处理器401以及存储器402。其中,处理器401与存储器402电性连接。
该处理器400是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或加载存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备400的各种功能并处理数据,从而对电子设备400进行整体监控。
该存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的计算机程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
在本申请实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401运行存储在存储器402中的计算机程序,从而实现各种功能,如下:
统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除第一类线程之外的线程作为第二类线程;
根据各类线程的第一数量,以及每一类别对应的权重,计算处理器的第一参考负载值,其中,第一类线程对应的第一权重大于第二类线程对应的第二权重;
根据第一参考负载值调整参与运算的处理器核心的数量。
在某些实施方式中,根据第一参考负载值调整参与运算的处理器核心的数量时,处理器401可以具体执行以下步骤:
根据第一参考负载值计算负载程度;
当负载程度不小于第一预设阈值时,增加当前参与运算的处理器核心的数量;
当负载程度小于第一预设阈值时,减少当前参与运算的处理器核心的数量。
在某些实施方式中,当负载程度不小于第一预设阈值时,增加当前参与运算的处理器核心的数量时,处理器401可以具体执行以下步骤:
当负载程度大于第一预设阈值、且小于第二预设阈值时,按照预设调整量增加当前参与运算的处理器核心的数量,其中,第二预设阈值大于第一预设阈值;
当负载程度大于第二预设阈值时,开启全部处理器核心。
在某些实施方式中,根据第一参考负载值调整参与运算的处理器核心的数量时,处理器401还可以具体执行以下步骤:
获取第一参考负载值对应的参考核心数量,以及当前的目标核心数量;
根据参考核心数量,更新目标核心数量;
按照更新后的目标核心数量调整参与运算的处理器核心的数量。
在某些实施方式中,根据参考核心数量,更新目标核心数量时,处理器401可以具体执行以下步骤:
当参考核心数量不小于当前目标核心数量,相应增加目标核心数量,以与参考核心数量一致;
当参考核心数量小于当前目标核心数量,相应减少目标核心数量,以与参考核心数量一致。
由上述可知,本申请实施例通过统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程,然后,根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重,再然后,根据所述第一参考负载值调整参与运算的处理器核心的数量。本方案通过在计算负载值时,由于执行用户交互事件相关的线程有较高的权重,使得在处理器的运行队列中大量存在与用户交互场景相关的第一类线程时,减少离线的处理器核心的数量,进而在用户交互场景中,相关线程可以获得更多的处理器核心参与处理,提高其运行效率,以减少在用户交互场景中出现卡顿的次数。
请一并参阅图7,在某些实施方式中,电子设备400还可以包括:显示器403、射频电路404、音频电路405以及电源406。其中,其中,显示器403、射频电路404、音频电路405以及电源406分别与处理器401电性连接。
该显示器403可以用于显示由用户输入的信息或提供给用户的信息以及各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示器403可以包括显示面板,在某些实施方式中,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、或者有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板。
该射频电路404可以用于收发射频信号,以通过无线通信与网络设备或其他电子设备建立无线通讯,与网络设备或其他电子设备之间收发信号。
该音频电路405可以用于通过扬声器、传声器提供用户与电子设备之间的音频接口。
该电源406可以用于给电子设备400的各个部件供电。在一些实施例中,电源406可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管图7中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
本申请实施例还提供一种存储介质,该存储介质存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上述任一实施例中的资源分配方法,比如:统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除第一类线程之外的线程作为第二类线程;根据各类线程的第一数量,以及每一类别对应的权重,计算处理器的第一参考负载值,其中,第一类线程对应的第一权重大于第二类线程对应的第二权重;根据第一参考负载值调整参与运算的处理器核心的数量。
在本申请实施例中,存储介质可以是磁碟、光盘、只读存储器(Read Only Memory,ROM)、或者随机存取记忆体(Random Access Memory,RAM)等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对本申请实施例的资源分配的方法而言,本领域普通测试人员可以理解实现本申请实施例的资源分配的方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,如存储在电子设备的存储器中,并被该电子设备内的至少一个处理器执行,在执行过程中可包括如资源分配的方法的实施例的流程。其中,该的存储介质可为磁碟、光盘、只读存储器、随机存取记忆体等。
对本申请实施例的资源分配装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,该存储介质譬如为只读存储器,磁盘或光盘等。
以上对本申请实施例所提供的一种资源分配的方法、装置、存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种资源分配的方法,其特征在于,包括:
统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程;
根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重;
根据所述第一参考负载值调整参与运算的处理器核心的数量。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一参考负载值调整参与运算的处理器核心的数量,包括:
根据所述第一参考负载值计算负载程度;
当所述负载程度不小于第一预设阈值时,增加当前参与运算的处理器核心的数量;
当所述负载程度小于所述第一预设阈值时,减少当前参与运算的处理器核心的数量。
3.根据权利要求2所述的方法,其特征在于,所述当所述负载程度不小于第一预设阈值时,增加当前参与运算的处理器核心的数量,包括:
当所述负载程度大于第一预设阈值、且小于第二预设阈值时,按照预设调整量增加当前参与运算的处理器核心的数量,其中,所述第二预设阈值大于所述第一预设阈值;
当所述负载程度大于所述第二预设阈值时,开启全部处理器核心。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一参考负载值调整参与运算的处理器核心的数量,包括:
获取所述第一参考负载值对应的参考核心数量,以及当前的目标核心数量;
根据所述参考核心数量,更新所述目标核心数量;
按照更新后的目标核心数量调整参与运算的处理器核心的数量。
5.根据权利要求4所述的方法,其特征在于,所述根据所述参考核心数量,更新所述目标核心数量,包括:
当所述参考核心数量不小于当前目标核心数量,相应增加所述目标核心数量,以与所述参考核心数量一致;
当所述参考核心数量小于当前目标核心数量,相应减少所述目标核心数量,以与所述参考核心数量一致。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第一参考负载值调整参与运算的处理器核心的数量之前,还包括:
统计上一周期内所述处理器执行的各类线程的第二数量;
根据所述各类线程的第二数量,以及每一类别对应的权重,计算所述处理器的第二参考负载值;
所述根据所述第一参考负载值调整参与运算的处理器核心的数量,包括:
根据所述第一参考负载值和所述第二参考负载值调整参与运算的处理器核心的数量。
7.根据权利要求1至6所述的方法,其特征在于,还包括:
确定出用于执行用户交互事件中相关任务的目标线程;
为所述目标线程添加所述预设标签,以将所述目标线程标记为第一类线程。
8.一种资源分配装置,其特征在于,包括:
统计单元,用于统计处理器的运行队列中各类线程的第一数量,其中,将执行用户交互事件中相关任务的线程作为第一类线程,将除所述第一类线程之外的线程作为第二类线程;
计算单元,用于根据所述各类线程的第一数量,以及每一类别对应的权重,计算所述处理器的第一参考负载值,其中,所述第一类线程对应的第一权重大于所述第二类线程对应的第二权重;
调整单元,用于根据所述第一参考负载值调整参与运算的处理器核心的数量。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的资源分配的方法中的步骤。
10.一种电子设备,包括处理器和存储器,所述存储器有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,以执行权利要求1至7任一项所述的一种资源分配的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628873.2A CN111831442A (zh) | 2020-07-01 | 2020-07-01 | 一种资源分配的方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628873.2A CN111831442A (zh) | 2020-07-01 | 2020-07-01 | 一种资源分配的方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831442A true CN111831442A (zh) | 2020-10-27 |
Family
ID=72901196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010628873.2A Withdrawn CN111831442A (zh) | 2020-07-01 | 2020-07-01 | 一种资源分配的方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831442A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382922A (zh) * | 2023-05-10 | 2023-07-04 | 深圳高灯计算机科技有限公司 | 资源监控方法、装置、计算机设备、存储介质和产品 |
CN116661984A (zh) * | 2022-09-09 | 2023-08-29 | 荣耀终端有限公司 | 一种负载管控方法、电子设备及存储介质 |
-
2020
- 2020-07-01 CN CN202010628873.2A patent/CN111831442A/zh not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661984A (zh) * | 2022-09-09 | 2023-08-29 | 荣耀终端有限公司 | 一种负载管控方法、电子设备及存储介质 |
CN116661984B (zh) * | 2022-09-09 | 2024-05-07 | 荣耀终端有限公司 | 一种负载管控方法、电子设备及存储介质 |
CN116382922A (zh) * | 2023-05-10 | 2023-07-04 | 深圳高灯计算机科技有限公司 | 资源监控方法、装置、计算机设备、存储介质和产品 |
CN116382922B (zh) * | 2023-05-10 | 2023-10-17 | 深圳高灯计算机科技有限公司 | 资源监控方法、装置、计算机设备、存储介质和产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831440B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
US11941434B2 (en) | Task processing method, processing apparatus, and computer system | |
CN106557367B (zh) | 用于为计算资源提供粒度化服务质量的装置、方法和设备 | |
CN111831437B (zh) | 设备管理方法、装置、存储介质及电子设备 | |
CN111831414A (zh) | 线程迁移方法、装置、存储介质及电子设备 | |
CN111831441A (zh) | 内存回收方法、装置、存储介质及电子设备 | |
US9201693B2 (en) | Quota-based resource management | |
CN111813520A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN111831434A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
US20210208935A1 (en) | Method for Scheduling Multi-Core Processor, Terminal, and Storage Medium | |
CN111831433A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111831410A (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN111813521A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN113495780A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN111831438A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111831435A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111831442A (zh) | 一种资源分配的方法、装置、存储介质及电子设备 | |
CN111831413A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN111831411B (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN111831436B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111475299B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111831432B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN113495787A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN117999541A (zh) | 基于资源消耗的动态策略调整 | |
CN111831443A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201027 |