CN117539614A - 资源调度方法和电子设备 - Google Patents

资源调度方法和电子设备 Download PDF

Info

Publication number
CN117539614A
CN117539614A CN202311305982.0A CN202311305982A CN117539614A CN 117539614 A CN117539614 A CN 117539614A CN 202311305982 A CN202311305982 A CN 202311305982A CN 117539614 A CN117539614 A CN 117539614A
Authority
CN
China
Prior art keywords
cpu
scheduling
scene
application
policy
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
CN202311305982.0A
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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Publication of CN117539614A publication Critical patent/CN117539614A/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/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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)

Abstract

本申请实施例提供了一种资源调度方法和电子设备,该方法包括:在检测到电子设备处理的业务所对应的用户场景发生变化的情况下,基于获取到的预设调度策略调整与CPU功耗相关的参数,该预设调度策略是能够直接被电子设备识别的调度策略,预设调度策略对应的CPU功耗大于用户场景发生变化之前所采用的调度策略对应的CPU功耗;在基于预设调度策略调整与CPU功耗相关的参数之后,基于获取到的当前用户场景对应的第一调度策略调整与CPU功耗相关的参数,当前用户场景为用户场景发生变化之后的场景,该第一调度策略是需要经过转译处理之后能够被电子设备识别的调度策略。该方法可以使电子设备减少出现运行卡顿的现象。

Description

资源调度方法和电子设备
本申请为2022年05月30日提交国家知识产权局、申请号为202210598830.3、申请名称为“资源调度方法和电子设备”的发明专利申请的分案申请。本申请要求于2022年05月16日提交国家知识产权局、申请号为202210530454.4、申请名称为“资源调度方法和电子设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及电子技术领域,具体涉及一种资源调度方法和电子设备。
背景技术
随着电子设备性能的提升,电子设备的用户场景也越来越多,例如有视频场景、跑分场景、会议场景、聊天场景等,因各种用户场景使电子设备产生的功耗以及对电子设备的续航能力的需求并不相同,那么针对不同的用户场景,电子设备会下发不同的资源调度策略,以适应当前用户场景产生的功耗和对续航能力的需求。
传统技术中,当用户使用电子设备从一个用户场景切换至另一个用户场景时,电子设备会根据另一个用户场景的特性制定并下发新的资源调度策略。但是在此切换过程中,容易导致电子设备出现运行卡顿的现象。
发明内容
本申请提供了一种资源调度方法和电子设备,能够使电子设备减少出现运行卡顿的现象。
第一方面,本申请提供一种资源调度方法,该方法由电子设备执行,包括:在检测到电子设备处理的业务所对应的用户场景发生变化的情况下,基于获取到的预设调度策略调整与CPU功耗相关的参数,该预设调度策略是能够直接被电子设备识别的调度策略,预设调度策略对应的CPU功耗大于用户场景发生变化之前所采用的调度策略对应的CPU功耗;
在基于预设调度策略调整与CPU功耗相关的参数之后,基于获取到的当前用户场景对应的第一调度策略调整与CPU功耗相关的参数,当前用户场景为用户场景发生变化之后的场景,该第一调度策略是需要经过转译处理之后能够被电子设备识别的调度策略。
其中,电子设备处理的业务所对应的用户场景也可简称为电子设备所处的用户场景,用户场景可以有多种,例如视频场景、游戏场景、办公场景等。在电子设备所处的用户场景发生变化的情况下,因针对新的用户场景制定调度策略以及向CPU下发调度策略都会产生时延,则电子设备会先基于一个预设调度策略来调整与CPU功耗相关的参数(可称为CPU功耗参数)。需要说明的是,该预设调度策略可以直接被电子设备所识别,特别是可以直接被CPU所识别,因此,CPU可直接基于该预设调度策略来调整功耗参数。可选地,上述预设调度策略的策略号可以为-1。
然后,电子设备可以在基于预设调度策略调整了与CPU功耗相关的参数之后,再基于当前用户场景对应的第一调度策略调整与CPU功耗相关的参数。其中,第一调度策略可以包括CPU功耗调度策略,还可以包括CPU功耗调度策略之外的其他硬件调度策略,例如OS调度策略等。此实现方式中,第一调度策略的制定过程可以在基于预设调度策略调整CPU功耗参数的过程中执行,也可以在调整之前执行,还可以在调整之后执行,本申请对此执行顺序不做限制。因第一调度策略是需要经过转译之后才可被CPU所识别的,因此,基于预设调度策略调整CPU功耗参数的过程需要在基于第一调度策略调整CPU功耗参数之前,这样才可以减少CPU等待第一调度策略转译的时延。
上述实现方式中,在确定电子设备所处的用户场景发生了变化之后,可以结合当前的用户场景确定对应的CPU功耗调度策略。在下发该CPU功耗调度策略之前,电子设备先下发一个预设调度策略,因该预设调度策略可直接由CPU运行,并且可以适用于电子设备的多种用户场景,因此电子设备从该预设调度策略再切换为CPU功耗调度策略时,切换过程比较平滑,可以减少电子设备运行卡顿的现象。
结合第一方面,在第一方面的有些实现方式中,在检测到电子设备处理的业务所对应的用户场景发生变化的情况下,基于获取到的预设调度策略调整与CPU功耗相关的参数,包括:在检测到用户场景发生变化,且第一CPU功耗大于第二CPU功耗的情况下,基于预设调度策略调整与CPU功耗相关的参数,第一CPU功耗为处理当前用户场景对应的业务所需的功耗,第二CPU功耗为处理用户场景发生变化之前对应的业务所需的功耗。
此实现方式中,在电子设备所处的用户场景发生变化时,若用户场景变化之后所需的CPU功耗大于用户场景变化之前所需的CPU功耗,即是从低功耗场景切换至了高功耗场景,那么,为了减少高功耗场景初始阶段的卡顿现象,则可以先基于预设调度策略调整与CPU功耗相关的参数,由此减少高功耗场景的卡顿现象。
结合第一方面,在第一方面的有些实现方式中,在基于获取到的预设调度策略调整与CPU功耗相关的参数之前,上述方法还包括:根据当前用户场景的场景标识确定第一调度策略。
此实现方式即是在检测到电子设备所处的用户场景发生变化时,会根据当前用户场景的场景标识确定其对应的第一调度策略。其中,场景标识可以为场景号(例如V01)或者场景名称等可以唯一标识场景的信息。通过该过程确定第一调度策略,可以在后续需要根据第一调度策略调整CPU功耗参数时获取该调度策略,即提供了数据基础。
结合第一方面,在第一方面的有些实现方式中,上述根据当前用户场景的场景标识确定第一调度策略,包括:根据当前用户场景的场景标识确定第二调度策略,第二调度策略包括CPU的第一长时睿频功耗PL1、第一短时睿频功耗PL2及第一能效比EPP中的至少一个策略参数;
根据第二调度策略、当前用户场景的场景标识以及电子设备当前的系统负载确定第一调度策略,第一调度策略包括CPU的第二PL1、第二PL2及第二EPP中的至少一个策略参数,其中,在系统负载大于预设的第一数值的情况下,第二PL1大于第一PL1,第二PL2大于第二PL2,第二EPP小于第一EPP。
其中,在确定第一调度策略时,电子设备可以先根据当前用户场景确定一个基础调度策略(即第二调度策略),然后再根据当前的系统负载对该基础调度策略进行微调,例如,在负载增加时,适当增加PL1、PL2,并降低EPP,可以更好的平衡电子设备的性能和功耗。
结合第一方面,在第一方面的有些实现方式中,在基于获取到的当前用户场景对应的第一调度策略调整与CPU功耗相关的参数之前,上述方法还包括:确定CPU的芯片平台类型,芯片平台类型包括第一类型或者第二类型;
相应的,基于获取到的当前用户场景对应的第一调度策略调整与CPU功耗相关的参数,包括:根据第一调度策略的策略参数以及CPU的芯片平台类型,调整与CPU功耗相关的参数。
其中,第一类型的CPU可以为的CPU芯片,第二类型的CPU可以为/> 的CPU芯片。因不同类型的CPU芯片对调度策略的处理方式不同,因此,针对不同类型的芯片平台,本申请会采取不同的处理方式,由此可提高本申请的资源调度方法的适应性。
结合第一方面,在第一方面的有些实现方式中,根据第一调度策略的策略参数以及CPU的芯片平台类型,调整与CPU功耗相关的参数,包括:在芯片平台类型为第一类型的情况下,将与CPU功耗相关的参数调整为第一调度策略的策略参数;在芯片平台类型为第二类型的情况下,根据第一调度策略的策略参数确定动态调谐技术DTT策略号;根据DTT策略号调整与CPU功耗相关的参数。
也即是说,针对和/>的CPU,本申请可以适应性匹配不同的功耗调度策略。
结合第一方面,在第一方面的有些实现方式中,上述检测到电子设备处理的业务所对应的用户场景发生变化,包括:获取电子设备当前显示的第一窗口对应的第一进程的进程信息及第一信息,第一信息包括以下信息中的至少一种:第一进程的GPU占用信息、外设事件信息或电源模式信息;根据第一进程的进程信息及第一信息确定当前用户场景的场景标识;在当前用户场景的场景标识与上一用户场景的场景标识不同的情况下,确定用户场景发生变化。
此实现方式中,电子设备可以通过当前显示窗口的进程信息及第一信息,确定当前用户场景,若当前用户场景和上一用户场景不同,则可认为用户场景发生了变化。例如,若第一进程的类型为视频类,第一进程的GPU占用率大于0,且GPU引擎为GPU视频进程引擎,确定电子所处的用户场景为视频播放场景。可以理解地,若第一进程的类型为视频类,则可以先确定用户当前正在使用视频类应用。若第一进程的GPU占用率大于0,则表明第一进程运行过程中有占用GPU的资源。若第一进程的GPU引擎为GPU video processing(视频进程)引擎,则表明第一进程在运行过程中使用GPU进行解码操作。如此,可以确定用户大概率在使用电子设备进行播放视频,即电子所处的用户场景为视频播放场景。
若第一进程的类型为视频类,第一进程的GPU占用率大于0,且GPU引擎为GPU 3D引擎,确定电子所处的用户场景为视频浏览场景。相应地,若第一进程的GPU引擎为GPU 3D引擎,则表明第一进程仅使用GPU进行2D或者3D渲染操作,可以推断用户在使用电子设备浏览视频资源,而非播放视频,即电子所处的用户场景为视频浏览场景。
若第一进程的类型为游戏类,则可以先确定用户当前正在使用游戏类应用。若第一进程的GPU占用率大于0,则表明第一进程运行过程中有占用GPU的资源。若第一进程的GPU引擎为GPU 3D引擎,则表明第一进程使用GPU进行2D或者3D渲染操作。如此,可以确定用户大概率在使用电子设备打游戏,即电子所处的用户场景为游戏场景。
结合第一方面,在第一方面的有些实现方式中,上述外设事件信息可以包括键盘输入事件、鼠标输入事件、麦克风输入事件、摄像头输入事件中的一种或多种;
若第一进程的类型为社交类,且检测到键盘输入事件,确定电子所处的用户场景为文字聊天场景。也即,若检测到用户在使用社交应用且同时在打字,则用户大概率在使用社交应用进行聊天,可以确定电子所处的用户场景为文字聊天场景。
若第一进程的类型为社交类,检测到麦克风输入事件,且未检测到摄像头输入事件,确定电子所处的用户场景为语音聊天场景。也即,若检测到用户在使用社交应用且同时在语音输入,则用户大概率在使用社交应用进行语音聊天,可以确定电子所处的用户场景为语音聊天场景。
若第一进程的类型为社交类,检测到麦克风输入事件以及摄像头输入事件,确定电子所处的用户场景为视频聊天场景。也即,若检测到用户在使用社交应用且同时在视频输入,则用户大概率在使用社交应用进行视频聊天,可以确定电子所处的用户场景为视频聊天场景。
若第一进程的类型为办公类,且检测到键盘输入事件,确定电子所处的用户场景为文档编辑场景。若检测到用户在使用办公应用且同时在打字,则用户大概率在使用办公应用编辑文档,可以确定电子所处的用户场景为文档编辑场景。
若第一进程的类型为办公类,检测到鼠标输入事件,且未检测到键盘输入事件,确定电子所处的用户场景为文档浏览场景。也即,若检测到用户在使用办公应用的过程中使用鼠标但未使用键盘,则用户大概率在使用办公应用浏览文档,可以确定电子所处的用户场景为文档浏览场景。
若第一进程的类型为办公类,检测到麦克风输入事件以及摄像头输入事件,确定电子所处的用户场景为视频会议场景。也即,若检测到用户在使用办公应用的过程中使用摄像头,则用户大概率在使用办公应用进行视频会议,可以确定电子所处的用户场景为视频会议场景。由此,可以结合外设事件信息来确定当前是哪个用户场景。
结合第一方面,在第一方面的有些实现方式中,上述电子设备包括场景识别引擎、调度引擎、基本输入输出系统BIOS、系统与芯片驱动OS2SOC节点和CPU,上述方法包括:
场景识别引擎在检测到电子设备处理的业务所对应的用户场景发生变化的情况下,根据当前用户场景的场景标识确定第二调度策略的策略参数;
场景识别引擎向调度引擎发送当前用户场景的场景标识和第二调度策略的策略参数;
调度引擎根据第二调度策略的策略参数、当前用户场景的场景标识以及电子设备当前的系统负载确定第一调度策略的策略参数;
调度引擎向BIOS发送预设调度策略的策略号;
BIOS向CPU发送预设调度策略的策略号;
CPU根据预设调度策略的策略号调整与CPU功耗相关的参数;
在CPU的芯片平台类型为第一类型的情况下,调度引擎向OS2SOC节点发送第一调度策略的策略参数,OS2SOC节点向CPU发送第一调度策略的策略参数,CPU基于第一调度策略的策略参数调整与CPU功耗相关的参数;
在CPU的芯片平台类型为第二类型的情况下,调度引擎根据第一调度策略的策略参数确定DTT策略号,向BIOS发送DTT策略号,BIOS向CPU发送DTT策略号,CPU基于DTT策略号调整与CPU功耗相关的参数。
第二方面,本申请提供一种装置,该装置包含在电子设备中,该装置具有实现上述第一方面及上述第一方面的可能实现方式中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,接收模块或单元、处理模块或单元等。
第三方面,本申请提供一种电子设备,电子设备包括:处理器、存储器和接口;处理器、存储器和接口相互配合,使得电子设备执行第一方面的技术方案中任意一种方法。
第四方面,本申请提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。
可选地,芯片还包括存储器,存储器与处理器通过电路或电线连接。
进一步可选地,芯片还包括通信接口。
第五方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得该处理器执行第一方面的技术方案中任意一种方法。
第六方面,本申请提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得该电子设备执行第一方面的技术方案中任意一种方法。
附图说明
图1是本申请实施例提供的一例用户场景发生变化时CPU功耗的变化示意图;
图2是本申请实施例提供的一例电子设备的结构示意图;
图3是本申请实施例提供的一例电子设备的软件结构框图;
图4是本申请实施例提供的一例电子设备中软件模块间的交互示意图;
图5是本申请实施例提供的另一例电子设备中软件模块间的交互示意图;
图6是本申请实施例提供的一例资源调度方法的流程示意图;
图7是本申请实施例提供的一例资源调度方法的信令交互示意图;
图8是本申请实施例提供的另一例资源调度方法的信令交互示意图;
图9是本申请实施例提供的一例窗口变化界面图;
图10是本申请实施例提供的又一例资源调度方法的信令交互示意图;
图11是本申请实施例提供的又一例资源调度方法的信令交互示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。
当前用户使用电子设备时的用户场景越来越多,例如个人计算机(personalcomputer,PC)上的视频场景、跑分场景、会议场景、聊天场景等,因各种用户场景使电子设备产生的功耗以及对电子设备的续航能力的需求并不相同,如视频场景所产生的功耗大于聊天场景所产生的功耗。那么,电子设备会针对不同的用户场景下发不同的资源调度策略,例如在视频场景可以增大中央处理器(central processing unit,CPU)的功率。
然而,当用户使用电子设备从一个用户场景切换至另一个用户场景时,例如从聊天场景切换至视频场景,则电子设备会根据另一个用户场景(如视频场景)的特性制定并下发新的资源调度策略。在此过程中,因电子设备前台已从一个用户场景切换至了另一个用户场景,但电子设备后台还在制定新的资源调度策略,那么在切换至另一个用户场景的初始阶段,该用户场景仍使用的是上一个用户场景的资源调度策略,中间存在切换时延。如果这样,在从一个低功耗的用户场景切换至一个高功耗的用户场景的情况下,高功耗的用户场景在初始阶段会使用低功耗的用户场景对应的资源调度策略,这可能无法满足高功耗的用户场景的需求,就会导致电子设备出现运行卡顿的现象。示例性地,请参见图1,t时刻为电子设备前台的用户场景的切换时刻,但新的资源调度策略生效时刻为t’,由图示可以看出,在t’时刻在t时刻之后,在t时刻到t’时刻之间的这一时间段,前台已切换至高功耗的用户场景,但电子设备仍使用的是低功耗的用户场景对应的资源调度策略。
有鉴于此,本申请实施例提供的一种资源调度方法,可以应用于笔记本电脑、PC、超级移动个人计算机(ultra-mobile personal computer,UMPC)等电子设备上,在用户使用电子设备进行用户场景切换时,电子设备可以先下发一个预设的资源调度策略,该预设的资源调度策略可以满足大多数用户场景的需求,那么在所切换的用户场景的初始阶段,可以使用该预设的资源调度策略以满足新的用户场景的需求,减少电子设备运行卡顿的现象。需要说明的是,本申请实施例对电子设备的具体类型不作任何限制。
为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:
焦点窗口(focus window),指拥有焦点的窗口。焦点窗口是唯一可以接收键盘输入的窗口。焦点窗口的确定方式与系统的焦点模式(focus mode)关联。焦点窗口的顶层窗口被称为活动窗口(active window)。同一时间只有一个窗口可以是活动窗口。焦点窗口大概率为用户当前需要使用的窗口。
焦点模式,可用于决定鼠标如何使一个窗口获得焦点。一般地,焦点模式可包括三种,分别为:
(1)点击聚焦(click-to focus),在这种模式下,鼠标点击的窗口即可获得焦点。即当鼠标点击一个可以获得焦点的窗口的任意位置,即可激活该窗口,该窗口便被置于所有窗口的最前面,并接收键盘输入。当鼠标点击其他窗口时,该窗口会失去焦点。
(2)焦点跟随鼠标(focus-follow-mouse),在这种模式下,鼠标下的窗口可以获取焦点。即当鼠标移到一个可以获得焦点的窗口的范围内,用户不需要点击窗口的某个地方就可以激活这个窗口,接收键盘输入,但该窗口不一定被置于所有窗口的最前面。当鼠标移出这个窗口的范围时,这个窗口也会随之失去焦点。
(3)草率聚焦(sloppy focus),这种焦点模式与focus-follow-mouse比较类似:当鼠标移到一个可以获得焦点的窗口的范围内,用户不需要点击窗口的某个地方就可以激活这个窗口,接收键盘输入,但该窗口不一定被置于所有窗口的最前面。与focus-follow-mouse不同的是,当鼠标移出这个窗口范围时,焦点并不会随之改变,只有当鼠标移动到别的可以接收焦点的窗口时,系统焦点才改变。
进程包括多个线程,线程可以创建窗口。焦点进程为创建焦点窗口的线程所属的进程。
(4)长时睿频功耗(power limit1,PL1),指CPU在正常负载下的功耗,相当于热设计功耗,CPU绝大部分时间的运行功耗不超过PL1。
(5)短时睿频功耗(power limit2,PL2),指CPU在短时间内可达到的最高功耗,其具有持续时间限制。一般地,PL2大于PL1。
(6)CPU能效比(energy performance preference,EPP),用于反映CPU的调度倾向,其取值范围为0~255。CPU能效比越小,则表明CPU趋向于高性能;CPU能效比越高,则表明CPU趋向于低功耗。
(7)转译,指对某个形式的参数或数据进行转换处理,得到另一个形式的参数或数据,该另一个形式的参数或数据可以被指定平台所识别。例如,电子设备可以对获得的策略参数进行转译,得到CPU芯片平台能够识别的参数。
在此基础上,示例性地,图2为本申请实施例提供的电子设备100的结构示意图。如图2所示,电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,无线通信模块150,显示屏160等。
可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括I2C接口,集成电路内置音频(inter-integrated circuit sound,I2S)接口,脉冲编码调制(pulsecodemodulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或USB接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏160,和无线通信模块150等供电。在一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
无线通信模块150可以提供应用在电子设备100上的包括WLAN(如Wi-Fi),蓝牙,全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。例如,本申请实施例中,电子设备100可以通过无线通信模块150与终端设备(如无线耳机100)建立蓝牙连接。
无线通信模块150可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块150经由天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块150还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线转为电磁波辐射出去。
电子设备100通过GPU,显示屏160,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏160和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏160用于显示图像,视频等。该显示屏160包括显示面板。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。例如,在本申请实施例中,处理器110可以通过执行存储在内部存储器121中的指令,内部存储器121可以包括存储程序区和存储数据区。
其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflash storage,UFS)等。
上述电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Windows系统为例,示例性说明电子设备100的软件结构。
示例性地,图3为本申请实施例的电子设备100的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Windows系统分为用户态和内核态。其中,用户态包括应用层以及子系统动态链接库。内核态自下而上分为硬件层、固件层、硬件抽象层(hardware abstraction layer,HAL)、内核和驱动层及执行体。
如图3所示,应用层包括音乐、视频、游戏、办公、社交等应用程序。应用层还包括环境子系统、场景识别引擎以及调度引擎等。其中,图中仅示出部分应用程序,应用层还可以包括其他应用程序,例如购物应用、浏览器等,本申请不做限定。在一个实施例中,环境子系统、场景识别引擎和调度引擎可以集成在PC管家应用程序中。
环境子系统可以将基本的执行体系统服务的某些子集以特定的形态展示给应用程序,为应用程序提供执行环境。
场景识别引擎可以识别电子设备100所处的用户场景,并确定与该用户场景匹配的基础调度策略(也可称为第二调度策略)。调度引擎可以获取电子设备100的负载情况,并结合电子设备100的负载情况及上述基础调度策略确定符合电子设备100实际运行情况的实际调度策略(也可称为第一调度策略)。其中,关于场景识别引擎和调度引擎的具体内容见后文,在此暂不描述。
子系统动态链接库包括API模块,该API模块包括Windows API,Windows原生API等。其中,Windows API,Windows原生API均可以为应用程序提供系统调用入口及内部函数支持,区别在于Windows原生API为Windows系统原生的API。例如,Windows API可包括user.dll、kernel.dll,Windows原生API可包括ntdll.dll。其中,user.dll是Windows用户界面接口,可用于执行创建窗口、发送消息等操作。kernel.dll用于为应用程序提供访问内核的接口。ntdll.dll是重要的Windows NT内核级文件,描述了Windows本地NTAPI的接口。当Windows启动时,ntdll.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
执行体包括进程管理器、虚拟内存管理器、安全引用监视器、I/O管理器、Windows管理规范(windows management instrumentation,WMI)、电源管理器、系统事件驱动(operating system event driver,OsEventDriver)节点、系统与芯片驱动(operatingsystem to system on chip,OS2SOC)节点等。
进程管理器用于创建及中止进程和线程。
虚拟内存管理器实现“虚拟内存”。虚拟内存管理器也为高速缓存管理器提供基本的支持。
安全引用监视器可在本地计算机上执行安全策略,它保护了操作系统资源,执行运行时对象的保护和监视。
I/O管理器执行独立于设备的输入/输出,并进一步处理调用适当的设备驱动程序。
电源管理器可管理所有支持电源状态更改的设备的电源状态更改。
系统事件驱动节点可以与内核和驱动层进行交互,例如与显卡驱动进行交互,在确定存在GPU视频解码事件后,向场景识别引擎上报该GPU视频解码事件。
系统与芯片驱动节点可供调度引擎向硬件设备发送调整信息,例如向CPU发送调整PL1和PL2的信息。
内核和驱动层包括内核以及设备驱动程序。
内核是对处理器体系结构的抽象,将执行体与处理器体系结构的差异相隔离,保证系统的可移植性。内核可以进行线程安排和调度、陷阱处理和异常调度、中断处理和调度等。
设备驱动程序运行在内核模式下,为I/O系统和相关硬件之间的接口。设备驱动程序可包括显卡驱动、Intel DTT驱动、鼠标驱动、音视频驱动、摄像头驱动、键盘驱动等。例如,显卡驱动可以驱动GPU运行,Intel DTT驱动可以驱动CPU运行。
HAL是一个核心态模块,可以隐藏各种与硬件有关的细节,例如I/O接口、中断控制器以及多处理器通信机制等,为运行Windows的不同硬件平台提供统一的服务接口,实现多种硬件平台上的可移植性。需要说明的是,为了维护Windows的可移植性,Windows内部组件和用户编写的设备驱动程序并不直接访问硬件,而是通过调用HAL中的例程。
固件层可以包括基本输入输出系统(basic input output system,BIOS),BIOS是一组固化到计算机主板上一个只读存储器(read only memory,ROM)芯片内的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。例如,IntelDTT驱动可以通过BIOS向CPU发送指令的。可选地,固件层还可以包括嵌入式控制器(embedded controller,EC),其可以接收硬件层传递的参数,并进行相应处理后发送至BIOS,由BIOS再向上层传递。
硬件层可以包括GPU、CPU、鼠标、麦克风、摄像头、键盘等硬件结构。
需要说明的是,本申请实施例仅以Windows系统举例来说明,在其他操作系统中(例如安卓系统,IOS系统等),只要各个功能模块实现的功能和本申请的实施例类似也能实现本申请的方案。
图4示出了电子设备100对资源进行调度的软件及硬件的工作流程示意图。
如图4所示,应用层的场景识别引擎包括系统探针模块、场景识别模块及基础策略匹配管理器。场景识别模块可分别与系统探针模块及基础策略匹配管理器进行交互。场景识别模块可以向系统探针模块发送获取探针状态的请求。系统探针模块可以获取电子设备100的运行状态。例如,系统探针模块可以包括电源状态探针、外设状态探针、进程负载探针、音视频状态探针、系统负载探针及系统事件探针等。
其中,电源状态探针可以向内核态订阅电源状态事件,根据内核态反馈的回调函数确定电源状态,电源状态包括电池(剩余)电量、电源模式等,电源模式可包括交流电源(alternating current,AC)和直流电源(direct current,DC)。例如,电源状态探针可向执行体层的OsEventDriver节点发送订阅电源状态事件的请求,由OsEventDriver节点向执行体层的电源管理器转发该请求。电源管理器可通过该OsEventDriver节点向电源状态探针反馈回调函数。
外设状态探针可以向内核态订阅外设事件,根据内核态反馈的回调函数确定外设事件。外设事件包括鼠标滚轮滑动事件、鼠标点击事件、键盘输入事件、麦克风输入事件、摄像头输入事件等。
进程负载探针可以向内核态订阅进程负载,根据内核态反馈的回调函数确定进程(例如,第一进程)的负载。
系统负载探针可以向内核态订阅系统负载,根据内核态反馈的回调函数确定系统负载。
音视频状态探针可向内核态订阅音视频事件,根据内核态反馈的回调函数确定电子设备100当前存在的音视频事件。音视频事件可包括GPU解码事件等。例如,音视频状态探针可向执行体层的OsEventDriver节点发送订阅GPU解码事件的请求,由OsEventDriver节点向内核和驱动层的显卡驱动转发该请求。显卡驱动可以监控GPU的状态,在监控到GPU在进行解码操作后,通过该OsEventDriver节点向音视频状态探针反馈回调函数。
系统事件探针可以向内核态订阅系统事件,根据内核态反馈的回调函数确定系统事件。系统事件可包括窗口变化事件、进程创建事件、线程创建事件等。例如,系统事件探针可向执行体层的OsEventDriver节点发送订阅进程创建事件的请求,由OsEventDriver节点向进程管理器转发该请求。进程管理器可在创建进程后,通过该OsEventDriver节点向系统事件探针反馈回调函数。又例如,系统事件探针还向API模块发送订阅焦点窗口变化事件,API模块可监控电子设备100的焦点窗口是否发生变化,并在监控到焦点窗口发生变化时,向系统事件探针反馈回调函数。
可见,系统探针模块通过向内核态订阅电子设备100的各种事件,再根据内核态反馈的回调函数确定电子设备100的运行状态,即得到探针状态。系统探针模块得到探针状态后,可向场景识别模块反馈该探针状态。场景识别模块接收到探针状态后,可根据该探针状态确定电子设备100所处的用户场景。该用户场景可包括视频场景、游戏场景、办公场景及社交场景等。用户场景可以反映用户当前的使用需求。例如,场景识别引擎在识别出焦点窗口为视频应用的窗口时,确定出电子设备100处于视频场景,这说明用户需要使用视频应用观看、浏览视频。又例如,场景识别引擎识在识别出焦点窗口为微信TM的聊天窗口时,确定电子设备100处于社交场景。通常情况下,场景识别模块通过上述探针状态确定到电子设备的用户场景发生变化时(例如探针状态发生变化可认为用户场景发生变化),还可向基础策略匹配管理器发送该用户场景,以使基础策略匹配管理器根据新的用户场景确定新的调度策略(也可称为第二调度策略,具体可以参见下文S301、S302中的说明)。然后,基础策略匹配管理器可向场景识别模块反馈该基础调度策略。场景识别模块再向应用层的调度引擎发送该基础调度策略及用户场景。
如图4所示,调度引擎包括负载管控器、芯片策略融合器以及调度执行器。其中,负载管控器可接收场景识别模块发送的基础调度策略及用户场景。负载管控器还可从系统探针模块获取系统负载,并根据系统负载和用户场景对该基础调度策略进行调整,得到实际调度策略(也可称为第一调度策略,具体可以参见下文S310中的说明)。实际调度策略中包括OS调度策略和第一CPU功耗调度策略(也可称为第一子策略)。
负载管控器确定了第一调度策略后,可以向调度执行器发送上述第一调度策略中的OS调度策略,由调度执行器基于该OS调度策略进行调度。OS调度策略用于调整焦点进程的进程优先级及I/O优先级。示例性的,调度执行器可向进程管理器发送调整焦点进程的进程优先级的指令,响应于该指令,进程管理器对焦点进程的进程优先级进行调整。又例如,调度执行器可向I/O管理器发送调整焦点进程的I/O优先级的指令,响应于该指令,I/O管理器对焦点进程的I/O优先级进行调整。
同时,负载管控器还可以将第一调度策略中的第一CPU功耗调度策略发送至芯片策略融合器。芯片策略融合器接收到第一CPU功耗调度策略后,将该第一CPU功耗调度策略下发之前通常需要根据CPU的芯片平台类型对该第一CPU功耗调度策略进行转译,使得转译后的第一CPU功耗调度策略适应于CPU的芯片平台类型,这一转译过程会产生时延。因此,为减少第一CPU功耗调度策略的转译时延,本申请实施例中芯片策略融合器会先下发一个预设调度策略(该预设调度策略可以适应于各CPU芯片平台,且不需要进行转译),将该预设调度策略发送至调度执行器,继而由调度执行器通过WMI插件发送至Intel DTT驱动,再通过BIOS发送至CPU。
在芯片策略融合器下发预设调度策略的过程中,可以同时对上述第一CPU功耗调度策略进行转译。因CPU的芯片平台类型主要分为两种,分别为超威半导体公司(advanced micro devices,AMD)的CPU和/>的CPU,这两类CPU对于CPU功耗的调整方式并不相同,因此需要进行区分。
若CPU的芯片平台类型为AMD(也可以称为第一类型),调度执行器可以向电源管理器发送根据第一CPU功耗调度策略调整EPP的指令,以调整CPU的EPP。另外,调度执行器还可以向OS2SOC驱动节点发送根据第一CPU功耗调度策略调整PL1、PL2的指令,以调整CPU的PL1和PL2。
若CPU的芯片平台类型为芯片策略融合器需先基于该第一CPU功耗调度策略,得到第二CPU功耗调度策略(也可称为第二子策略,具体可以参见下文S329~S333中的说明)。调度执行器可以通过WMI插件向Intel DTT驱动发送该第二CPU功耗调度策略,第二CPU功耗调度策略可包括PL1的最小值、PL1的最大值、PL2、PL2的持续时间及EPP,由IntelDTT驱动CPU基于该第二CPU功耗调度策略运行。
然后,若CPU接收到了上述调整后的第一调度策略,则可以将预设调度策略切换为该第一调度策略,因预设调度策略和第一调度策略都是适应于当前的用户场景的,因此,此切换过程比较平滑,减少了电子设备运行卡顿的现象。
由上述图4的工作流程可知,本申请实施例所提供的资源调度方法,主要包括两个过程,分别为:(1)确定电子设备所处的用户场景发生变化;(2)下发新的用户场景对应的调度策略之前,先下发预设调度策略。下面将结合附图分别说明上述两个过程。可以理解,这两个过程可由图2所示的电子设备执行,也可由图4所示的电子设备中各模块执行。
为更方便了解本申请实施例提供的资源调度方法,先结合上述图4简化说明本申请实施例涉及的软件架构,如图5所示,该软件架构包括:场景识别引擎、调度引擎、BIOS和CPU。
其中,场景识别引擎识别到电子设备所处的用户场景发生变化后,根据新的用户场景确定该用户场景对应的调度策略。然后场景识别引擎将该调度策略中的CPU功耗调度策略发送至调度引擎。因调度引擎对该CPU功耗调度策略进行转译时会产生时延,因此,调度引擎此时先向BIOS下发一个预设调度策略,使BIOS调度CPU基于预设调度策略运行。
然后,调度引擎再对上述CPU功耗调度策略进行转译,得到对应的策略号,并将转译的策略号发送至BIOS,使BIOS调度CPU基于该策略号运行。因上述预设调度策略可以适应于各CPU芯片平台,且不需要进行转译,因此,CPU可以在等待调度引擎转译时基于预设调度策略运行,不再基于用户场景变化前的调度策略运行,减少了电子设备运行卡顿的现象。
下面介绍本申请实施例提供的资源调度方法的具体过程,如图6所示,该方法可以由电子设备执行,包括:
S1、在检测到电子设备所处的用户场景发生变化的情况下,根据当前用户场景的场景标识确定对应的CPU功耗调度策略。
其中,检测电子设备的用户场景发生变化的过程和确定当前用户场景确定对应的CPU功耗调度策略的过程详见下述实施例的描述。可选地,电子设备在检测到所处的用户场景发生变化时,可以设置一个标识,例如标识1表示用户场景发生变化。可选地,当前用户场景的场景标识可以为场景号、场景名称等可以唯一标识一个场景的信息;所确定的CPU功耗调度策略可以包括策略参数,例如PL1、PL2和EPP等参数,也可以包括策略号,例如策略1、策略2等,策略号和策略参数之间可以具有对应关系。
S2、获取预设调度策略的策略号。
可选地,该预设调度策略的策略号可以为-1,表征电子设备处于高功耗状态时的调度策略,因此,其可以适用于电子设备的多种用户场景。例如,预设调度策略的策略参数可以为PL1为35W,PL2为60W,EPP为180。
S3、将预设调度策略的策略号发送至CPU,使CPU基于预设调度策略的策略号运行。
这里,为减少电子设备等待对CPU功耗调度策略进行转译的时间,可以先将预设调度策略的策略号下发至CPU,使CPU在高功耗状态下运行,减少卡顿现象。在一个实现方式中,CPU接收到上述预设的策略号后,可以根据该策略号获取对应的策略参数,进而根据获取的策略参数调整运行状态;此处需要说明的是,该预设调度策略的策略号可以适应于的CPU和/>的CPU,不需要进行转译。
S4、对上述S1中所确定的CPU功耗调度策略进行转译,确定转译后的CPU功耗调度策略。
S5、将转译后的CPU功耗调度策略发送至CPU,使CPU基于该CPU功耗调度策略运行。
在CPU基于预设调度策略运行的同时,电子设备可以对上述确定的CPU功耗调度策略进行转译,继而使CPU的调度策略由预设调度策略切换为转译后的CPU功耗调度策略,完成平滑过渡过程。其中,S4中对CPU功耗调度策略进行转译的过程可以详见下述实施例的描述。
在一个实施例中,上述S1中确定了电子设备所处的用户场景发生变化后,可以先判断电子设备的用户场景是否是从低功耗场景变化为高功耗场景,例如从办公场景切换为视频场景等,若是,则执行S2-S3下发预设调度策略的步骤;若电子设备的用户场景是从高功耗场景变化为低功耗场景,则可以不执行S2-S3的步骤。对于判断电子设备的用户场景是否是从低功耗场景变化为高功耗场景的过程可以为:预先设置一个场景等级表,为各个用户场景分配等级,例如所需的CPU功耗越高则等级越高,如办公场景等级为2,视频场景等级为5;若变化后的用户场景的等级高于变化前的用户场景的等级,则可以确定电子设备的用户场景是从高功耗场景变化为低功耗场景。
在另一个实施例中,为进一步减少电子设备的卡顿现象,电子设备可以在S1检测到电子设备所处的用户场景发生变化的情况下,同时执行根据当前用户场景确定对应的CPU功耗调度策略与S2-S3的过程,或者先执行S2-S3的过程,再执行根据当前用户场景确定对应的CPU功耗调度策略,即一旦检测到用户场景发生变化便下发预设调度策略,进一步减少等待下发CPU功耗调度策略的时间。
本申请实施例中,电子设备确定电子设备所处的用户场景发生了变化之后,可以结合当前的用户场景确定对应的CPU功耗调度策略。在下发该CPU功耗调度策略之前,电子设备先下发一个预设调度策略,因该预设调度策略可直接由CPU运行,并且可以适用于电子设备的多种用户场景,因此电子设备从该预设调度策略再切换为CPU功耗调度策略时,切换过程比较平滑,可以减少电子设备运行卡顿的现象。
结合上述图5的软件架构和图6所示的流程图,下面再以一个实施例介绍本申请实施例提供的资源调度方法,如图7所示,具体可以包括:
S11、场景识别引擎在检测到电子设备所处的用户场景发生变化的情况下,根据当前用户场景的场景标识确定对应的CPU功耗调度策略1。
其中,场景识别引擎检测电子设备的用户场景发生变化的过程可参见下述图8所示的实施例的过程。可选地,场景识别引擎确定了电子设备的用户场景发生变化后,还可以获取当前用户场景的场景标识,例如当前用户场景的场景号。
其中,场景识别引擎确定CPU功耗调度策略1的过程可参见下述图10所示的实施例中S301-S303的过程。
S12、场景识别引擎将当前用户场景的场景标识和CPU功耗调度策略1发送至调度引擎。
在一个实现方式中,场景识别引擎可以将当前用户场景的场景号和CPU功耗调度策略1对应的策略参数发送至调度引擎。在另一个实现方式中,场景识别引擎可以将当前用户场景的场景号和CPU功耗调度策略1对应的策略号发送至调度引擎,因CPU功耗调度策略1对应的策略号与策略参数可以具有对应关系,那么通过策略号便可查找到对应的策略参数。
S13、调度引擎根据CPU功耗调度策略1、当前用户场景的场景标识和系统负载确定CPU功耗调度策略2。
其中,系统负载可以根据电子设备当前运行的进程数类确定,例如进程数越多系统负载越重,进程数越少系统负载越轻;调度引擎确定CPU功耗调度策略2的过程可参见下述图10所示的实施例中S304-S310的过程。
S14、调度引擎将预设调度策略的策略号发送至BIOS。
可以理解,调度引擎可通过WMI向BIOS发送预设调度策略的策略号。
S15、BIOS将预设调度策略的策略号发送至CPU,使CPU基于预设调度策略的策略号运行。
CPU基于预设调度策略的策略号运行即是将CPU的功耗参数(如PL1、PL2和EPP参数)调整为预设调度策略对应的策略参数。在一个实现方式中,S14-S15的过程可以在S13之前执行,以进一步减少CPU的等待时间,从而减少电子设备的卡顿现象。
需要说明的是,本申请实施例对上述S12-S13的过程与S14-S15的过程的执行顺序不做限制,即可以在用户场景发生变化时先执行S12-S13再执行S14-S15,或者先执行S14-S15再执行S12-S13。
S16、调度引擎对CPU功耗调度策略2进行转译,得到转译后的CPU功耗调度策略2。
S17、调度引擎将转译后的CPU功耗调度策略2发送至BIOS。
S18、BIOS将转译后的CPU功耗调度策略2发送至CPU,使CPU基于CPU功耗调度策略2运行。
其中,调度引擎对CPU功耗调度策略2进行转译可以是基于CPU的平台类型对CPU功耗调度策略2中的策略参数进行转译的过程,S16-S18中调度引擎对CPU功耗调度策略2进行转译并下发的过程可以参见下述图11所示的实施例的描述。待CPU功耗调度策略2转译后,便可将CPU的功耗参数调整为CPU功耗调度策略2对应的策略参数。
本申请实施例中,电子设备确定电子设备所处的用户场景发生了变化之后,可以结合当前的用户场景确定对应的CPU功耗调度策略。在下发该CPU功耗调度策略之前,电子设备先下发一个预设调度策略,因该预设调度策略可直接由CPU运行,并且可以适用于电子设备的多种用户场景,因此电子设备从该预设调度策略再切换为CPU功耗调度策略时,切换过程比较平滑,可以减少电子设备运行卡顿的现象。
对于上述S11的过程,以电子设备从办公场景变换为视频场景为例,如图8所示,确定电子设备所处的用户场景发生变化的流程如下:
S101、系统探针模块向OsEventDriver节点发送订阅进程创建事件的请求。
如图4所示,场景识别引擎包括系统探针模块,系统探针模块包括系统事件探针。在本申请实施例中,可以由系统事件探针向位于执行体层的OsEventDriver节点发送订阅进程创建事件的请求。其中,订阅进程创建事件的请求也可以称为第一请求。
在一种可选的实施方式中,订阅进程创建事件的请求可以携带有进程名称,即场景识别引擎可以仅订阅指定进程的创建事件,减少不相干进程的创建事件的干扰。例如,指定进程可以为视频应用的进程、游戏应用的进程、办公应用的进程、社交应用的进程等等。当然,在其他实施方式中,场景识别引擎也可以不对订阅的进程创建事件做出限制。
S102、OsEventDriver节点向进程管理器发送订阅进程创建事件的请求。
进程创建事件的请求可以参考S101的描述,在此不做赘述。
也就是说,场景识别引擎的系统事件探针可以通过OsEventDriver节点向进程管理器发送订阅进程创建事件的请求。
可以理解地,OsEventDriver节点会向进程管理器注册一个回调,注册该回调的作用是当进程管理器创建进程后,可以向OsEventDriver节点返回该进程创建事件。
S103、系统探针模块向OsEventDriver节点发送订阅GPU解码事件的请求。
仍然如图4所示,系统探针模块还包括音视频状态探针。在本申请实施例中,可以由系统探针模块的音视频状态探针向OsEventDriver节点发送订阅GPU解码事件的请求。其中,订阅GPU解码事件的请求也可以称为第三请求。
S104、OsEventDriver节点向显卡驱动发送订阅GPU解码事件的请求。
也就是说,场景识别引擎的音视频状态探针可以通过OsEventDriver节点向显卡驱动发送订阅GPU解码事件的请求。同样地,OsEventDriver节点可向显卡驱动注册一个回调,注册该回调的作用是当显卡驱动监控到GPU进行解码操作后,可以向OsEventDriver节点返回该GPU解码事件。
S105、系统探针模块向API模块发送订阅焦点窗口变化事件的请求。
API模块可包括由user32.dll实现的Windows用户界面接口,该接口可用于创建窗口。在一种可选的实施方式中,可以由系统探针模块的系统事件探针向API模块的Windows用户界面接口发送订阅焦点窗口变化事件的请求。其中,订阅焦点窗口变化事件的请求也可以称为第二请求。
同样地,该系统事件探针可向API模块注册一个回调,注册该回调的作用是当API模块(的Windows用户界面接口)监控到焦点窗口发生变化时,可以向系统事件探针返回该焦点窗口变化事件。
焦点窗口为拥有焦点的窗口,大概率为用户当前需要使用的窗口。因此,通过监控焦点窗口,可以确定用户的使用需求。例如,焦点窗口为视频应用的窗口,则表明用户需求浏览、播放视频。又例如,焦点窗口为游戏应用的窗口,则表明用户需求打游戏。通过监控焦点窗口是否发生变化,可以确定用户需求是否发生改变。例如,焦点窗口由视频应用的窗口变为游戏应用的窗口,则表明用户当前的需求由看视频变成了打游戏。可以理解,若焦点窗口发生了变化,即用户需求发生了变化,也可确定是当前的用户场景发生了变化。
需要说明的是,上述S101、S103及S105之间没有严格的先后顺序,其可以按照图8中所示的顺序依次执行,也可以同时执行,也可以按照S103、S101、S105的顺序依次执行、按照S103、S105、S101的顺序依次执行、按照S105、S101、S103的顺序依次执行或者按照S105、S103、S101的顺序依次执行。相应地,S102、S104及S106之间也没有严格的先后顺序,只要满足S102在S101之后执行、S104在S103之后执行以及S106在S105之后执行即可,在此不做具体限制。
上述系统探针模块已经订阅了各种事件的请求后,在电子设备的用户场景发生变化时,系统探针模块便可以监听到该变化事件。下面以电子设备的用户场景从办公场景变化为视频场景为例进行描述。
S106、响应于接收到的用户开启视频应用的操作,视频应用向进程管理器发送创建进程请求。
其中,创建进程请求包括视频应用程序的存储地址。
可选地,视频应用可以通过API模块的kernel32.dll接口及Ntdll.dll接口向进程管理器发送创建进程的请求(图未示)。
S107、进程管理器创建视频应用进程。
具体的,进程管理器可以通过上述存储地址查询到视频应用程序的二进制文件。通过加载视频应用程序的二进制文件,可以创建进程运行的环境,启动视频应用进程。
其中,Windows操作系统将一个应用程序的一次运行定义为一个进程。一个进程可以拥有多个线程。窗口是窗口结构的实例,是一种图形用户界面(graphical userinterface,GUI)资源,窗口是由线程创建的,线程可以拥有它所创建的所有窗口。在本申请实施例中,电子设备运行视频应用,则进程管理器需创建该视频应用的进程,即视频应用进程(即第一进程)。视频应用进程包括多个线程,多个线程包括线程1,线程1可用于创建视频应用的主窗口,主窗口为集成有视频应用全部功能按键的窗口。
S108、进程管理器向OsEventDriver节点上报进程创建事件。
其中,进程创建事件可包括进程管理器所创建的进程的名称。在本申请实施例中,该进程的名称为视频应用进程的名称。当然,若进程管理器创建的是其他应用的进程,该进程的名称也对应为其他应用进程的名称。
前文已经说明,OsEventDriver节点向进程管理器发送了订阅进程创建事件的请求,且注册了回调。因此,进程管理器在创建视频应用进程后可向OsEventDriver节点上报进程创建事件。
S109、OsEventDriver节点向系统探针模块上报进程创建事件。
其中,关于进程创建事件的描述见S108,在此不再赘述。
在本申请实施例中,该OsEventDriver节点可向系统探针模块的系统事件探针上报该进程创建事件。
S110、系统探针模块向场景识别模块发送进程创建事件。
S111、响应于线程1的调用请求,API模块创建窗口1。
进程管理器创建视频应用进程后,视频应用进程的线程1主动调用API模块的Windows用户界面接口创建窗口1。示例性的,如图9中(a)所示,电子设备可以显示窗口101,该窗口101为办公界面。电子设备可以接收用户点击桌面上视频应用的图标102的操作,响应于该操作,如图9中的(b)所示,电子设备显示窗口103(即窗口1,也可以称为第一窗口)。在上述过程中,焦点窗口由原本的窗口101变为窗口103。
S112、API模块向系统探针模块上报焦点窗口事件。
在本申请实施例中,API模块的Windows用户界面接口创建窗口1后,可以获取第一进程(即焦点进程)的名称及第二进程的名称,第一进程为当前的焦点窗口(即窗口1)对应的进程,第二进程为上一个焦点窗口(例如,窗口2)对应的进程。示例性的,窗口1对应的进程为视频应用进程(第一进程),该进程的名称例如为hlive.exe,窗口2对应的进程为办公应用进程(第二进程),该进程的名称例如为word.exe。由于第一进程的名称与第二进程的名称不一致,API模块确定焦点窗口发生变化,向系统探针模块的系统事件探针上报焦点窗口事件。其中,焦点窗口变化事件包括第一进程(即焦点进程)的名称。示例性的,第一进程为视频应用进程,焦点窗口变化事件携带有视频应用进程的名称。
需要说明的是,在电子设备已经启动视频应用的情况下,电子设备可以不用执行S106~S111。在系统探针模块向API模块发送订阅焦点窗口变化事件的请求后,若用户将焦点窗口切换为视频应用的窗口,API模块同样可以检测到焦点窗口发生变化,并向系统探针模块上报焦点窗口事件。
S113、系统探针模块向场景识别模块发送焦点窗口事件。
S114、场景识别模块确定第一进程所属的类型为视频类。
电子设备可以预先配置有应用名单,场景识别模块可以查询应用名单中是否包括第一进程。若应用名单中包括第一进程,场景识别模块可以确定第一进程所属的类型。其中,应用名单包括每个应用的进程名称及应用所属的类型。示例性的,应用名单可以如表1所示:
表1
应用 进程名称 类型
视频 hlive.exe 视频类
Word word.exe 办公类
射击游戏 shot.exe 游戏类
微信 wechat.exe 社交类
…… …… ……
例如,第一进程的名称为hlive.exe,则场景识别模块可以确定第一进程所属的类型为视频类。又例如,第一进程的名称为wechat.exe,则场景识别模块可以确定第一进程所属的类型为社交类。需要说明的是,上述表1仅作为示例,实际上表1还可包括更多应用的进程名称及其所属的类型。
需要说明的是,此步骤的目的在于初步判断电子设备所处的用户场景。电子设备所处的用户场景可包括视频场景、游戏场景、社交场景、办公场景、浏览器场景等等。其中,视频场景进一步可包括视频播放场景、视频浏览场景。社交场景进一步可包括文字聊天场景、语音聊天场景、视频聊天场景等。办公场景进一步可包括文档编辑场景、文档浏览场景、视频会议场景等。浏览器场景可包括浏览网页场景及播放视频场景等。
在本步骤中,通过第一进程所属的类型,可以确定电子设备所处的用户场景的类型。例如,若确定第一进程所属的类型为视频类,则可以确定电子设备处于视频场景;又例如,若确定第一进程所属的类型为游戏类,则可以确定电子设备处于游戏场景。并且,由于第一进程的名称和第二进程的名称不一致,则可以确定电子设备的用户场景发生了变化。
为了进一步分析用户需求,场景识别模块还可以进一步结合其他参数(例如,外设事件、GPU运行状态等)来分析电子设备所处的具体场景,以达到分析结果更加准确的效果,继续以视频场景为例,其具体过程可以包括:
S115、响应于接收到的用户播放视频的操作,视频应用向API模块发送视频播放指令。
具体的,视频应用可向API模块的DirectX API发送该视频播放指令。该视频播放指令可包括视频的缓存地址。
S116、API模块读取视频文件。
API模块可根据视频播放指令中携带的缓存地址,读取对应的视频文件。
S117、API模块向显卡驱动发送解码指令。
S118、显卡驱动向GPU发送启动指令。
S119、GPU进行解码。
具体的,GPU可通过GPU video processing引擎对该视频文件进行解码操作。
S120、GPU向显卡驱动上报解码事件。
S121、显卡驱动向OsEventDriver节点上报解码事件。
S122、OsEventDriver节点向系统探针模块上报解码事件。
具体的,OsEventDriver节点向系统探针模块的音视频状态探针上报该解码事件。
S123、系统探针模块向场景识别模块发送解码事件。
S124、场景识别模块向系统探针模块发送指令1。
其中,指令1指示系统探针模块获取第一进程的GPU占用率。该指令1可携带有第一进程的名称。
S125、系统探针模块向进程管理器发送获取第一进程的GPU占用率的请求。
其中,该获取焦点进程的GPU占用率的请求可以包括第一进程的名称。
在一种可选的实施方式中,可以由系统探针模块的音视频状态探针向进程管理器发送获取第一进程的GPU占用率的请求。
S126、进程管理器采集第一进程的GPU占用率。
具体的,进程管理器可以通过显卡驱动的图像核心(graphics kernel)接口采集第一进程的GPU占用率。
S127、进程管理器向系统探针模块发送第一进程的GPU占用率。
进程管理器可向系统探针模块的音视频状态探针发送第一进程的GPU占用率。
S128、系统探针模块向场景识别引擎发送第一进程的GPU占用率。
S129、场景识别模块判断第一进程的GPU占用率是否大于0。
其中,若第一进程的GPU占用率大于0,则执行S130。
通过第一进程的GPU占用率,可以确定第一进程在运行过程中是否使用GPU,若第一进程的GPU占用率大于0,则可以认为第一进程在运行过程中使用了GPU;若第一进程的GPU占用率为0,则表明第一进程在运行过程中未使用GPU。
S130、场景识别模块向系统探针模块发送指令2。
其中,指令2指示系统探针模块获取第一进程的GPU引擎。该指令2可携带有第一进程的名称。
S131、系统探针模块向进程管理器发送获取第一进程的GPU引擎的请求。
其中,可以由系统探针模块的音视频状态探针向进程管理器发送获取第一进程的GPU引擎的请求。获取第一进程的GPU引擎的请求包括第一进程的名称。
GPU引擎包括GPU 3D引擎、GPU copy引擎、GPU video encode引擎、GPU videoprocessing引擎。其中,GPU 3D引擎主要负责处理2D或者3D图形。GPU copy引擎主要用于传输数据。GPU video encode引擎主要用于进行编码操作。GPU video processing引擎主要进行解码操作。在一些实施例中,GPU video processing引擎也可以由GPU video decode引擎代替。
S132、进程管理器获取第一进程的GPU引擎。
具体的,进程管理器可以通过显卡驱动的graphics kernel接口获取第一进程的GPU引擎。
S133、进程管理器向系统探针模块发送消息1,消息1指示第一进程的GPU引擎为GPU video processing引擎。
具体的,进程管理器可向系统探针模块的音视频状态探针发送该消息,再由音视频状态将该消息转发给场景识别模块。
S134、系统探针模块向场景识别模块发送消息1。
S135、场景识别模块判断第一进程的GPU引擎是否为GPU video processing引擎。
若第一进程的GPU引擎为GPU video processing引擎,则执行S136;若第一进程的GPU引擎不为GPU video processing引擎,则执行S130。
在S114步骤中,场景识别引擎已经确定第一进程所属的类型为视频类,即可以确定电子设备处于视频场景。通过步骤S135,场景识别引擎可以确定第一进程通过GPU执行的具体操作,进而确定用户在使用视频应用的具体操作。例如,若第一进程的GPU引擎为GPUvideo processing引擎,则表明第一进程在使用GPU进行解码操作,可以认为用户在使用视频应用播放视频。又例如,第一进程的GPU引擎不为GPU video processing引擎,则表明第一进程没有在使用GPU进行解码操作,那么用户大概率在视频应用上浏览视频资源,还未播放视频。
S136、场景识别模块根据第一进程的进程信息确定用户场景为视频播放场景。
其中,第一进程的进程信息包括第一进程的名称、第一进程所属的应用类型、第一进程的GPU占用率及第一进程使用的GPU引擎等信息。
综合上述内容可知,若第一进程(焦点进程)的类型为视频类、第一进程的GPU占用率大于0且第一进程的GPU引擎为GPU video processing引擎,则可以确定电子设备处于视频播放场景。
需要说明的是,上述S101~S136仅以电子设备处于视频场景下的视频播放场景为例进行说明。实际上,电子设备还可以处于其他用户场景(例如,游戏场景、办公场景、社交场景、视频浏览场景等)。
在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于游戏类、CPU的电源模式变为游戏模式(game mode)、第一进程的GPU占用率大于0且第一进程的GPU引擎为GPU 3D引擎,则可以确定电子设备处于游戏场景。
其中,系统探针模块的电源状态探针可以向电源管理器发送订阅电源模式变化事件的请求。电源管理器可以在电源模块转换为游戏模式(game mode)时,向系统探针模块的电源状态探针上报该电源模式变化事件。如此,场景识别引擎可通过电源模式变化事件确定CPU的电源模式是否为game mode。另外,场景识别引擎获取第一进程的类型的过程可以参阅图8中S101、S102、S105、S106~S114,场景识别引擎判断第一进程的GPU占用率是否大于0且第一进程的GPU引擎是否为GPU 3D引擎的过程参阅S124~S135。区别在于将视频应用更换为游戏应用,在此不再赘述。
综上,在执行上述过程后,电子设备可以确定用户场景已从办公场景变化为了视频场景,则可以执行后续下发调度策略的过程,该过程可以参见后面图10的描述。
对于上述S11“根据当前用户场景确定对应的CPU功耗调度策略1”至S13的过程,如图10所示,电子设备执行下发调度策略的流程如下:
S301、场景识别模块向基础调度策略匹配管理器发送场景信息。
其中,场景信息用于指示电子设备所处的用户场景。示例性的,电子设备可以预先为不同的用户场景分配唯一标识,该场景信息可以包括用户场景的唯一标识。例如,该标识(例如为场景号V01)可指示电子设备处于视频播放场景。又例如,该标识(例如为场景号V02)可指示电子设备处于视频浏览场景。
关于场景识别模块确定电子设备所处的用户场景的过程,具体参阅S101~S136,在此不再赘述。
S302、基础策略匹配管理器根据场景信息得到调度策略1。
其中,调度策略1包括OS调度策略1及CPU功耗调度策略1,调度策略1也可称为第二调度策略。
可选地,OS调度策略1包括第一进程的第一进程优先级及第一I/O优先级。第一进程的优先级用于衡量第一进程抢占CPU的能力,其优先级越高,则可以优先满足其对CPU资源的占用需求,从而使得第一进程的运行流畅度越高。在一种可选的实施方式中,焦点进程的优先级从高到低依次包括等级:实时、高、高于正常、正常、低于正常、低。其中,第一进程的优先级也可以理解为焦点进程优先级(focus process priority,FPP)。
第一进程的I/O优先级用于衡量系统对第一进程的磁盘和I/O请求的响应度,其优先级越高,则第一进程的磁盘和I/O请求的响应度越高,即响应速度越快。在一种可选的实施方式中,焦点进程I/O优先级从高到低依次包括等级:关键、高、正常、低、非常低。其中,第一进程的I/O优先级也可以理解为焦点进程I/O优先级(focus process IO priority,FPP_IO)。
可选地,CPU功耗调度策略1包括CPU的第一PL1、第一PL2以及第一EPP。
可见,调度策略1可以调整第一进程的进程优先级、I/O优先级以及CPU功耗。
在一种可选的实施方式中,电子设备可以预先配置各种用户场景和其对应的调度策略。示例性的,各种用户场景和其对应的调度策略的对应关系可以如下表2所示。
示例性的,若确定电子设备所处的用户场景为社交场景下的文字聊天场景,则调度策略1包括:第一进程的第一进程优先级为正常,第一进程的第一I/O优先级为正常,CPU的第一PL1为12W,第一PL2为60W,第一EPP为220。需要说明的是,表2中的调度策略仅作为示例,在实际应用中,进程优先级、I/O优先级、PL1、PL2及EPP的值可以与表2中的值不一致。另外,表2仅示出了部分场景的调度策略,实际电子设备还可配置比表2更多的调度策略。
需要说明的是,上述调度策略为默认电子设备处于轻负载状态时的调度策略,其可以为电子设备预先统计每个应用在对应的负载特征下的CPU功耗,并根据统计得到的负载特征及CPU功耗配置的。因此,基础策略匹配管理器得到的调度策略1可作为电子设备进行调度的策略的参考方案,电子设备还可根据该调度策略1并结合实际的系统负载来得到实际的调度策略。
表2
S303、基础策略匹配管理器向场景识别模块发送调度策略1。
S304、场景识别模块向负载管控器发送调度策略1和场景信息。
也即,基础策略匹配管理器确定调度策略1后,通过场景识别模块向负载管控器转发调度策略1。在一种可选的实施方式中,场景识别模块可以分两个步骤分别向负载管控器发送调度策略1和场景信息。
S305、负载管控器向系统探针模块发送获取系统负载的请求。
其中,系统负载是处于可运行状态的进程和不可中断状态的进程的平均数。可运行状态的进程指正在使用CPU或者等待使用CPU的进程。不可中断状态的进程为等待I/O访问(例如,磁盘I/O)的进程。
S306、系统探针模块向进程管理器发送获取系统负载的请求。
如图4所示,系统探针模块包括系统负载探针,可以由系统负载探针向进程管理器发送获取系统负载的请求。在一种可选的实施方式中,也可以由OsEventDriver节点向进程管理器转发系统负载探针的获取系统负载的请求(图未示)。
S307、进程管理器获取系统负载。
S308、进程管理器向系统探针模块发送系统负载。
具体的,进程管理器可以向系统探针模块的系统负载探针发送该系统负载。在一种可选的实施方式中,也可以由OsEventDriver节点向系统负载探针转发该系统负载(图未示)。
S309、系统探针模块向负载管控器发送系统负载。
S310、负载管控器根据系统负载、场景信息及调度策略1,得到调度策略2。
调度策略2可包括OS调度策略2(也可以称为OS调度策略)和CPU功耗调度策略2(也可以称为第一子策略)。CPU功耗调度策略2包括PL1`、PL2`、EPP`,PL1`为负载管控器调整后的PL1,也可以称为第二PL1。PL2`为负载管控器调整后的PL2,也可以称为第二PL2。EPP`为负载管控器调整后的EPP,也可以称为第二EPP。其中,调度策略2也可以称为第一调度策略。
在一种可选的实施方式中,负载管控器可将系统负载划分为三个等级,分别为轻负载、中负载、重负载。电子设备可预先配置各种用户场景和其对应的调整策略。例如,调整策略可以如表3所示:
表3
示例性的,若电子设备处于视频播放场景,且根据表2可知调度策略1为:视频应用进程的进程优先级为正常,视频应用进程的I/O优先级为正常,CPU的PL1(即第一PL1)为18W,PL2(即第一PL2)为60W,EPP(即第一EPP)为200。在这种情况下,若系统负载为轻负载,则不需要调整调度策略,即调度策略2为调度策略1。若系统负载为中负载,则需保持视频应用进程的进程优先级为正常,视频应用进程的I/O优先级为正常,PL1在18W的基础上增加22W,PL2在60W的基础上增加30W,EPP在200的基础上减少50,即调度策略2为:视频应用进程的进程优先级为正常、视频应用进程的I/O优先级为正常(OS调度策略2),PL1`为40W,PL2`为90W,EPP`为150(CPU调度策略2)。若系统负载为重负载,则需保持视频应用进程的进程优先级为正常,调整视频应用进程的I/O优先级为高,PL1在18W的基础上增加37W,PL2在60W的基础上增加45W,EPP在200的基础上减少100,即调度策略2为:视频应用进程的进程优先级为正常,视频应用进程的I/O优先级为高,PL1`为55W,PL2`为105W,EPP`为100。
需要说明的是,表3仅示出了部分用户场景及其对应的调整策略,电子设备还可配置比表3更多的调整策略,在此不做具体限制。
在一种可选的实施方式中,系统负载与CPU功耗之间满足特定的映射关系(例如通过特定算式进行映射),负载管控器也可以通过该特定算式和系统负载计算得到CPU功耗,进而得到调度策略2。
在确定了上述的调度策略2后,可选地,电子设备可以进行OS调度及CPU调度,OS调度的过程可以参见下述S311至S315,CPU调度的过程可以参见下述图11的描述过程。
S311、负载管控器向调度执行器发送OS调度策略2。
其中,OS调度策略2包括第一进程的第二进程优先级、第二I/O优先级。
S312、调度执行器向I/O管理器发送指令4。
其中,指令4携带有第一进程的第二I/O优先级。另外,由图4可知,调度执行器包括I/O优先级接口,可以由该I/O优先级接口向I/O管理器发送指令4。其中,该指令4也可以称为第二指令。
S313、响应于指令4,I/O管理器调整第一进程的I/O优先级。
也即,I/O管理器可将第一进程的I/O优先级调整为第二I/O优先级。如此,可以保证第一进程可以优先进行I/O访问,减少第一进程在I/O访问过程中的响应时间。
S314、调度执行器向进程管理器发送指令5。
其中,指令5携带有第一进程的第二进程优先级。另外,由图4可知,调度执行器还包括进程优先级接口,可以由该进程优先级接口向进程管理器发送指令5。其中,该指令5也可以称为第一指令。
S315、响应于接收到指令5,进程管理器调整第一进程的进程优先级。
也即,进程管理器可将第一进程的进程优先级调整为第二进程优先级。如此,第一进程可以优先占用CPU资源,保证第一进程能够流畅运行。
可见,通过调整第一进程的I/O优先级和进程优先级,可以优先保证第一进程的I/O访问以及对CPU资源的消耗,使得第一进程可以正常、流畅地运行,保证用户有良好的体验。
需要说明的是,S312与S314之间不存在严格的先后顺序,可以先执行S312再执行S314,也可以先执行S314再执行S312,也可以同时执行S314和S312。
对于上述S16-S18的过程,如图11所示,电子设备对CPU功耗调度策略2进行转译并下发的过程可以包括:
S321、芯片策略融合器判断CPU的芯片平台类型为或者/>
由于公司的CPU芯片和/>公司的CPU芯片对于CPU功耗的调整方式并不相同,因此需要进行区分。其中,若CPU的芯片平台类型为/>(也可以称为第一类型),则执行S322;若PU的芯片平台类型为/>(也可以称为第二类型),则执行S329。
S322,芯片策略融合器向调度执行器发送CPU功耗调度策略2。
其中,CPU功耗调度策略2包括PL1`、PL2`、EPP`。
S323,调度执行器向OS2SOC驱动节点发送指令6。
其中,指令6携带有PL1`、PL2`。也即,指令6用于指示根据PL1`、PL2`调整CPU的PL1和PL2。其中,指令6也可以称为第三指令。
在一种可选的实施方式中,可以由调度执行器的CPU功耗调度接口向OS2SOC驱动节点发送指令6。
S324,OS2SOC驱动节点向CPU发送指令6。
S325、响应于指令6,CPU调整PL1和PL2。
也即,CPU可将PL1调整为PL1`,将PL2调整为PL2`。
S326、调度执行器向电源管理器发送指令7。
其中,指令7携带有EPP`。也即,指令7用于指示根据EPP`调整CPU的EPP。指令7也可以称为第四指令。
S327、电源管理器向CPU发送指令7。
S328、响应于指令7,CPU调整EPP。
也即,CPU可将EPP调整为EPP`。
S329、芯片策略融合器根据CPU功耗调度策略2确定动态调谐技术策略号。
动态调谐技术(dynamic tuning technology,DTT)是公司在/>处理器和/>独立显卡之间自动并动态分配功耗,以优化性能并延长电池续航时间的技术,其可以使CPU和GPU的性能得到提升,智能混合工作负载功率平衡。
可以理解地,DTT策略号与CPU功耗调度策略2可以存在映射关系。在BIOS中会构建一张DTT策略表,任何一条CPU功耗调度策略2都能通过其内的参数(PL1`、PL2`、EPP`)映射到DTT策略表中某个DTT策略号,如表4所示。
其中,DTT策略号可用于标识一种DTT策略(也可以称为第二子策略),DTT策略号对应的DTT策略用于调整CPU的PL1_MINI、PL1_MAX、PL2、PL2_TIME、EPO Gear。PL1_MINI为PL1的最小值,PL1_MAX为PL1的最大值,PL2_TIME为PL2的持续时间。能效-性能优化挡位(energy performance optimize gear,EPO Gear)用来表征DTT调节CPU能效比(EPP)的力度,取值范围1~5,值越大,调节EPP时越倾向能效;值越小,调节EPP时越倾向性能。
表4
需要说明的是,表4仅示出部分PL1'、PL2'、EPP'和DTT策略号的对应关系,实际上还可包括比表4更多的信息。示例性的,若CPU功耗调度策略2指示PL1`为-1,PL2`为-1且EPP`为-1,则可以确定DTT策略号为0,其对应的PL1_MINI为30,PL1_MAX为40,PL2为95,PL2_TIME为28,EPO Gear为3。
S330、芯片策略融合器向调度执行器发送DTT策略号。
在一种可选的实施方式中,芯片策略融合器也可直接向调度执行器发送该DTT策略号对应的DTT策略(即第二子策略)。
S331、调度执行器向Intel DTT驱动发送DTT策略号。
可以理解,调度执行器可通过WMI向Intel DTT驱动发送DTT策略号。
S332、Intel DTT驱动向CPU发送DTT策略号。
可以理解地,该Intel DTT驱动可通过BIOS向CPU发送DTT策略号。
S333、CPU基于DTT策略号运行。
可见,若CPU的芯片平台类型为芯片策略融合器可以通过调度执行器向电源管理器发送调整EPP的指令,电源管理器可调整CPU的EPP。另外,调度执行器还可以向OS2SOC驱动节点发送调整PL1、PL2的指令,OS2SOC驱动节点驱动CPU的PL1和PL2。
若CPU的芯片平台类型为则芯片策略融合器可以确定CPU功耗调度策略2得到DTT策略号,并通过调度执行器通过WMI插件向Intel DTT驱动发送DTT策略号,使得CPU基于该DTT策略号运行,达到调整功耗的效果。
也即是说,此时CPU不再执行上述预设调度策略,而是切换为对应的新的调度策略。
本申请实施例中,电子设备可以获取焦点窗口变化事件,并根据焦点窗口变化事件确定电子设备所处的用户场景发生了变化,并结合当前的用户场景和电子设备的系统负载确定第一调度策略,在下发该第一调度策略之前,电子设备先下发一个预设调度策略。因该预设调度策略可直接由CPU运行,并且可以适用于电子设备的多种用户场景,因此电子设备从该预设调度策略再切换为第一调度策略时,切换过程比较平滑,可以减少电子设备运行卡顿的现象。
上文详细介绍了本申请实施例提供的资源调度方法的示例。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分为各个功能模块,例如检测单元、处理单元、显示单元等,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的电子设备,用于执行上述资源调度方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,电子设备还可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对电子设备的动作进行控制管理。存储模块可以用于支持电子设备执行存储程序代码和数据等。通信模块,可以用于支持电子设备与其他设备的通信。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi-Fi芯片等与其他电子设备交互的设备。
在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的电子设备可以为具有图2所示结构的设备。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得处理器执行上述任一实施例的资源调度方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的资源调度方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的资源调度方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种资源调度方法,其特征在于,所述方法由电子设备执行,所述电子设备包括CPU,所述方法包括:
在第一时间点显示第一应用的第一窗口,所述第一时间点与第二时间点之间所述CPU的长时睿频功耗PL1为第一数值;
基于启动第二应用的操作,在所述第二时间点将所述CPU的PL1调整为第二数值,所述第二数值大于所述第一数值;
在所述第二时间点之后显示所述第二应用的第二窗口,在所述第二时间点之后将所述CPU的PL1调整为第三数值,所述第三数值小于所述第二数值,在所述第一时间点,焦点窗口为所述第一窗口,在所述第二时间点之后,焦点窗口为所述第二窗口。
2.根据权利要求1所述的方法,其特征在于,在所述将所述CPU的PL1调整为第三数值之后,所述方法还包括:
基于将焦点窗口切换为所述第一窗口的操作,在第三时间点将所述CPU的PL1调整为所述第二数值;
在所述第三时间点之后将所述CPU的PL1调整为第四数值,在所述第三时间点之后,焦点窗口为所述第一窗口,所述第四数值大于所述第一数值且小于所述第二数值。
3.根据权利要求1或2所述的方法,其特征在于,所述基于启动第二应用的操作,在所述第二时间点将所述CPU的PL1调整为第二数值,包括:
基于焦点窗口从所述第一窗口变化为所述第二窗口,在所述第二时间点将所述CPU的PL1调整为所述第二数值。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述基于启动第二应用的操作,在所述第二时间点将所述CPU的PL1调整为第二数值,包括:
在接收到所述启动第二应用的操作,确定所述第二应用对应的用户场景与所述第一应用对应的用户场景不同;
获取预设调度策略,在所述预设调度策略中所述CPU的PL1为所述第二数值;
基于所述预设调度策略在所述第二时间点将所述CPU的PL1调整为所述第二数值。
5.根据权利要求4所述的方法,其特征在于,在所述获取预设调度策略之前,所述方法还包括:
根据所述第二应用对应的用户场景,确定第一调度策略。
6.根据权利要求5所述的方法,其特征在于,所述在所述第二时间点之后将所述CPU的PL1调整为第三数值,包括:
在所述第二时间点之后,基于所述第一调度策略将所述CPU的PL1调整为所述第三数值。
7.根据权利要求6所述的方法,其特征在于,所述基于所述第一调度策略将所述CPU的PL1调整为所述第三数值,包括:
对所述第一调度策略进行转译,并基于转译后的第一调度策略将所述CPU的PL1调整为所述第三数值。
8.根据权利要求7所述的方法,其特征在于,所述对所述第一调度策略进行转译,并基于转译后的第一调度策略将所述CPU的PL1调整为所述第三数值,包括:
确定所述CPU的芯片平台类型,所述芯片平台类型包括第一类型或者第二类型;
在所述芯片平台类型为所述第一类型的情况下,将所述CPU的PL1调整为所述第一调度策略中携带的PL1的值,所述第一调度策略中携带的PL1的值为所述第三数值;
在所述芯片平台类型为所述第二类型的情况下,根据所述第一调度策略的策略参数确定动态调谐技术DTT策略号,根据所述DTT策略号将所述CPU的PL1调整为所述第三数值。
9.根据权利要求5至8中任一项所述的方法,其特征在于,所述根据所述第二应用对应的用户场景,确定第一调度策略,包括:
根据所述第二应用对应的用户场景的场景标识确定第二调度策略,所述第二调度策略包括所述CPU的第一PL1、第一短时睿频功耗PL2及第一能效比EPP中的至少一个策略参数;
根据所述第二调度策略、所述第二应用对应的用户场景的场景标识以及所述电子设备当前的系统负载确定所述第一调度策略,所述第一调度策略包括所述CPU的第二PL1、第二PL2及第二EPP中的至少一个策略参数,其中,在所述系统负载大于预设的第一数值的情况下,所述第二PL1大于所述第一PL1,所述第二PL2大于所述第一PL2,所述第二EPP小于所述第一EPP。
10.根据权利要求4所述的方法,其特征在于,所述确定所述第二应用对应的用户场景与所述第一应用对应的用户场景不同,包括:
获取所述电子设备在启动所述第二应用时对应的第一进程的进程信息及第一信息,所述第一信息包括以下信息中的至少一种:所述第一进程的GPU占用信息、外设事件信息或电源模式信息;
根据所述第一进程的进程信息及所述第一信息确定所述第二应用对应的用户场景的场景标识;
在所述第二应用对应的用户场景的场景标识与所述第一应用对应的用户场景的场景标识不同的情况下,确定所述第二应用对应的用户场景与所述第一应用对应的用户场景不同。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
一个或多个存储器;
所述存储器存储有一个或多个程序,当所述一个或多个程序被所述处理器执行时,使得所述电子设备执行如权利要求1至10中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至10中任一项所述的方法。
CN202311305982.0A 2022-05-16 2022-05-30 资源调度方法和电子设备 Pending CN117539614A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2022105304544 2022-05-16
CN202210530454 2022-05-16
CN202210598830.3A CN116028205B (zh) 2022-05-16 2022-05-30 资源调度方法和电子设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202210598830.3A Division CN116028205B (zh) 2022-05-16 2022-05-30 资源调度方法和电子设备

Publications (1)

Publication Number Publication Date
CN117539614A true CN117539614A (zh) 2024-02-09

Family

ID=86069535

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311305982.0A Pending CN117539614A (zh) 2022-05-16 2022-05-30 资源调度方法和电子设备
CN202210598830.3A Active CN116028205B (zh) 2022-05-16 2022-05-30 资源调度方法和电子设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210598830.3A Active CN116028205B (zh) 2022-05-16 2022-05-30 资源调度方法和电子设备

Country Status (1)

Country Link
CN (2) CN117539614A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116567296B (zh) * 2023-07-11 2023-10-03 中国电信股份有限公司 视频画面处理方法、装置、计算机设备和存储介质
CN117270670B (zh) * 2023-11-22 2024-04-12 荣耀终端有限公司 一种功耗控制方法及电子设备
CN117873736B (zh) * 2024-03-11 2024-05-28 湖南马栏山视频先进技术研究院有限公司 一种用于渲染的gpu虚拟化方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577537A (zh) * 2017-09-06 2018-01-12 广东欧珀移动通信有限公司 资源配置方法及相关产品
CN113473556B (zh) * 2020-03-31 2023-06-16 华为技术有限公司 一种放松测量方法和通信装置
CN114443256B (zh) * 2022-04-07 2022-08-30 荣耀终端有限公司 资源调度方法及电子设备

Also Published As

Publication number Publication date
CN116028205A (zh) 2023-04-28
CN116028205B (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
CN115599513B (zh) 资源调度方法及电子设备
CN116028205B (zh) 资源调度方法和电子设备
JP2013542491A (ja) 性能スケーリングアルゴリズムのセットを公開して管理するためのモバイルデバイスおよび方法
CN116028210B (zh) 资源调度方法、电子设备及存储介质
EP3819773A1 (en) Data prefetching method and terminal device
CN116027880B (zh) 资源调度方法和电子设备
WO2023221752A1 (zh) 信息处理方法和电子设备
CN116025580B (zh) 调节风扇转速的方法和电子设备
CN116028207B (zh) 调度策略确定方法、装置、设备和存储介质
CN116027879B (zh) 确定参数的方法、电子设备和计算机可读存储介质
CN116028211A (zh) 显卡调度方法、电子设备和计算机可读存储介质
CN116069209A (zh) 焦点窗口处理方法、装置、设备和存储介质
CN116028209B (zh) 资源调度方法、电子设备及存储介质
CN116028005B (zh) 音频会话获取方法、装置、设备和存储介质
CN117130454B (zh) 功耗调整方法和电子设备
CN116055443B (zh) 识别社交场景的方法、电子设备及计算机可读存储介质
CN116028208B (zh) 系统负载确定方法、装置、设备和存储介质
CN116089055B (zh) 资源调度方法和装置
CN116028206A (zh) 资源调度方法、电子设备及存储介质
CN116028314B (zh) 温度参数读取方法、电子设备和计算机可读存储介质
CN116027878B (zh) 功耗调整方法和电子设备
CN117130454A (zh) 功耗调整方法和电子设备
CN117270670B (zh) 一种功耗控制方法及电子设备
WO2023221720A9 (zh) 资源调度方法及装置
CN117130772A (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