一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

资源调度方法及电子设备与流程

2023-01-14 16:12:12 来源:中国专利 TAG:

资源调度方法及电子设备
1.本技术是分案申请,原申请的申请号是202210361743.6,原申请日是2022年4月7日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及电力电子技术领域,尤其涉及一种资源调度方法及电子设备。


背景技术:

3.随着终端设备性能的提升,终端设备的功耗也越来越高,但是电池容量的提升却十分缓慢,导致终端设备的续航无法满足用户的需求,降低了用户移动场景的使用体验。因此,需要根据终端设备当前执行任务的负载情况对当前任务进行更加精准的资源调度,在保证终端设备性能的同时满足用户对于移动场景的长续航体验。
4.传统的资源调度方案是终端设备统计当前执行的所有任务在一段时间内的负载情况,然后根据统计得到的负载情况对当前执行的所有任务进行资源调度。例如,若当前执行的所有任务的负载较大,则可以增大中央处理器(central processing unit,cpu)的功率。传统的资源调度方案不能根据用户的使用场景进行动态的资源调度,导致cpu在绝大多数用户场景下运行在高性能状态,造成资源浪费和能耗过高的问题。


技术实现要素:

5.本技术实施例提供一种资源调度方法及电子设备,可以在流畅满足用户需求的情况下,降低电子设备的能耗。
6.为达到上述目的,本技术的实施例采用如下技术方案:
7.第一方面,本技术提供了一种资源调度方法,该方法应用于包括cpu和gpu的电子设备,该方法包括:响应于用户的第一操作,电子设备显示第一窗口,第一窗口为焦点窗口;获取第一窗口对应的第一进程的进程信息及第一信息,第一信息包括如下信息中的至少一种:第一进程的gpu占用信息、外设事或电源模式信息;根据第一进程的进程信息及第一信息确定电子设备所处的用户场景;获取系统负载及cpu的芯片平台类型;根据系统负载、用户场景得到第一调度策略,第一调度策略包括os调度策略以及cpu功耗调度策略;根据os调度策略调整第一进程的进程优先级、输入/输出i/o优先级;根据cpu功耗调度策略调整cpu的功耗。
8.基于本技术实施例提供的方法,在确定第一操作使焦点窗口变为第一窗口(即焦点窗口发生变化)的情况下,可以通过第一进程的进程信息与第一进程的gpu占用信息、外设事件、电源模式信息等信息确定电子设备所处的用户场景,该用户场景可包括视频场景下的视频播放场景、视频浏览场景,办公场景下的文档浏览场景、文档编辑场景、视频会议场景等等。也即,可以确定用户在使用电子设备过程中的实际需求,接着结合用户的实际需求(即用户场景)、电子设备的实际运行情况(即系统负载)得到第一调度策略,得到os调度策略和cpu功耗调度,该os调度策略可以使第一进程可以优先占用cpu资源以及进行i/o访
问,保证第一进程能够流畅运行。该cpu功耗调度旨在降低cpu的功耗。如此,在保证终端设备性能可以流畅满足用户需求的情况下,降低电子设备的能耗,提升电子设备的续航能力。
9.第一方面的一种可能设计方式中,根据系统负载、用户场景得到第一调度策略,包括:根据用户场景确定第二调度策略,第二调度策略包括第一进程的第一进程优先级、第一输入/输出i/o优先级,cpu的第一长时睿频功耗pl1、第一短时睿频功耗pl2及第一能效比epp;根据系统负载、用户场景及第二调度策略得到第一调度策略,第一调度策略至少包括第一进程的第二进程优先级、第二i/o优先级,cpu的第二pl1、第二pl2以及第二epp,其中,若系统负载大于预设的第一数值,第二进程优先级高于或等于第一进程优先级,第二i/o优先级高于或等于第一i/o优先级,第二pl1大于第一pl1,第二pl2大于第二pl2,第二epp小于第一epp。
10.可以理解地,负载越高,则第一进程的进程优先级和i/o优先级越高,可以保证第一进程可以优先占用cpu资源以及进行i/o访问,保证第一进程能够流畅运行。另外,在负载增加时,适当增加pl1、pl2,并降低epp,以平衡电子设备的性能和功耗。
11.第一方面的一种可能设计方式中,方法还包括:确定cpu的芯片平台类型,芯片平台类型包括第一类型和第二类型。其中,第一类型的cpu可以为的cpu芯片,第二类型的cpu可以为的cpu芯片。
12.第一方面的一种可能设计方式中,cpu功耗调度策略包括第一子策略和第二子策略,第二子策略为根据第一子策略确定的动态调谐技术dtt策略;根据cpu功耗调度策略调整cpu的功耗,包括:若芯片平台类型为第一类型,根据第一子策略调整cpu的功耗;若芯片平台类型为第二类型,根据第二子策略调整cpu的功耗。也即,针对和的cpu,本技术可以适应性匹配不同的功耗调度策略。
13.第一方面的一种可能设计方式中,第一进程的gpu占用信息包括第一进程的gpu占用率以及gpu引擎;根据进程信息及第一信息确定电子设备所处的用户场景,包括:
14.根据进程信息确定第一进程的类型;若第一进程的类型为视频类,第一进程的gpu占用率大于0,且gpu引擎为gpu视频进程引擎,确定电子设备所处的用户场景为视频播放场景。可以理解地,若第一进程的类型为视频类,则可以先确定用户当前正在使用视频类应用。若第一进程的gpu占用率大于0,则表明第一进程运行过程中有占用gpu的资源。若第一进程的gpu引擎为gpu video processing(视频进程)引擎,则表明第一进程在运行过程中使用gpu进行解码操作。如此,可以确定用户大概率在使用电子设备进行播放视频,即电子设备所处的用户场景为视频播放场景。
15.若第一进程的类型为视频类,第一进程的gpu占用率大于0,且gpu引擎为gpu3d引擎,确定电子设备所处的用户场景为视频浏览场景。相应地,若第一进程的gpu引擎为gpu 3d引擎,则表明第一进程仅使用gpu进行2d或者3d渲染操作,可以推断用户在使用电子设备浏览视频资源,而非播放视频,即电子设备所处的用户场景为视频浏览场景。
16.第一方面的一种可能设计方式中,方法还包括:若第一进程的类型为游戏类,电源模式为游戏模式,第一进程的gpu占用率大于0,且gpu引擎为gpu 3d引擎,确定电子设备所处的用户场景为游戏场景。
17.可以理解地,若第一进程的类型为游戏类,则可以先确定用户当前正在使用游戏类应用。若第一进程的gpu占用率大于0,则表明第一进程运行过程中有占用gpu的资源。若
第一进程的gpu引擎为gpu 3d引擎,则表明第一进程使用gpu进行2d或者3d渲染操作。如此,可以确定用户大概率在使用电子设备打游戏,即电子设备所处的用户场景为游戏场景。
18.第一方面的一种可能设计方式中,外设事件包括键盘输入事件、鼠标输入事件、麦克风输入事件、摄像头输入事件中的一种或多种;根据进程信息及第一信息确定电子设备所处的用户场景,包括:根据进程信息确定第一进程的类型。
19.若第一进程的类型为社交类,且检测到键盘输入事件,确定电子设备所处的用户场景为文字聊天场景。也即,若检测到用户在使用社交应用且同时在打字,则用户大概率在使用社交应用进行聊天,可以确定电子设备所处的用户场景为文字聊天场景。
20.若第一进程的类型为社交类,检测到麦克风输入事件,且未检测到摄像头输入事件,确定电子设备所处的用户场景为语音聊天场景。也即,若检测到用户在使用社交应用且同时在语音输入,则用户大概率在使用社交应用进行语音聊天,可以确定电子设备所处的用户场景为语音聊天场景。
21.若第一进程的类型为社交类,检测到麦克风输入事件以及摄像头输入事件,确定电子设备所处的用户场景为视频聊天场景。也即,若检测到用户在使用社交应用且同时在视频输入,则用户大概率在使用社交应用进行视频聊天,可以确定电子设备所处的用户场景为视频聊天场景。
22.第一方面的一种可能设计方式中,方法还包括:
23.若第一进程的类型为办公类,且检测到键盘输入事件,确定电子设备所处的用户场景为文档编辑场景。若检测到用户在使用办公应用且同时在打字,则用户大概率在使用办公应用编辑文档,可以确定电子设备所处的用户场景为文档编辑场景。
24.若第一进程的类型为办公类,检测到鼠标输入事件,且未检测到键盘输入事件,确定电子设备所处的用户场景为文档浏览场景。也即,若检测到用户在使用办公应用的过程中使用鼠标但未使用键盘,则用户大概率在使用办公应用浏览文档,可以确定电子设备所处的用户场景为文档浏览场景。
25.若第一进程的类型为办公类,检测到麦克风输入事件以及摄像头输入事件,确定电子设备所处的用户场景为视频会议场景。也即,若检测到用户在使用办公应用的过程中使用摄像头,则用户大概率在使用办公应用进行视频会议,可以确定电子设备所处的用户场景为视频会议场景。
26.第一方面的一种可能设计方式中,电子设备还包括场景识别引擎、系统事件驱动oseventdriver节点及进程管理器,方法还包括:场景识别引擎向oseventdriver节点发送第一请求;oseventdriver节点向进程管理器发送第一请求;响应于第一请求,进程管理器在创建第二进程后,向oseventdriver节点发送第二进程的进程信息;oseventdriver节点向场景识别引擎发送第二进程的进程信息。
27.第一方面的一种可能设计方式中,电子设备还包括场景识别引擎及api模块,方法还包括:场景识别引擎向api模块发送第二请求;响应于第二请求,api模块在检测到焦点窗口发生变化后,向场景识别引擎发送第一进程的进程信息。
28.第一方面的一种可能设计方式中,电子设备还包括场景识别引擎、oseventdriver节点及显卡驱动,方法还包括:场景识别引擎向oseventdriver节点发送第三请求;oseventdriver节点向显卡驱动发送第三请求;响应于第三请求,显卡驱动在检测到在gpu
进行解码操作后向oseventdriver节点上报gpu解码事件;oseventdriver节点向场景识别引擎发送gpu解码事件。
29.第一方面的一种可能设计方式中,电子设备还包括场景识别引擎、oseventdriver节点及外设驱动,方法还包括:场景识别引擎向oseventdriver节点发送第四请求;oseventdriver节点向显卡驱动发送第四请求;响应于第四请求,外设驱动在检测到在外设操作后向oseventdriver节点上报外设事件;oseventdriver节点向场景识别引擎发送外设事件。
30.第一方面的一种可能设计方式中,方法包括:响应于用户的第一操作,api模块获取第一进程的名称及第二进程的名称,第二进程为历史的焦点窗口对应的进程;若第一进程的名称与第二进程的名称不一致,向场景识别引擎发送第一进程的进程信息。
31.第一方面的一种可能设计方式中,根据进程信息及第一信息确定电子设备所处的用户场景,包括:场景识别引擎根据进程信息及第一信息确定电子设备所处的用户场景。
32.第一方面的一种可能设计方式中,电子设备还包括调度引擎,根据系统负载、用户场景得到调度策略包括:场景识别引擎根据用户场景确定第二调度策略;场景识别引擎向调度引擎发送第二调度策略和用户场景;调度引擎向场景识别引擎发送第五请求;响应于第五请求,场景识别引擎获取系统负载,向调度引擎发送系统负载;调度引擎根据系统负载、用户场景及第二调度策略得到第一调度策略。
33.第一方面的一种可能设计方式中,电子设备还包括进程管理器、i/o管理器,os调度策略包括第一进程的第二进程优先级、第二i/o优先级,根据os调度策略调整第一进程的进程优先级、输入/输出i/o优先级,包括:调度引擎向进程管理器发送第一指令,第一指令携带有第一进程的第二进程优先级;响应于接收到第一指令,进程管理器将第一进程的进程优先级调整为第二进程优先级;调度引擎向i/o管理器发送第二指令,第二指令携带有第一进程的第二i/o优先级;响应于接收到第二指令,i/o管理器将第一进程的i/o优先级调整为第二i/o优先级。
34.第一方面的一种可能设计方式中,确定cpu的芯片平台类型包括:调度引擎判断cpu的芯片平台类型为第一类型或者第二类型。
35.第一方面的一种可能设计方式中,电子设备还包括电源管理器、系统和芯片os2soc驱动节点,第一子策略包括cpu的第二pl1、第二pl2及第二epp,根据第一子策略调整cpu的功耗,包括:调度引擎向os2soc驱动节点发送第三指令,第三指令携带有cpu的第二pl1、第二pl2;os2soc驱动节点向cpu发送第三指令;响应于第三指令,cpu将pl1调整为第二pl1,将pl2调整为第二pl2;调度引擎向电源管理器发送第四指令,第四指令携带有cpu的第二epp;电源管理器向cpu发送第四指令;响应于第四指令,cpu将epp调整为第二epp。
36.第一方面的一种可能设计方式中,电子设备还包括英特尔dtt驱动,根据第二子策略调整cpu的功耗包括:调度引擎向英特尔dtt驱动发送第五指令,第五指令携带有第二子策略;英特尔dtt驱动向cpu发送第五指令;响应于第五指令,cpu基于第二子策略运行。
37.第二方面,本技术提供一种电子设备,该电子设备包括存储器和一个或多个处理器;其中,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;当所述计算机指令被所述处理器执行时,使得所述电子设备执行第一方面中任一项所述的方法
38.第三方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令。当计算机指令在电子设备(如电脑)上运行时,使得该电子设备执行如第一方面及其任一种可能的设计方式所述的方法。
39.第四方面,本技术提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面及其任一种可能的设计方式所述的方法。
40.第五方面,本技术提供一种芯片系统,该芯片系统包括一个或多个接口电路和一个或多个处理器。该接口电路和处理器通过线路互联。上述芯片系统可以应用于包括通信模块和存储器的电子设备。该接口电路用于从电子设备的存储器接收信号,并向处理器发送接收到的信号,该信号包括存储器中存储的计算机指令。当处理器执行该计算机指令时,电子设备可以执行如第一方面及其任一种可能的设计方式所述的方法。
41.可以理解地,上述提供的第二方面所述的电子设备,第三方面所述的计算机可读存储介质,第四方面所述的计算机程序产品及第五方面所述的芯片系统所能达到的有益效果,可参考如第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
42.图1为本技术实施例提供的一种电子设备的结构示意图;
43.图2为本技术实施例提供的一种软件模块架构示意图;
44.图3为本技术实施例提供的软件模块间的交互示意图;
45.图4为本技术实施例提供的一种信号交互示意图;
46.图5为本技术实施例提供的一种界面图;
47.图6为本技术实施例提供的又一种信号交互示意图;
48.图7为本技术实施例提供的又一种信号交互示意图;
49.图8为本技术实施例提供的一种芯片结构示意图。
具体实施方式
50.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
51.为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:
52.焦点窗口(focus window),指拥有焦点的窗口。焦点窗口是唯一可以接收键盘输入的窗口。焦点窗口的确定方式与系统的焦点模式(focus mode)关联。焦点窗口的顶层窗口被称为活动窗口(active window)。同一时间只有一个窗口可以是活动窗口。焦点窗口大概率为用户当前需要使用的窗口。
53.焦点模式,可用于决定鼠标如何使一个窗口获得焦点。一般地,焦点模式可包括三种,分别为:
54.(1)点击聚焦(click-to focus),在这种模式下,鼠标点击的窗口即可获得焦点。即当鼠标点击一个可以获得焦点的窗口的任意位置,即可激活该窗口,该窗口便被置于所有窗口的最前面,并接收键盘输入。当鼠标点击其他窗口时,该窗口会失去焦点。
55.(2)焦点跟随鼠标(focus-follow-mouse),在这种模式下,鼠标下的窗口可以获取焦点。即当鼠标移到一个可以获得焦点的窗口的范围内,用户不需要点击窗口的某个地方就可以激活这个窗口,接收键盘输入,但该窗口不一定被置于所有窗口的最前面。当鼠标移出这个窗口的范围时,这个窗口也会随之失去焦点。
56.(3)草率聚焦(sloppy focus),这种焦点模式与focus-follow-mouse比较类似:当鼠标移到一个可以获得焦点的窗口的范围内,用户不需要点击窗口的某个地方就可以激活这个窗口,接收键盘输入,但该窗口不一定被置于所有窗口的最前面。与focus-follow-mouse不同的是,当鼠标移出这个窗口范围时,焦点并不会随之改变,只有当鼠标移动到别的可以接收焦点的窗口时,系统焦点才改变。
57.进程包括多个线程,线程可以创建窗口。焦点进程为创建焦点窗口的线程所属的进程。
58.长时睿频功耗(power limit1,pl1),指cpu在正常负载下的功耗,相当于热设计功耗,cpu绝大部分时间的运行功耗不超过pl1。
59.短时睿频功耗(power limit2,pl2),指cpu在短时间内可达到的最高功耗,其具有持续时间限制。一般地,pl2大于pl1。
60.cpu能效比(energy performance preference,epp),用于反映cpu的调度倾向,其取值范围为0~255。cpu能效比越小,则表明cpu趋向于高性能;cpu能效比越高,则表明cpu趋向于低功耗。
61.本技术提供一种资源调度方法,提供内核层(kernel层)节点,该节点可以向应用层上报焦点窗口变化事件以及第一信息(包括焦点进程的进程信息、焦点进程对gpu的占用情况、外设事件以及电源模式等),应用层可以根据焦点窗口变化事件以及第一信息确定电子设备当前所处的用户场景,并结合用户场景和电子设备的系统负载确定第一调度策略,基于第一调度策略调整焦点进程的进程优先级、i/o优先级以及cpu的功耗,在流畅满足用户需求(保证焦点进程流畅运行)的情况下,降低电子设备的能耗。
62.请参考图1,为本技术实施例提供的电子设备100的结构示意图。
63.如图1所示,电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,无线通信模块150,显示屏160等。
64.可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
65.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
66.控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码
和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
67.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
68.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括i2c接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或usb接口等。
69.可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
70.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
71.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏160,和无线通信模块150等供电。在一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
72.无线通信模块150可以提供应用在电子设备100上的包括wlan(如wi-fi),蓝牙,全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。例如,本技术实施例中,电子设备100可以通过无线通信模块150与终端设备(如无线耳机100)建立蓝牙连接。
73.无线通信模块150可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块150经由天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块150还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线转为电磁波辐射出去。
74.电子设备100通过gpu,显示屏160,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏160和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
75.显示屏160用于显示图像,视频等。该显示屏160包括显示面板。
76.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
77.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能
应用以及数据处理。例如,在本技术实施例中,处理器110可以通过执行存储在内部存储器121中的指令,内部存储器121可以包括存储程序区和存储数据区。
78.其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
79.上述电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的windows系统为例,示例性说明电子设备100的软件结构。
80.图2为本技术实施例的电子设备100的软件结构框图。
81.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将windows系统分为用户态和内核态。其中,用户态包括应用层以及子系统动态链接库。内核态自下而上分为固件层、硬件抽象层(hardware abstraction layer,hal)、内核和驱动层及执行体。
82.如图2所示,应用层包括音乐、视频、游戏、办公、社交等应用程序。应用层还包括环境子系统、场景识别引擎以及调度引擎等。其中,图中仅示出部分应用程序,应用层还可以包括其他应用程序,例如购物应用、浏览器等,本技术不做限定。
83.环境子系统可以将基本的执行体系统服务的某些子集以特定的形态展示给应用程序,为应用程序提供执行环境。
84.场景识别引擎可以识别电子设备100所处的用户场景,并确定与该用户场景匹配的基础调度策略(也可称为第二调度策略)。调度引擎可以获取电子设备100的负载情况,并结合电子设备100的负载情况及上述基础调度策略确定符合电子设备100实际运行情况的实际调度策略(也可称为第一调度策略)。其中,关于场景识别引擎和调度引擎的具体内容见后文,在此暂不描述。
85.子系统动态链接库包括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就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
86.执行体包括进程管理器、虚拟内存管理器、安全引用监视器、i/o管理器、windows管理规范(windows management instrumentation,wmi)、电源管理器、系统事件驱动(operating system event driver,oseventdriver)节点、系统与芯片驱动(operating system to system on chip,os2soc)节点等。
87.进程管理器用于创建及中止进程和线程。
88.虚拟内存管理器实现“虚拟内存”。虚拟内存管理器也为高速缓存管理器提供基本
的支持。
89.安全引用监视器可在本地计算机上执行安全策略,它保护了操作系统资源,执行运行时对象的保护和监视。
90.i/o管理器执行独立于设备的输入/输出,并进一步处理调用适当的设备驱动程序。
91.电源管理器可管理所有支持电源状态更改的设备的电源状态更改。
92.系统事件驱动节点可以与内核和驱动层进行交互,例如与显卡驱动进行交互,在确定存在gpu视频解码事件后,向场景识别引擎上报该gpu视频解码事件。
93.系统与芯片驱动节点可供调度引擎向硬件设备发送调整信息,例如向cpu发送调整pl1和pl2的信息。
94.内核和驱动层包括内核以及设备驱动程序。
95.内核是对处理器体系结构的抽象,将执行体与处理器体系结构的差异相隔离,保证系统的可移植性。内核可以进行线程安排和调度、陷阱处理和异常调度、中断处理和调度等。
96.设备驱动程序运行在内核模式下,为i/o系统和相关硬件之间的接口。设备驱动程序可包括显卡驱动、intel dtt驱动、鼠标驱动、音视频驱动、摄像头驱动、键盘驱动等。例如,显卡驱动可以驱动gpu运行,intel dtt驱动可以驱动cpu运行。
97.hal是一个核心态模块,可以隐藏各种与硬件有关的细节,例如i/o接口、中断控制器以及多处理器通信机制等,为运行windows的不同硬件平台提供统一的服务接口,实现多种硬件平台上的可移植性。需要说明的是,为了维护windows的可移植性,windows内部组件和用户编写的设备驱动程序并不直接访问硬件,而是通过调用hal中的例程。
98.固件层可以包括基本输入输出系统(basic input output system,bios),bios是一组固化到计算机主板上一个只读存储器(read only memory,rom)芯片内的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从互补金属氧化物半导体(complementary metal oxide semiconductor,cmos)中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。intel dtt驱动可以通过bios向cpu发送指令的。
99.需要说明的是,本技术实施例仅以windows系统举例来说明,在其他操作系统中(例如安卓系统,ios系统等),只要各个功能模块实现的功能和本技术的实施例类似也能实现本技术的方案。
100.图3示出了电子设备100对资源进行调度的软件及硬件的工作流程示意图。
101.如图3所示,应用层的场景识别引擎包括系统探针模块、场景识别模块及基础策略匹配管理器。场景识别模块可分别与系统探针模块及基础策略匹配管理器进行交互。场景识别模块可以向系统探针模块发送获取探针状态的请求。系统探针模块可以获取电子设备100的运行状态。例如,系统探针模块可以包括电源状态探针、外设状态探针、进程负载探针、音视频状态探针、系统负载探针及系统事件探针等。
102.其中,电源状态探针可以向内核态订阅电源状态事件,根据内核态反馈的回调函数确定电源状态,电源状态包括电池(剩余)电量、电源模式等,电源模式可包括交流电源(alternating current,ac)和直流电源(direct current,dc)。例如,电源状态探针可向执
行体层的oseventdriver节点发送订阅电源状态事件的请求,由oseventdriver节点向执行体层的电源管理器转发该请求。电源管理器可通过该oseventdriver节点向电源状态探针反馈回调函数。
103.外设状态探针可以向内核态订阅外设事件,根据内核态反馈的回调函数确定外设事件。外设事件包括鼠标滚轮滑动事件、鼠标点击事件、键盘输入事件、麦克风输入事件、摄像头输入事件等。
104.进程负载探针可以向内核态订阅进程负载,根据内核态反馈的回调函数确定进程(例如,第一进程)的负载。
105.系统负载探针可以向内核态订阅系统负载,根据内核态反馈的回调函数确定系统负载。
106.音视频状态探针可向内核态订阅音视频事件,根据内核态反馈的回调函数确定电子设备100当前存在的音视频事件。音视频事件可包括gpu解码事件等。例如,音视频状态探针可向执行体层的oseventdriver节点发送订阅gpu解码事件的请求,由oseventdriver节点向内核和驱动层的显卡驱动转发该请求。显卡驱动可以监控gpu的状态,在监控到gpu在进行解码操作后,通过该oseventdriver节点向音视频状态探针反馈回调函数。
107.系统事件探针可以向内核态订阅系统事件,根据内核态反馈的回调函数确定系统事件。系统事件可包括窗口变化事件、进程创建事件、线程创建事件等。例如,系统事件探针可向执行体层的oseventdriver节点发送订阅进程创建事件的请求,由oseventdriver节点向进程管理器转发该请求。进程管理器可在创建进程后,通过该oseventdriver节点向系统事件探针反馈回调函数。又例如,系统事件探针还向api模块发送订阅焦点窗口变化事件,api模块可监控电子设备100的焦点窗口是否发生变化,并在监控到焦点窗口发生变化时,向系统事件探针反馈回调函数。
108.可见,系统探针模块通过向内核态订阅电子设备100的各种事件,再根据内核态反馈的回调函数确定电子设备100的运行状态,即得到探针状态。系统探针模块得到探针状态后,可向场景识别模块反馈该探针状态。场景识别模块接收到探针状态后,可根据该探针状态确定电子设备100所处的用户场景。该使用场景可包括视频场景、游戏场景、办公场景及社交场景等。用户场景可以反映用户当前的使用需求。例如,场景识别引擎在识别出焦点窗口为视频应用的窗口时,确定出电子设备100处于视频场景,这说明用户需要使用视频应用观看、浏览视频。又例如,场景识别引擎识在识别出焦点窗口为微信
tm
的聊天窗口时,确定电子设备100处于社交场景。场景识别模块还可向基础策略匹配管理器发送该用户场景。基础策略匹配管理器可根据该用户场景确定基础调度策略(也可称为第二调度策略,具体可以参见下文s301、s302中的说明)。基础策略匹配管理器可向场景识别模块反馈该基础调度策略。场景识别模块可向应用层的调度引擎发送该基础调度策略及用户场景。
109.如图3所示,调度引擎包括负载管控器、芯片策略融合器以及调度执行器。其中,负载管控器可接收场景识别模块发送的基础调度策略及用户场景。负载管控器还可从系统探针模块获取系统负载,并根据系统负载和用户场景对该基础调度策略进行调整,得到实际调度策略(也可称为第一调度策略,具体可以参见下文s310中的说明)。实际调度策略中包括os调度策略和第一cpu功耗调度策略(也可称为第一子策略)。其中,负载管控器可向调度执行器发送该os调度策略,由调度执行器基于该os调度策略进行调度。os调度策略用于调
整焦点进程的进程优先级及i/o优先级。示例性的,调度执行器可向进程管理器发送调整焦点进程的进程优先级的指令,响应于该指令,进程管理器对焦点进程的进程优先级进行调整。又例如,调度执行器可向i/o管理器发送调整焦点进程的i/o优先级的指令,响应于该指令,i/o管理器对焦点进程的i/o优先级进行调整。
110.负载管控器还可向芯片策略融合器发送第一cpu功耗调度策略,芯片策略融合器可基于cpu的芯片平台类型及该第一cpu功耗调度策略,得到第二cpu功耗调度策略(也可称为第二子策略,具体可以参见下文s317~s325中的说明)。cpu的芯片平台类型主要分为两种,分别为(advanced micro devices,amd)的cpu和的cpu,这两类cpu对于cpu功耗的调整方式并不相同,因此需要进行区分。
111.若cpu的芯片平台类型为amd(也可以称为第一类型),调度执行器可以向电源管理器发送调整epp的指令,以调整cpu的epp。另外,调度执行器还可以向os2soc驱动节点发送调整pl1、pl2的指令,以调整cpu的pl1和pl2。
112.若cpu的芯片平台类型为调度执行器可以通过wmi插件向intel dtt驱动发送该第二cpu功耗调度策略,第二cpu功耗调度策略可包括pl1的最小值、pl1的最大值、pl2、pl2的持续时间及epp,由intel dtt驱动cpu基于该第二cpu功耗调度策略运行。
113.本技术实施方式所提供的资源调度方法,主要分为两个过程,分别为:(1)确定电子设备所处的用户场景;(2)根据电子设备所处的用户场景及电子设备的系统负载进行资源调度。下面将结合附图分别说明上述两个过程。
114.下面将以电子设备处于视频播放场景为例,结合图4,对图3所示的电子设备中部分模块的交互过程进行说明。如图4所示,本技术实施例提供的一种资源调度方法,其确定电子设备所处的用户场景的流程如下:
115.s101、系统探针模块向oseventdriver节点发送订阅进程创建事件的请求。
116.如图3所示,场景识别引擎包括系统探针模块,系统探针模块包括系统事件探针。在本技术实施例中,可以由系统事件探针向位于执行体层的oseventdriver节点发送订阅进程创建事件的请求。其中,订阅进程创建事件的请求也可以称为第一请求。
117.在一种可选的实施方式中,订阅进程创建事件的请求可以携带有进程名称。即场景识别引擎可以仅订阅指定进程的创建事件,减少不相干进程的创建事件的干扰。例如,指定进程可以为视频应用的进程、游戏应用的进程、办公应用的进程、社交应用的进程等等。当然,在其他实施方式中,场景识别引擎也可以不对订阅的进程创建事件做出限制。
118.s102、oseventdriver节点向进程管理器发送订阅进程创建事件的请求。
119.进程创建事件的请求可以参考s101的描述,在此不做赘述。
120.也就是说,场景识别引擎的系统事件探针可以通过oseventdriver节点向进程管理器发送订阅进程创建事件的请求。
121.可以理解地,oseventdriver节点会向进程管理器注册一个回调,注册该回调的作用是当进程管理器创建进程后,可以向oseventdriver节点返回该进程创建事件。
122.s103、系统探针模块向oseventdriver节点发送订阅gpu解码事件的请求。
123.仍然如图3所示,系统探针模块还包括音视频状态探针。在本技术实施例中,可以由系统探针模块的音视频状态探针向oseventdriver节点发送订阅gpu解码事件的请求。其中,订阅gpu解码事件的请求也可以称为第三请求。
124.s104、oseventdriver节点向显卡驱动发送订阅gpu解码事件的请求。
125.也就是说,场景识别引擎的音视频状态探针可以通过oseventdriver节点向显卡驱动发送订阅gpu解码事件的请求。同样地,oseventdriver节点可向显卡驱动注册一个回调,注册该回调的作用是当显卡驱动监控到gpu进行解码操作后,可以向oseventdriver节点返回该gpu解码事件。
126.s105、系统探针模块向api模块发送订阅焦点窗口变化事件的请求。
127.api模块可包括由user32.dll实现的windows用户界面接口,该接口可用于创建窗口。在一种可选的实施方式中,可以由系统探针模块的系统事件探针向api模块的windows用户界面接口发送订阅焦点窗口变化事件的请求。其中,订阅焦点窗口变化事件的请求也可以称为第二请求。
128.同样地,该系统事件探针可向api模块注册一个回调,注册该回调的作用是当api模块(的windows用户界面接口)监控到焦点窗口发生变化时,可以向系统事件探针返回该焦点窗口变化事件。
129.焦点窗口为拥有焦点的窗口,大概率为用户当前需要使用的窗口。因此,通过监控焦点窗口,可以确定用户的使用需求。例如,焦点窗口为视频应用的窗口,则表明用户需求浏览、播放视频。又例如,焦点窗口为游戏应用的窗口,则表明用户需求打游戏。通过监控焦点窗口是否发生变化,可以确定用户需求是否发生改变。例如,焦点窗口由视频应用的窗口变为游戏应用的窗口,则表明用户当前的需求由看视频变成了打游戏。
130.需要说明的是,上述s101、s103及s105之间没有严格的先后顺序,其可以按照图4中所示的顺序依次执行,也可以同时执行,也可以按照s103、s101、s105的顺序依次执行、按照s103、s105、s101的顺序依次执行、按照s105、s101、s103的顺序依次执行或者按照s105、s103、s101的顺序依次执行。相应地,s102、s104及s106之间也没有严格的先后顺序,只要满足s102在s101之后执行、s104在s103之后执行以及s106在s105之后执行即可,在此不做具体限制。
131.s106、响应于接收到用户开启视频应用的操作,视频应用向进程管理器发送创建进程请求。
132.其中,创建进程请求包括视频应用程序的存储地址。
133.视频应用可以通过api模块的kernel32.dll接口及ntdll.dll接口向进程管理器发送创建进程的请求(图未示)。
134.s107、进程管理器创建视频应用进程。
135.具体的,进程管理器可以通过该存储地址查询到视频应用程序的二进制文件。通过加载视频应用程序的二进制文件,可以创建进程运行的环境,启动视频应用进程。
136.其中,windows操作系统将一个应用程序的一次运行定义为一个进程。一个进程可以拥有多个线程。窗口是窗口结构的实例,是一种图形用户界面(graphical user interface,gui)资源,窗口是由线程创建的,线程可以拥有它所创建的所有窗口。在本技术实施例中,电子设备运行视频应用,则进程管理器需创建该视频应用的进程,即视频应用进程(即第一进程)。视频应用进程包括多个线程,多个线程包括线程1,线程1可用于创建视频应用的主窗口,主窗口为集成有视频应用全部功能按键的窗口。
137.s108、进程管理器向oseventdriver节点上报进程创建事件。
138.其中,进程创建事件可包括进程管理器所创建的进程的名称。在本技术实施例中,该进程的名称为视频应用进程的名称。当然,若进程管理器创建的是其他应用的进程,该进程的名称也对应为其他应用进程的名称。
139.前文已经说明,oseventdriver节点向进程管理器发送了订阅进程创建事件的请求,且注册了回调。因此,进程管理器在创建视频应用进程后可向oseventdriver节点上报进程创建事件。
140.s109、oseventdriver节点向系统探针模块上报进程创建事件。
141.其中,关于进程创建事件的描述见s108,在此不再赘述。
142.在本技术实施例中,该oseventdriver节点可向系统探针模块的系统事件探针上报该进程创建事件。
143.s110、系统探针模块向场景识别模块发送进程创建事件。
144.s111、响应于线程1的调用请求,api模块创建窗口1。
145.进程管理器创建视频应用进程后,视频应用进程的线程1主动调用api模块的windows用户界面接口创建窗口1。示例性的,如图5中(a)所示,电子设备可以显示窗口101,该窗口101可以为桌面,也可以称为主界面。该窗口101包括视频应用的图标102。电子设备可以接收用户点击该视频应用的图标102的操作,响应于该操作,如图5中的(b)所示,电子设备显示窗口103(即窗口1,也可以称为第一窗口)。在上述过程中,焦点窗口由原本的窗口101变为窗口103。
146.s112、api模块向系统探针模块上报焦点窗口事件。
147.在本技术实施例中,api模块的windows用户界面接口创建窗口1后,可以获取第一进程(即焦点进程)的名称及第二进程的名称,第一进程为当前的焦点窗口(即窗口1)对应的进程,第二进程为上一个焦点窗口(例如,窗口2)对应的进程。示例性的,窗口1对应的进程为视频应用进程(第一进程),该进程的名称例如为hlive.exe,窗口2对应的进程为windows程序管理器的进程(第二进程),该进程的名称例如为explorer.exe。由于第一进程的名称与第二进程的名称不一致,api模块确定焦点窗口发生变化,向系统探针模块的系统事件探针上报焦点窗口事件。其中,焦点窗口变化事件包括第一进程(即焦点进程)的名称。示例性的,第一进程为视频应用进程,焦点窗口变化事件携带有视频应用进程的名称。
148.需要说明的是,在电子设备已经启动视频应用的情况下,电子设备可以不用执行s106~s111。在系统探针模块向api模块发送订阅焦点窗口变化事件的请求后,若用户将焦点窗口切换为视频应用的窗口,api模块同样可以检测到焦点窗口发生变化,并向系统探针模块上报焦点窗口事件。
149.s113、系统探针模块向场景识别模块发送焦点窗口事件。
150.s114、场景识别模块确定第一进程所属的类型为视频类。
151.电子设备可以预先配置有应用名单,场景识别模块可以查询应用名单中是否包括第一进程。若应用名单中包括第一进程,场景识别模块可以确定第一进程所属的类型。其中,应用名单包括每个应用的进程名称及应用所属的类型。示例性的,应用名单可以如表1所示:
152.表1
153.应用进程名称类型
荣耀视频hlive.exe视频类wordword.exe办公类射击游戏shot.exe游戏类微信
tm
wechat.exe社交类
………………
154.例如,第一进程的名称为hlive.exe,则场景识别模块可以确定第一进程所属的类型为视频类。又例如,第一进程的名称为wechat.exe,则场景识别模块可以确定第一进程所属的类型为社交类。需要说明的是,上述表1仅作为示例,实际上表1还可包括更多应用的进程名称及其所属的类型。
155.需要说明的是,此步骤的目的在于初步判断电子设备所处的用户场景。电子设备所处的用户场景可包括视频场景、游戏场景、社交场景、办公场景、浏览器场景等等。其中,视频场景进一步可包括视频播放场景、视频浏览场景。社交场景进一步可包括文字聊天场景、语音聊天场景、视频聊天场景等。办公场景进一步可包括文档编辑场景、文档浏览场景、视频会议场景等。浏览器场景可包括浏览网页场景及播放视频场景等。
156.在本步骤中,通过第一进程所属的类型,可以确定电子设备所处的用户场景的类型。例如,若确定第一进程所属的类型为视频类,则可以确定电子设备处于视频场景;又例如,若确定第一进程所属的类型为游戏类,则可以确定电子设备处于游戏场景。为了进一步分析用户需求,场景识别模块还可以进一步结合其他参数(例如,外设事件、gpu运行状态等)来分析电子设备所处的具体场景,以达到分析结果更加准确的效果,其具体内容参见后文,在此暂不描述。
157.s115,响应于接收到用户播放视频的操作,视频应用向api模块发送视频播放指令。
158.具体的,视频应用可向api模块的directx api发送该视频播放指令。该视频播放指令可包括视频的缓存地址。
159.s116、api模块读取视频文件。
160.api模块可根据视频播放指令中携带的缓存地址,读取对应的视频文件。
161.s117、api模块向显卡驱动发送解码指令。
162.s118、显卡驱动向gpu发送启动指令。
163.s119、gpu进行解码。
164.具体的,gpu可通过gpu video processing引擎对该视频文件进行解码操作。
165.s120、gpu向显卡驱动上报解码事件。
166.s121、显卡驱动向oseventdriver节点上报解码事件。
167.s122、oseventdriver节点向系统探针模块上报解码事件。
168.具体的,oseventdriver节点向系统探针模块的音视频状态探针上报该解码事件。
169.s123、系统探针模块向场景识别模块发送解码事件。
170.s124、场景识别模块向系统探针模块发送指令1。
171.其中,指令1指示系统探针模块获取第一进程的gpu占用率。该指令1可携带有第一进程的名称。
172.s125、系统探针模块向进程管理器发送获取第一进程的gpu占用率的请求。
video processing引擎,则表明第一进程在使用gpu进行解码操作,可以认为用户在使用视频应用播放视频。又例如,第一进程的gpu引擎不为gpu video processing引擎,则表明第一进程没有在使用gpu进行解码操作,那么用户大概率在视频应用上浏览视频资源,还未播放视频。
196.s136、场景识别模块根据第一进程的进程信息确定用户场景为视频播放场景。
197.其中,第一进程的进程信息包括第一进程的名称、第一进程所属的应用类型、第一进程的gpu占用率及第一进程使用的gpu引擎等信息。
198.综合上述内容可知,若第一进程(焦点进程)的类型为视频类、第一进程的gpu占用率大于0且第一进程的gpu引擎为gpu video processing引擎,则可以确定电子设备处于视频播放场景。
199.需要说明的是,上述s101~s136仅以电子设备处于视频场景下的视频播放场景为例进行说明。实际上,电子设备还可以处于其他用户场景(例如,游戏场景、办公场景、社交场景、视频浏览场景等)。
200.在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于游戏类、cpu的电源模式变为游戏模式(game mode)、第一进程的gpu占用率大于0且第一进程的gpu引擎为gpu 3d引擎,则可以确定电子设备处于游戏场景。
201.其中,系统探针模块的电源状态探针可以向电源管理器发送订阅电源模式变化事件的请求。电源管理器可以在电源模块转换为游戏模式(game mode)时,向系统探针模块的电源状态探针上报该电源模式变化事件。如此,场景识别引擎可通过电源模式变化事件确定cpu的电源模式是否为game mode。
202.另外,场景识别引擎获取第一进程的类型的过程可以参阅图4中s101、s102、s105、s106~s114,场景识别引擎判断第一进程的gpu占用率是否大于0且第一进程的gpu引擎是否为gpu 3d引擎的过程参阅s124~s135。区别在于将视频应用更换为游戏应用,在此不再赘述。
203.下面,再结合图6简单说明电子设备处于办公场景时,其确定自身所处的用户场景的流程。需要说明的是,图6所示的流程图与图4所示的流程图,其原理及流程基本详细,下面仅具体说明两者的不同之处,类似之处不再赘述,详情参见图4中相关步骤的说明。图6示出了本技术实施例提供的一种资源调度方法,其确定电子设备所处的用户场景的流程如下:
204.s201、系统探针模块向oseventdriver节点发送订阅进程创建事件的请求。
205.s202、oseventdriver节点向进程管理器发送订阅进程创建事件的请求。
206.s203、系统探针模块向oseventdriver节点发送订阅外设事件的请求。
207.如图3所示,系统探针模块还包括外设状态探针。在本技术实施例中,可以由系统探针模块的外设状态探针向oseventdriver节点发送订阅外设事件的请求。其中,订阅外设事件的请求也可以称为第四请求。
208.其中,外设事件包括鼠标滚轮滑动、鼠标点击、键盘输入、摄像头输入、麦克风输入等事件。
209.s204、oseventdriver节点向外设驱动发送订阅外设事件的请求。
210.需要说明的是,外设驱动为所有外设的驱动的统称,例如可以包括鼠标驱动、键盘
驱动、摄像头驱动、麦克风驱动等。
211.s205、系统探针模块向api模块发送订阅焦点窗口变化事件的请求。
212.s206、响应于接收用户开启办公应用的操作,办公应用向进程管理器发送创建办公应用进程的请求。
213.其中,创建办公应用进程的请求可包括办公应用程序的存储地址。
214.s207、进程管理器创建办公应用进程。
215.具体的,进程管理器可以通过该存储地址查询到办公应用程序的二进制文件。通过加载办公应用程序的二进制文件,可以创建进程运行的环境,启动视频应用进程。另外,办公应用进程包括线程2,线程2可用于创建办公应用的主窗口。
216.s208、进程管理器向oseventdriver节点上报进程创建事件。
217.s209、oseventdriver节点向系统探针模块上报进程创建事件。
218.其中,该进程创建事件携带有办公应用进程的名称。
219.s210、系统探针模块向场景识别模块发送进程创建事件。
220.s211、响应于线程2的调用请求,api模块创建办公应用窗口。
221.s212、api模块向系统探针模块上报焦点窗口事件。
222.其中,焦点窗口事件中携带有第一进程(焦点进程)的名称。可以理解地,在本技术实施例中,第一进程即为办公应用进程。
223.s213、系统探针模块向场景识别模块发送焦点窗口事件。
224.s214、场景识别模块确定第一进程所属的类型为办公类。
225.例如,第一进程的名称为word.exe,则可以确定第一进程所属的类型为办公类。
226.s215、响应于用户对外设的操作,外设驱动检测到外设事件。
227.s216、外设驱动向oseventdriver节点上报外设事件。
228.s217、oseventdriver节点向系统探针模块发送外设事件。
229.s218、系统探针模块向场景识别模块发送外设事件。
230.s219、场景识别模块根据外设事件及第一进程所属的类型确定用户场景。
231.在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且外设事件为鼠标滚轮滑动事件或点击事件,则可以确定电子设备具体处于办公场景下的文档浏览场景。又或者,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且在接收到键盘输入事件后的预设时间(例如,10秒)内未再次接收到鼠标滚轮滑动事件、鼠标击事件、键盘输入事件,可以确定电子设备具体处于办公场景下的文档浏览场景。
232.在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且接收到键盘输入事件,则可以确定电子设备具体处于办公场景下的文档编辑场景。
233.在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且接收到摄像头输入事件(即摄像头处于开启状态且存在视频流输入),可以确定电子设备具体处于办公场景下的视频会议场景。
234.电子设备还可以处于社交场景。社交场景包括三个具体场景,分别为:文字聊天场景、语音聊天场景及视频聊天场景。判断电子设备处于社交场景的原理与判断电子设备处
于办公场景的原理类似,在此暂不赘述,下面仅说明判断电子设备处于社交场景需要满足的条件。
235.在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于社交类,且接收到键盘输入事件,则可以确定电子设备具体处于社交场景下的文字聊天场景。
236.在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于社交类,且接收到麦克风输入事件且摄像头处于关闭状态,则可以确定电子设备具体处于社交场景下的语音聊天场景。
237.在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于社交类,且接收到麦克风输入事件、摄像头输入事件,则可以确定电子设备具体处于社交场景下的视频聊天场景。
238.上述内容说明了如何识别电子设备所处的用户场景,在确定电子设备所处的用户场景后,电子设备还可根据自身所处的用户场景和系统负载进行资源调度,使得电子设备的cpu可以按照用户的实际需求进行运行,达到在不影响用户体验的情况下避免cpu出现性能过剩的效果。
239.下面,继续以电子设备处于视频播放场景为例,说明电子设备的资源调度过程。如图7所示,本技术实施例提供的一种资源调度方法,其进行资源调度的流程如下:
240.如图7所示,本技术实施方式提供的资源调度方法还包括:
241.s301、场景识别模块向基础调度策略匹配管理器发送场景信息。
242.其中,场景信息用于指示电子设备所处的用户场景。示例性的,电子设备可以预先为不同的用户场景分配唯一标识,该场景信息则可包括用户场景所的唯一标识。例如,该标识(例如为v01)可指示电子设备处于视频播放场景。又例如,该标识(例如为v02)可指示电子设备处于视频浏览场景。
243.关于场景识别模块确定电子设备所处的用户场景的过程,具体参阅s101~s136,在此不再赘述。
244.s302、基础策略匹配管理器根据场景信息得到调度策略1。
245.其中,调度策略1包括os调度策略1及cpu功耗调度策略1。os调度策略1包括第一进程的第一进程优先级及第一i/o优先级。其中,调度策略1也可称为第二调度策略。
246.第一进程的优先级用于衡量第一进程抢占cpu的能力,其优先级越高,则可以优先满足其对cpu资源的占用需求,从而使得第一进程的运行流畅度越高。在一种可选的实施方式中,焦点进程的优先级从高到低依次包括等级:实时、高、高于正常、正常、低于正常、低。其中,第一进程的优先级也可以理解为焦点进程优先级(focus process priority,fpp)。
247.第一进程的i/o优先级用于衡量系统对第一进程的磁盘和i/o请求的响应度,期优先级越高,则第一进程的磁盘和i/o请求的响应度越高,即响应速度越快。在一种可选的实施方式中,焦点进程i/o优先级从高到低依次包括等级:关键、高、正常、低、非常低。其中,第一进程的i/o优先级也可以理解为焦点进程i/o优先级(focus process io priority,fpp_io)。
248.cpu功耗调度策略1包括cpu的第一pl1、第一pl2以及第一epp。
249.可见,调度策略1可以调整第一进程的进程优先级、i/o优先级以及cpu功耗。
250.在一种可选的实施方式中,电子设备可以预先配置各种用户场景和其对应的调度策略。示例性的,各种用户场景和其对应的调度策略的对应关系可以如表2所示。
251.示例性的,若确定电子设备所处的用户场景为社交场景下的文字聊天场景,则调度策略1包括:第一进程的第一进程优先级为正常,第一进程的第一i/o优先级为正常,cpu的第一pl1为12w,第一pl2为60w,第一epp为220。需要说明的是,表2中的调度策略仅作为示例,在实际应用中,进程优先级、i/o优先级、pl1、pl2及epp的值可以与表2中的值不一致。另外,表2仅示出了部分场景的调度策略,实际电子设备还可配置比表2更多的调度策略。
252.需要说明的是,上述调度策略为默认电子设备处于轻负载状态时的调度策略,其可以为电子设备预先统计每个应用在对应的负载特征下的cpu功耗,并根据统计得到的负载特征及cpu功耗配置的。因此,基础策略匹配管理器得到的调度策略1可作为电子设备进行调度的策略的参考方案,电子设备还可根据该调度策略1并结合实际的系统负载来得到实际的调度策略。
253.表2
[0254][0255]
s303、基础策略匹配管理器向场景识别模块发送调度策略1。
[0256]
s304、场景识别模块向负载管控器发送调度策略1和场景信息。
[0257]
也即,基础策略匹配管理器确定调度策略1后,通过场景识别模块向负载管控器转发调度策略1。在一种可选的实施方式中,场景识别模块可以分两个步骤分别向负载管控器发送调度策略1和场景信息。
[0258]
s305、负载管控器向系统探针模块发送获取系统负载的请求。
[0259]
其中,系统负载是处于可运行状态的进程和不可中断状态的进程的平均数。可运行状态的进程指正在使用cpu或者等待使用cpu的进程。不可中断状态的进程为等待i/o访问(例如,磁盘i/o)的进程。
[0260]
s306、系统探针模块向进程管理器发送获取系统负载的请求。
[0261]
如图3所示,系统探针模块包括系统负载探针,可以由系统负载探针向进程管理器发送获取系统负载的请求。在一种可选的实施方式中,也可以由oseventdriver节点向进程管理器转发系统负载探针的获取系统负载的请求(图未示)。
[0262]
s307、进程管理器获取系统负载。
[0263]
s308、进程管理器向系统探针模块发送系统负载。
[0264]
具体的,进程管理器可以向系统探针模块的系统负载探针发送该系统负载。在一种可选的实施方式中,也可以由oseventdriver节点向系统负载探针转发该系统负载(图未示)。
[0265]
s309、系统探针模块向负载管控器发送系统负载。
[0266]
s310、负载管控器根据系统负载、场景信息及调度策略1,得到调度策略2。
[0267]
调度策略2可包括os调度策略2(也可以称为os调度策略)和cpu功耗调度策略2(也可以称为第一子策略)。cpu功耗调度策略2包括pl1`、pl2`、epp`,pl1`为负载管控器调整后的pl1,也可以称为第二pl1。pl2`为负载管控器调整后的pl2,也可以称为第二pl2。epp`为负载管控器调整后的epp,也可以称为第二epp。其中,调度策略2也可以称为第一调度策略。
[0268]
在一种可选的实施方式中,负载管控器可将系统负载划分为三个等级,分别为轻负载、中负载、重负载。电子设备可预先配置各种用户场景和其对应的调整策略。例如,调整策略可以如表3所示:
[0269]
表3
[0270][0271]
示例性的,若电子设备处于视频播放场景,且根据表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。
[0272]
需要说明的是,表3仅示出了部分用户场景及其对应的调整策略,电子设备还可配置比表3更多的调整策略,在此不做具体限制。
[0273]
在一种可选的实施方式中,系统负载与cpu功耗之间满足特定的映射关系(例如通过特定算式进行映射),负载管控器也可以通过该特定算式和系统负载计算得到cpu功耗,
进而得到调度策略2。
[0274]
s311、负载管控器向调度执行器发送os调度策略2。
[0275]
其中,os调度策略2包括第一进程的第二进程优先级、第二i/o优先级。
[0276]
s312、调度执行器向i/o管理器发送指令1。
[0277]
其中,指令1携带有第一进程的第二i/o优先级。另外,如图3所示,调度执行器包括i/o优先级接口,可以由该i/o优先级接口向i/o管理器发送指令1。其中,该指令1也可以称为第二指令。
[0278]
s313、响应于指令1,i/o管理器调整第一进程的i/o优先级。
[0279]
也即,i/o管理器可将第一进程的i/o优先级调整为第二i/o优先级。如此,可以保证第一进程可以优先进行i/o访问,减少第一进程在i/o访问过程中的响应时间。
[0280]
s314、调度执行器向进程管理器发送指令2。
[0281]
其中,指令2携带有第一进程的第二进程优先级。另外,如图3所示,调度执行器还包括进程优先级接口,可以由该进程优先级接口向进程管理器发送指令2。其中,该指令2也可以称为第一指令。
[0282]
s315、响应于接收到指令2,进程管理器调整第一进程的进程优先级。
[0283]
也即,进程管理器可将第一进程的进程优先级调整为第二进程优先级。如此,第一进程可以优先占用cpu资源,保证第一进程能够流畅运行。
[0284]
可见,通过调整第一进程的i/o优先级和进程优先级,可以优先保证第一进程的i/o访问以及对cpu资源的消耗,使得第一进程可以正常、流畅地运行,保证用户有良好的体验。
[0285]
需要说明的是,s312与s314之间不存在严格的先后顺序,可以先执行s312再执行s314,也可以先执行s314再执行s312,也可以同时执行s314和s312。
[0286]
s316、负载管控器向芯片策略融合器发送cpu功耗调度策略2。
[0287]
s317、芯片策略融合器判断cpu的芯片平台类型为或者
[0288]
公司的cpu芯片和公司的cpu,对于cpu功耗的调整方式并不相同,因此需要进行区分。其中,若cpu的芯片平台类型为(也可以称为第一类型),则执行s318;若pu的芯片平台类型为(也可以称为第二类型),则执行s325。
[0289]
s318,芯片策略融合器向调度执行器发送cpu功耗调度策略2。
[0290]
其中,cpu功耗调度策略2包括pl1`、pl2`、epp`。
[0291]
s319,调度执行器向os2soc驱动节点发送指令3。
[0292]
其中,指令3携带有pl1`、pl2`。也即,指令3用于调整cpu的pl1和pl2。其中,指令3也可以称为第三指令。
[0293]
在一种可选的实施方式中,可以由调度执行器的cpu功耗调度接口向os2soc驱动节点发送指令3。
[0294]
s320,os2soc驱动节点向cpu发送指令3。
[0295]
s321、响应于指令3,cpu调整pl1和pl2。
[0296]
也即,cpu可将pl1调整为pl1`,将pl2调整为pl2`。
[0297]
s322、调度执行器向电源管理器发送指令4。
[0298]
其中,指令4携带有epp`。也即,指令4用于调整cpu的epp。指令4也可以称为第四指
令。
[0299]
s323、电源管理器向cpu发送指令4。
[0300]
s324、响应于指令4,cpu调整epp。
[0301]
也即,cpu可将epp调整为epp`。
[0302]
s325、芯片策略融合器根据cpu功耗调度策略2确定动态调谐技术策略号。
[0303]
动态调谐技术(dynamic tuning technology,dtt)是公司在处理器和理器和独立显卡之间自动并动态分配功耗,以优化性能并延长电池续航时间的技术,其可以使cpu和gpu的性能得到提升,智能混合工作负载功率平衡。
[0304]
可以理解地,dtt策略号与cpu功耗调度策略2可以存在映射关系。在bios中会构建一张dtt策略表,任何一条cpu功耗调度策略2都能通过其内的参数(pl1`、pl2`、epp`)映射到dtt策略表中某个dtt策略号,如表4所示。
[0305]
其中,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时越倾向性能。
[0306]
表4
[0307][0308]
其中,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时越倾向性能。
[0309]
需要说明的是,表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。
[0310]
s326、芯片策略融合器向调度执行器发送dtt策略号。
[0311]
在一种可选的实施方式中,芯片策略融合器也可直接向调度执行器发送该dtt策略号对应的功dtt策略(即第二子策略)。
[0312]
s327、调度执行器向intel dtt驱动发送dtt策略号。
[0313]
s328、intel dtt驱动向cpu发送dtt策略号。
[0314]
可以理解地,该intel dtt驱动可通过bios向cpu发送dtt策略号。
[0315]
s329、cpu基于dtt策略号运行。
[0316]
可见,若cpu的芯片平台类型为芯片策略融合器可以通过调度执行器向电源管理器发送调整epp的指令,电源管理器可调整cpu的epp。另外,调度执行器还可以向os2soc驱动节点发送调整pl1、pl2的指令,os2soc驱动节点驱动cpu的pl1和pl2。
[0317]
若cpu的芯片平台类型为则芯片策略融合器可以确定cpu功耗调度策略2得到dtt策略号,并通过调度执行器通过bios向intel dtt驱动发送dtt策略号,使得cpu基于该dtt策略号运行,达到调整功耗的效果。
[0318]
可以理解地,本技术可以获取焦点窗口变化事件以及第一信息(包括焦点进程的进程信息、焦点进程对gpu的占用情况、外设事件以及电源模式等),并根据焦点窗口变化事件以及第一信息确定电子设备当前所处的用户场景,并结合用户场景和电子设备的系统负载确定第一调度策略,基于第一调度策略调整焦点进程的进程优先级、i/o优先级以及cpu的功耗,在流畅满足用户需求(保证焦点进程流畅运行)的情况下,降低电子设备的能耗。
[0319]
本技术实施例还提供一种电子设备,所述电子设备包括存储器和一个或多个处理器;
[0320]
其中,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;当所述计算机指令被所述处理器执行时,使得所述电子设备执行上述方法实施例中的各个功能或者步骤。该电子设备的结构可以参考图1所示的电子设备100的结构。
[0321]
本技术实施例还提供一种芯片系统,如图8所示,该芯片系统包括至少一个处理器801和至少一个接口电路802。处理器801和接口电路802可通过线路互联。例如,接口电路802可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路802可用于向其它装置(例如处理器801)发送信号。示例性的,接口电路802可读取存储器中存储的指令,并将该指令发送给处理器801。当所述指令被处理器801执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
[0322]
本技术实施例还提供一种计算机存储介质,该计算机存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中手机执行的各个功能或者步骤。
[0323]
本技术实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中手机执行的各个功能或者步骤。
[0324]
可以理解的是,本技术实施例提供的电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
[0325]
本技术实施例可以根据上述方法示例对上述电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0326]
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0327]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0328]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0329]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0330]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0331]
以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献