CN116028314B - 温度参数读取方法、电子设备和计算机可读存储介质 - Google Patents
温度参数读取方法、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116028314B CN116028314B CN202210763594.6A CN202210763594A CN116028314B CN 116028314 B CN116028314 B CN 116028314B CN 202210763594 A CN202210763594 A CN 202210763594A CN 116028314 B CN116028314 B CN 116028314B
- Authority
- CN
- China
- Prior art keywords
- temperature
- temperature parameter
- gpu
- parameter
- electronic device
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 391
- 238000001514 detection method Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 335
- 239000000523 sample Substances 0.000 description 111
- 238000012545 processing Methods 0.000 description 45
- 239000008186 active pharmaceutical agent Substances 0.000 description 33
- 230000006870 function Effects 0.000 description 32
- 230000002093 peripheral effect Effects 0.000 description 25
- 238000007726 management method Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 19
- 230000008859 change Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 230000004927 fusion Effects 0.000 description 8
- 238000009499 grossing Methods 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 241000256836 Apis Species 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000004020 conductor Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- ZJPGOXWRFNKIQL-JYJNAYRXSA-N Phe-Pro-Pro Chemical compound C([C@H](N)C(=O)N1[C@@H](CCC1)C(=O)N1[C@@H](CCC1)C(O)=O)C1=CC=CC=C1 ZJPGOXWRFNKIQL-JYJNAYRXSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请涉及计算机技术领域,提供了一种温度参数读取方法、电子设备和计算机可读存储介质。该方法包括:获取目标器件的温度参数,温度参数与通过在目标器件外部设置的温度传感器所探测的参数相关,温度参数用于表征目标器件的温度;根据温度参数更新预设配置文件,预设配置文件用于存储温度参数;接收温度读取指令;响应于温度读取指令,读取预设配置文件以获取温度参数。以上方法可以节约功耗。
Description
本申请要求于2022年05月16日提交国家知识产权局、申请号为202210530435.1、申请名称为“温度读取方法、电子设备和计算机可读存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,具体涉及一种温度参数读取方法、电子设备和计算机可读存储介质。
背景技术
通常人们在使用电子设备时,例如使用笔记本电脑的过程中,常常需要对电子设备的硬件的使用状态进行监控。例如,用户会使用一些电脑管理软件来读取中央处理器(central processing unit,CPU)或图形处理器(graphic processing unit,GPU)的温度。如果存在硬件过热的情况,则电子设备会采取降低功耗或者增大风扇的转速的措施。
以监控GPU的温度为例,常见的电脑管理软件读取GPU的温度时,需要在GPU为唤醒的状态下来获取GPU上报的温度。那么如果GPU处于休眠状态,则需要先唤醒GPU,然后再获取GPU的温度,当GPU上报完温度后再进入休眠状态。
然而,监控GPU的温度通常为周期性的操作,例如每隔一秒GPU上报一次温度。这样就会使得GPU每隔一秒就被唤醒一次,如果需要在一段时间内监控GPU的温度,GPU则在没有任何处理任务的情况下被唤醒,无法一直保持低功耗的状态,导致功耗的浪费。
发明内容
本申请提供了一种温度参数读取方法、装置、芯片、电子设备、计算机可读存储介质和计算机程序产品,能够节约功耗。
第一方面,提供了一种温度参数读取方法,包括:获取目标器件的温度参数,温度参数与通过设置在目标器件外部的温度传感器所探测的参数相关,温度参数用于表征目标器件的温度;根据温度参数更新预设配置文件,预设配置文件用于存储温度参数;接收温度读取指令;响应于温度读取指令,读取预设配置文件以获取温度参数。
该温度读取指令可以是温度检测软件按照预设的检测周期下发的温度读取的指令,也可以是用户通过操作温度检测软件,例如点击温度检测软件的界面上的读取温度的控件下发的温度读取指令。该温度读取指令用于读取预设配置文件中的温度参数。
上述温度参数可以是直接通过目标器件外部的温度传感器探测的表示温度的参数,也可以是目标器件外部的温度传感器探测的表示温度的参数经过处理后的参数,只要是和目标器件外部的温度传感器探测的表示温度的参数相关的能够表示目标器件的温度的参数即可。
上述方法中,通过设置在目标器件外部的温度传感器探测的参数相关的表征目标器件的温度的温度参数,并将该温度参数更新至预设配置文件中。当需要获取目标器件的温度时,可以基于温度读取指令来读取预设配置文件,从而获取其中存储的温度参数。该方法无需器件在休眠的时候仅为了上报温度参数而被唤醒,避免了器件在不执行任何处理任务的情况下被无效的唤醒导致的功耗浪费的情况,可以使得器件在没有处理任务的时候持续地保持低功耗的状态,相比器件被唤醒去上报温度参数的方式来说节约了功耗,提升了整机的续航能力。
在一些可能的实现方式中,获取目标器件的温度参数,包括:第一应用程序(application,APP)通过系统(例如Windows系统)管理规范(windows managementinstrumentation,WMI)通道,获取存储在输入输出系统(basic input output system,BIOS)中的温度参数,温度参数由嵌入式控制器(embedded controller,EC)上报至BIOS中。
当第一APP为第三方的温度监测软件时,第一APP可以通过WMI通道来接收底层上报的温度参数。通常,温度参数可以是存储在EC的RAM中,然后通过调用目标器件对应的驱动程序将该温度参数通过WMI通道上传至应用程序。
在一些可能的实现方式中,根据温度参数更新预设配置文件,包括:第一APP根据温度参数更新预设配置文件。
应用层的第一APP如果接收到底层通过WMI通道传递的温度参数,则可以将该温度参数存储在预设配置文件中对应的数据位上,以备读取。如果预设配置文件中存储温度参数的数据位已经存储有历史的温度参数,则可以使用新获取的温度参数来覆盖历史的温度参数,从而确保其他APP能够通过访问预设配置文件来读取到最新的温度参数。
在一些可能的实现方式中,响应于温度读取指令,读取预设配置文件以获取温度参数,包括:第一APP响应于温度读取指令,读取预设配置文件以获取温度参数。
第一APP可以基于用户在第一APP上的操作,生成温度读取指令,也可以在检测温度的过程中,按照预设周期(例如1秒)生成温度读取指令。响应于该温度读取指令,第一APP读取预设配置文件,从而获取温度参数。
在一些可能的实现方式中,温度参数的确定方式包括:采用预设平滑算法对多个初始温度参数进行处理,得到温度参数,多个初始温度参数为多个连续检测时刻探测到的表征目标器件的温度的参数,多个连续检测时刻中,相邻检测时刻的时间间隔为预设周期。
温度传感器可以在每个预设周期开始的检测时刻探测的一组初始温度参数,并上报给EC。当EC得到多个连续检测时刻所检测到初始温度参数时,则可以对这多个初始温度参数进行平滑处理,并将处理的结果作为最近一次检测时刻对应的温度参数。该平滑处理可以是去除超过其他初始温度参数过高的数值,以及去除低于其他初始温度参数过低的数值,从而去除一些异常的数据;也可以是将多个初始温度参数按照预设的权重系数进行加权求和得到最近一次检测时刻对应的温度参数。这样可以避免由于外界的环境干扰导致的温度参数波动过大,得到较小波动的温度参数,能够排除外界环境导致的干扰,减小和实际温度的偏差,使得获取到的温度参数的准确度提高。
在一些可能的实现方式中,采用预设平滑算法对多个初始温度参数进行处理,得到温度参数,包括:获取多个初始温度参数;获取多个权重系数,多个初始温度参数与多个权重系数一一对应;将多个初始温度参数中每个初始温度参数与对应的权重系数的积进行求和,得到温度参数。
上述多个权重系数可以预置在EC RAM中,EC可以读取EC RAM中的多个权重系数然后基于这多个权重系数对多个初始温度参数进行加权求和,即每个初始温度参数乘以对应的权重系数,并将乘积相加的和,作为最近一次检测时间对应的温度参数。上述多个权重系数的和可以为1。
在一些可能的实现方式中,多个连续检测时刻包括第一时刻和第二时刻,第一时刻在第二时刻之前,第一时刻探测的初始温度参数对应的权重系数小于第二时刻探测的初始温度参数对应的权重系数。
上述多个连续检测时刻中至少包括第一时刻和第二时刻,第一时刻和第二时刻为多个连续检测时刻中的任意两个不同的检测时刻。如果将上述多个初始温度参数按照检测时间从早到晚排列,那么这多个初始温度参数对应的多个权重系数则按照从小到大的顺序排列,即距离最近一次检测时间越远的初始温度参数对最近一次检测时间对应的温度参数的贡献越小,距离最近一次检测时间越近的初始温度参数对最近一次检测时间对应的温度参数的贡献越大。
在一些可能的实现方式中,多个初始温度参数的数量为三个。如果初始温度参数的数量多,则会增大计算量,影响效率;如果初始温度参数的数量少,则有可能使得外界干扰导致的影响较大。而EC选择将三个连续检测时刻的初始温度参数进行平滑处理,得到最近一次检测时间对应的温度参数,可以兼顾数据处理的效率和准确性,因此更为合理。
在一些可能的实现方式中,预设配置文件为具有开放接口的共享动态链接库DLL文件,能够向其他的温度监测软件提供温度参数的读取功能。
在一些可能的实现方式中,目标器件为GPU。
该方法可以无需在GPU休眠的时候为了上报温度参数而唤醒GPU,避免了GPU在唤醒和休眠状态之间的不断切换,可以使得GPU在没有处理任务的时候持续地保持低功耗的状态,节约了功耗,提升了整机的续航能力。
在一些可能的实现方式中,还包括:根据温度参数显示目标器件的温度。第一APP可以根据读取的温度参数将目标器件,例如是GPU的温度显示在界面上,使得用户能够直观监控硬件的温度,提升了用户体验。
第二方面,提供了一种温度参数读取装置,包括由软件和/或硬件组成的单元,该单元用于执行第一方面的技术方案中任意一种方法。
第三方面,提供了一种电子设备,电子设备包括:处理器、存储器和接口;处理器、存储器和接口相互配合,使得电子设备执行第一方面所述的技术方案中任意一种方法。
第四方面,本申请实施例提供一种芯片,包括处理器;处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面所述的技术方案中任意一种方法。
可选地,所述芯片还包括存储器,存储器与处理器通过电路或电线连接。
进一步可选地,所述芯片还包括通信接口。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得该处理器执行第一方面所述的技术方案中任意一种方法。
第六方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在电子设备上运行时,使得该电子设备执行第一方面所述的技术方案中任意一种方法。
附图说明
图1为本申请实施例提供的一种电子设备的结构示意图;
图2为本申请实施例提供的一种软件模块架构示意图;
图3为本申请实施例提供的软件模块间的交互示意图;
图4为本申请实施例提供的一种信号交互示意图;
图5为本申请实施例提供的一种界面图;
图6为本申请实施例提供的又一种信号交互示意图;
图7为本申请实施例提供的又一种信号交互示意图;
图8是本申请实施例提供的一例软件模块架构示意图;
图9是本申请实施例提供的一例温度参数读取方法的流程示意图;
图10是本申请实施例提供的一例温度参数读取方法在模块架构中的流程图;
图11是本申请实施例提供的又一例温度参数读取方法在模块架构中的流程图;
图12是本申请实施例提供的一例软件升级流程示意图。
图13是本申请实施例提供的一例温度参数读取装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。
本申请实施例提供的温度参数读取方法可以应用于平板电脑、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personaldigital assistant,PDA)等电子设备上,本申请实施例对电子设备的具体类型不作任何限制。
请参考图1,为本申请实施例提供的电子设备100的结构示意图。
如图1所示,电子设备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)接口,脉冲编码调制(pulsecode modulation,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的软件结构。
图2为本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Windows系统分为用户态和内核态。其中,用户态包括应用层以及子系统动态链接库。内核态自下而上分为固件层、硬件抽象层(hardwareabstraction layer,HAL)、内核和驱动层及执行体。
如图2所示,应用层包括音乐、视频、游戏、办公、社交等应用程序。应用层还包括环境子系统、场景识别引擎以及调度引擎等。其中,图中仅示出部分应用程序,应用层还可以包括其他应用程序,例如购物应用、浏览器等,本申请不做限定。
环境子系统可以将基本的执行体系统服务的某些子集以特定的形态展示给应用程序,为应用程序提供执行环境。
场景识别引擎可以识别电子设备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发送调整维持功率限值(sustained,power limite,SPL)(或PL1)和慢包功率跟踪(slow packagepower tracking,s-PPT)(或PL2)的信息。
内核和驱动层包括内核以及设备驱动程序。
内核是对处理器体系结构的抽象,将执行体与处理器体系结构的差异相隔离,保证系统的可移植性。内核可以进行线程安排和调度、陷阱处理和异常调度、中断处理和调度等。
设备驱动程序运行在内核模式下,为I/O系统和相关硬件之间的接口。设备驱动程序可包括显卡驱动、Intel DTT驱动、鼠标驱动、音视频驱动、摄像头驱动、键盘驱动等。例如,显卡驱动可以驱动GPU运行,Intel DTT驱动可以驱动CPU运行。
HAL是一个核心态模块,可以隐藏各种与硬件有关的细节,例如I/O接口、中断控制器以及多处理器通信机制等,为运行Windows的不同硬件平台提供统一的服务接口,实现多种硬件平台上的可移植性。需要说明的是,为了维护Windows的可移植性,Windows内部组件和用户编写的设备驱动程序并不直接访问硬件,而是通过调用HAL中的例程。
固件层可以包括基本BIOS,BIOS是一组固化到计算机主板上一个只读存储器(read only memory,ROM)芯片内的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从互补金属氧化物半导体(complementary metaloxide semiconductor,CMOS)中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。Intel DTT驱动可以通过BIOS向CPU发送指令的。
需要说明的是,本申请实施例仅以Windows系统举例来说明,在其他操作系统中(例如安卓系统,IOS系统,鸿蒙系统等),只要各个功能模块实现的功能和本申请的实施例类似也能实现本申请的方案。
图3示出了电子设备100对资源进行调度的软件及硬件的工作流程示意图。
如图3所示,应用层的场景识别引擎包括系统探针模块、场景识别模块及基础策略匹配管理器。场景识别模块可分别与系统探针模块及基础策略匹配管理器进行交互。场景识别模块可以向系统探针模块发送获取探针状态的请求。系统探针模块可以获取电子设备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中的说明)。基础策略匹配管理器可向场景识别模块反馈该基础调度策略。场景识别模块可向应用层的调度引擎发送该基础调度策略及用户场景。
如图3所示,调度引擎包括负载管控器、芯片策略融合器以及调度执行器。其中,负载管控器可接收场景识别模块发送的基础调度策略及用户场景。负载管控器还可从系统探针模块获取系统负载,并根据系统负载和用户场景对该基础调度策略进行调整,得到实际调度策略(也可称为第一调度策略,具体可以参见下文S310中的说明)。实际调度策略中包括OS调度策略和第一CPU功耗调度策略(也可称为第一子策略)。其中,负载管控器可向调度执行器发送该OS调度策略,由调度执行器基于该OS调度策略进行调度。OS调度策略用于调整焦点进程的进程优先级及I/O优先级。示例性的,调度执行器可向进程管理器发送调整焦点进程的进程优先级的指令,响应于该指令,进程管理器对焦点进程的进程优先级进行调整。又例如,调度执行器可向I/O管理器发送调整焦点进程的I/O优先级的指令,响应于该指令,I/O管理器对焦点进程的I/O优先级进行调整。
负载管控器还可向芯片策略融合器发送第一CPU功耗调度策略,芯片策略融合器可基于CPU的芯片平台类型及该第一CPU功耗调度策略,得到第二CPU功耗调度策略(也可称为第二子策略,具体可以参见下文S317~S325中的说明)。CPU的芯片平台类型主要分为两种,分别为超威半导体公司(Advanced Micro Devices,AMD)的CPU和/> 的CPU,这两类CPU对于CPU功耗的调整方式并不相同,因此需要进行区分。
若CPU的芯片平台类型为AMD(也可以称为第一类型),调度执行器可以向电源管理器发送调整能源性能偏好(energy performance preference,EPP)的指令,以调整CPU的EPP。另外,调度执行器还可以向OS2SOC驱动节点发送调整SPL、s-PPT的指令,以调整CPU的PL1(在AMD平台中可以叫做SPL)和PL2(在AMD平台中可以叫做s-PPT)。
若CPU的芯片平台类型为调度执行器可以通过WMI插件向Intel DTT驱动发送该第二CPU功耗调度策略,第二CPU功耗调度策略可包括PL1的最小值、PL1的最大值、PL2、PL2的持续时间及EPP,由Intel DTT驱动CPU基于该第二CPU功耗调度策略运行。
本申请实施方式所提供的资源调度方法,主要分为两个过程,分别为:(1)确定电子设备所处的用户场景;(2)根据电子设备所处的用户场景及电子设备的系统负载进行资源调度。下面将结合附图分别说明上述两个过程。
下面将以电子设备处于视频播放场景为例,结合图4,对图3所示的电子设备中部分模块的交互过程进行说明。如图4所示,本申请实施例提供的一种资源调度方法,其确定电子设备所处的用户场景的流程如下:
S101、系统探针模块向OsEventDriver节点发送订阅进程创建事件的请求。
如图3所示,场景识别引擎包括系统探针模块,系统探针模块包括系统事件探针。在本申请实施例中,可以由系统事件探针向位于执行体层的OsEventDriver节点发送订阅进程创建事件的请求。其中,订阅进程创建事件的请求也可以称为第一请求。
在一种可选的实施方式中,订阅进程创建事件的请求可以携带有进程名称。即场景识别引擎可以仅订阅指定进程的创建事件,减少不相干进程的创建事件的干扰。例如,指定进程可以为视频应用的进程、游戏应用的进程、办公应用的进程、社交应用的进程等等。当然,在其他实施方式中,场景识别引擎也可以不对订阅的进程创建事件做出限制。
S102、OsEventDriver节点向进程管理器发送订阅进程创建事件的请求。
进程创建事件的请求可以参考S101的描述,在此不做赘述。
也就是说,场景识别引擎的系统事件探针可以通过OsEventDriver节点向进程管理器发送订阅进程创建事件的请求。
可以理解地,OsEventDriver节点会向进程管理器注册一个回调,注册该回调的作用是当进程管理器创建进程后,可以向OsEventDriver节点返回该进程创建事件。
S103、系统探针模块向OsEventDriver节点发送订阅GPU解码事件的请求。
仍然如图3所示,系统探针模块还包括音视频状态探针。在本申请实施例中,可以由系统探针模块的音视频状态探针向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之间没有严格的先后顺序,其可以按照图4中所示的顺序依次执行,也可以同时执行,也可以按照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。示例性的,如图5中(a)所示,电子设备可以显示窗口101,该窗口101可以为桌面,也可以称为主界面。该窗口101包括视频应用的图标102。电子设备可以接收用户点击该视频应用的图标102的操作,响应于该操作,如图5中的(b)所示,电子设备显示窗口103(即窗口1,也可以称为第一窗口)。在上述过程中,焦点窗口由原本的窗口101变为窗口103。
S112、API模块向系统探针模块上报焦点窗口事件。
在本申请实施例中,API模块的windows用户界面接口创建窗口1后,可以获取第一进程(即焦点进程)的名称及第二进程的名称,第一进程为当前的焦点窗口(即窗口1)对应的进程,第二进程为上一个焦点窗口(例如,窗口2)对应的进程。示例性的,窗口1对应的进程为视频应用进程(第一进程),该进程的名称例如为hlive.exe,窗口2对应的进程为windows程序管理器的进程(第二进程),该进程的名称例如为explorer.exe。由于第一进程的名称与第二进程的名称不一致,API模块确定焦点窗口发生变化,向系统探针模块的系统事件探针上报焦点窗口事件。其中,焦点窗口变化事件包括第一进程(即焦点进程)的名称。示例性的,第一进程为视频应用进程,焦点窗口变化事件携带有视频应用进程的名称。
需要说明的是,在电子设备已经启动视频应用的情况下,电子设备可以不用执行S106~S111。在系统探针模块向API模块发送订阅焦点窗口变化事件的请求后,若用户将焦点窗口切换为视频应用的窗口,API模块同样可以检测到焦点窗口发生变化,并向系统探针模块上报焦点窗口事件。
S113、系统探针模块向场景识别模块发送焦点窗口事件。
S114、场景识别模块确定第一进程所属的类型为视频类。
电子设备可以预先配置有应用名单,场景识别模块可以查询应用名单中是否包括第一进程。若应用名单中包括第一进程,场景识别模块可以确定第一进程所属的类型。其中,应用名单包括每个应用的进程名称及应用所属的类型。示例性的,应用名单可以如表1所示:
表1
例如,第一进程的名称为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引擎,则执行S129;若第一进程的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。
另外,场景识别引擎获取第一进程的类型的过程可以参阅图4中S101、S102、S105、S106~S114,场景识别引擎判断第一进程的GPU占用率是否大于0且第一进程的GPU引擎是否为GPU 3D引擎的过程参阅S124~S135。区别在于将视频应用更换为游戏应用,在此不再赘述。
下面,再结合图6简单说明电子设备处于办公场景时,其确定自身所处的用户场景的流程。需要说明的是,图6所示的流程图与图4所示的流程图,其原理及流程基本详细,下面仅具体说明两者的不同之处,类似之处不再赘述,详情参见图4中相关步骤的说明。图6示出了本申请实施例提供的一种资源调度方法,其确定电子设备所处的用户场景的流程如下:
S201、系统探针模块向OsEventDriver节点发送订阅进程创建事件的请求。
S202、OsEventDriver节点向进程管理器发送订阅进程创建事件的请求。
S203、系统探针模块向OsEventDriver节点发送订阅外设事件的请求。
如图3所示,系统探针模块还包括外设状态探针。在本申请实施例中,可以由系统探针模块的外设状态探针向OsEventDriver节点发送订阅外设事件的请求。其中,订阅外设事件的请求也可以称为第四请求。
其中,外设事件包括鼠标滚轮滑动、鼠标点击、键盘输入、摄像头输入、麦克风输入等事件。
S204、OsEventDriver节点向外设驱动发送订阅外设事件的请求。
需要说明的是,外设驱动为所有外设的驱动的统称,例如可以包括鼠标驱动、键盘驱动、摄像头驱动、麦克风驱动等。
S205、系统探针模块向API模块发送订阅焦点窗口变化事件的请求。
S206、响应于接收用户开启办公应用的操作,办公应用向进程管理器发送创建办公应用进程的请求。
其中,创建办公应用进程的请求可包括办公应用程序的存储地址。
S207、进程管理器创建办公应用进程。
具体的,进程管理器可以通过该存储地址查询到办公应用程序的二进制文件。通过加载办公应用程序的二进制文件,可以创建进程运行的环境,启动视频应用进程。另外,办公应用进程包括线程2,线程2可用于创建办公应用的主窗口。
S208、进程管理器向OsEventDriver节点上报进程创建事件。
S209、OsEventDriver节点向系统探针模块上报进程创建事件。
其中,该进程创建事件携带有办公应用进程的名称。
S210、系统探针模块向场景识别模块发送进程创建事件。
S211、响应于线程2的调用请求,API模块创建办公应用窗口。
S212、API模块向系统探针模块上报焦点窗口事件。
其中,焦点窗口事件中携带有第一进程(焦点进程)的名称。可以理解地,在本申请实施例中,第一进程即为办公应用进程。
S213、系统探针模块向场景识别模块发送焦点窗口事件。
S214、场景识别模块确定第一进程所属的类型为办公类。
例如,第一进程的名称为word.exe,则可以确定第一进程所属的类型为办公类。
S215、响应于用户对外设的操作,外设驱动检测到外设事件。
S216、外设驱动向OsEventDriver节点上报外设事件。
S217、OsEventDriver节点向系统探针模块发送外设事件。
S218、系统探针模块向场景识别模块发送外设事件。
S219、场景识别模块根据外设事件及第一进程所属的类型确定用户场景。
在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且外设事件为鼠标滚轮滑动事件或点击事件,则可以确定电子设备具体处于办公场景下的文档浏览场景。又或者,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且在接收到键盘输入事件后的预设时间(例如,10秒)内未再次接收到鼠标滚轮滑动事件、鼠标点击事件、键盘输入事件,可以确定电子设备具体处于办公场景下的文档浏览场景。
在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且接收到键盘输入事件,则可以确定电子设备具体处于办公场景下的文档编辑场景。
在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于办公类,且接收到摄像头输入事件(即摄像头处于开启状态且存在视频流输入),可以确定电子设备具体处于办公场景下的视频会议场景。
电子设备还可以处于社交场景。社交场景包括三个具体场景,分别为:文字聊天场景、语音聊天场景及视频聊天场景。判断电子设备处于社交场景的原理与判断电子设备处于办公场景的原理类似,在此暂不赘述,下面仅说明判断电子设备处于社交场景需要满足的条件。
在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于社交类,且接收到键盘输入事件,则可以确定电子设备具体处于社交场景下的文字聊天场景。
在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于社交类,且接收到麦克风输入事件且摄像头处于关闭状态,则可以确定电子设备具体处于社交场景下的语音聊天场景。
在一种可选的实施方式中,若场景识别引擎确定第一进程(焦点进程)的类型属于社交类,且接收到麦克风输入事件、摄像头输入事件,则可以确定电子设备具体处于社交场景下的视频聊天场景。
上述内容说明了如何识别电子设备所处的用户场景,在确定电子设备所处的用户场景后,电子设备还可根据自身所处的用户场景和系统负载进行资源调度,使得电子设备的CPU可以按照用户的实际需求进行运行,达到在不影响用户体验的情况下避免CPU出现性能过剩的效果。
下面,继续以电子设备处于视频播放场景为例,说明电子设备的资源调度过程。如图7所示,本申请实施例提供的一种资源调度方法,其进行资源调度的流程如下:
如图7所示,本申请实施方式提供的资源调度方法还包括:
S301、场景识别模块向基础调度策略匹配管理器发送场景信息。
其中,场景信息用于指示电子设备所处的用户场景。示例性的,电子设备可以预先为不同的用户场景分配唯一标识,该场景信息则可包括用户场景所的唯一标识。例如,该标识(例如为V01)可指示电子设备处于视频播放场景。又例如,该标识(例如为V02)可指示电子设备处于视频浏览场景。
关于场景识别模块确定电子设备所处的用户场景的过程,具体参阅S101~S136,在此不再赘述。
S302、基础策略匹配管理器根据场景信息得到调度策略1。
其中,调度策略1包括OS调度策略1及CPU功耗调度策略1。OS调度策略1包括第一进程的第一进程优先级及第一I/O优先级。其中,调度策略1也可称为第二调度策略。
第一进程的优先级用于衡量第一进程抢占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、系统探针模块向进程管理器发送获取系统负载的请求。
如图3所示,系统探针模块包括系统负载探针,可以由系统负载探针向进程管理器发送获取系统负载的请求。在一种可选的实施方式中,也可以由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。
S311、负载管控器向调度执行器发送OS调度策略2。
其中,OS调度策略2包括第一进程的第二进程优先级、第二I/O优先级。
S312、调度执行器向I/O管理器发送指令1。
其中,指令1携带有第一进程的第二I/O优先级。另外,如图3所示,调度执行器包括I/O优先级接口,可以由该I/O优先级接口向I/O管理器发送指令1。其中,该指令1也可以称为第二指令。
S313、响应于指令1,I/O管理器调整第一进程的I/O优先级。
也即,I/O管理器可将第一进程的I/O优先级调整为第二I/O优先级。如此,可以保证第一进程可以优先进行I/O访问,减少第一进程在I/O访问过程中的响应时间。
S314、调度执行器向进程管理器发送指令2。
其中,指令2携带有第一进程的第二进程优先级。另外,如图3所示,调度执行器还包括进程优先级接口,可以由该进程优先级接口向进程管理器发送指令2。其中,该指令2也可以称为第一指令。
S315、响应于接收到指令2,进程管理器调整第一进程的进程优先级。
也即,进程管理器可将第一进程的进程优先级调整为第二进程优先级。如此,第一进程可以优先占用CPU资源,保证第一进程能够流畅运行。
可见,通过调整第一进程的I/O优先级和进程优先级,可以优先保证第一进程的I/O访问以及对CPU资源的消耗,使得第一进程可以正常、流畅地运行,保证用户有良好的体验。
需要说明的是,S312与S314之间不存在严格的先后顺序,可以先执行S312再执行S314,也可以先执行S314再执行S312,也可以同时执行S314和S312。
S316、负载管控器向芯片策略融合器发送CPU功耗调度策略2。
S317、芯片策略融合器判断CPU的芯片平台类型为或者/>
公司的CPU芯片和/>公司的CPU,对于CPU功耗的调整方式并不相同,因此需要进行区分。其中,若CPU的芯片平台类型为/>(也可以称为第一类型),则执行S318;若CPU的芯片平台类型为/>(也可以称为第二类型),则执行S325。
S318,芯片策略融合器向调度执行器发送CPU功耗调度策略2。
其中,CPU功耗调度策略2包括PL1`、PL2`、EPP`。
S319,调度执行器向OS2SOC驱动节点发送指令3。
其中,指令3携带有PL1`、PL2`。也即,指令3用于调整CPU的PL1和PL2。其中,指令3也可以称为第三指令。
在一种可选的实施方式中,可以由调度执行器的CPU功耗调度接口向OS2SOC驱动节点发送指令3。
S320,OS2SOC驱动节点向CPU发送指令3。
S321、响应于指令3,CPU调整PL1和PL2。
也即,CPU可将PL1调整为PL1`,将PL2调整为PL2`。
S322、调度执行器向电源管理器发送指令4。
其中,指令4携带有EPP`。也即,指令4用于调整CPU的EPP。指令4也可以称为第四指令。
S323、电源管理器向CPU发送指令4。
S324、响应于指令4,CPU调整EPP。
也即,CPU可将EPP调整为EPP`。
S325、芯片策略融合器根据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。
S326、芯片策略融合器向调度执行器发送DTT策略号。
在一种可选的实施方式中,芯片策略融合器也可直接向调度执行器发送该DTT策略号对应的功DTT策略(即第二子策略)。
S327、调度执行器向Intel DTT驱动发送DTT策略号。
S328、Intel DTT驱动向CPU发送DTT策略号。
可以理解地,该Intel DTT驱动可通过BIOS向CPU发送DTT策略号。
S329、CPU基于DTT策略号运行。
可见,若CPU的芯片平台类型为芯片策略融合器可以通过调度执行器向电源管理器发送调整EPP的指令,电源管理器可调整CPU的EPP。另外,调度执行器还可以向OS2SOC驱动节点发送调整PL1、PL2的指令,OS2SOC驱动节点驱动CPU的PL1和PL2。
若CPU的芯片平台类型为则芯片策略融合器可以确定CPU功耗调度策略2得到DTT策略号,并通过调度执行器通过bios向Intel DTT驱动发送DTT策略号,使得CPU基于该DTT策略号运行,达到调整功耗的效果。
可以理解地,本申请可以获取焦点窗口变化事件以及第一信息(包括焦点进程的进程信息、焦点进程对GPU的占用情况、外设事件以及电源模式等),并根据焦点窗口变化事件以及第一信息确定电子设备当前所处的用户场景,并结合用户场景和电子设备的系统负载确定第一调度策略,基于第一调度策略调整焦点进程的进程优先级、I/O优先级以及CPU的功耗,在流畅满足用户需求(保证焦点进程流畅运行)的情况下,降低电子设备的能耗。
以上为对本案涉及的整体框架和整体功能的介绍,上述软件架构还可以简化为图8所示的结构。如图8所示,该软件架构由上到下可以包括应用层,内核和驱动层,以及硬件层。
具体的,应用层可以安装PC管家,该PC管家可以对个人计算机(personalcomputer,PC)的资源进行管理和调度。该PC管家为所使用的应用程序的示例,并不造成对本案的限定。PC管家能够根据不同的探针识别出多种场景,例如音乐场景、视频场景、游戏场景、办公场景和社交场景等。应用层还可以安装其他的电脑管理应用程序(application,APP),用来检测底层的硬件设备的运行状态,例如检测中央处理器(central processingunit,CPU)的资源占用率,CPU的温度,GPU的温度,风扇的转速等。还可以安装其他的管理软件,这些管理软件也能够通过预设的接口调用对应的驱动来获取底层的硬件设备的运行状态。例如,安装温度监测软件来监控CPU或GPU的温度。
内核和驱动层,包括设备驱动程序,例如鼠标驱动、键盘驱动、摄像头驱动、音视频驱动和显卡驱动。这些驱动能够控制对应的硬件设备的工作状态和获取硬件设备的参数。其中,显卡驱动能够控制GPU的状态,例如唤醒GPU和控制GPU处于休眠状态,还可以向硬件层的GPU下发指令,来获取GPU运行的参数,例如向GPU下发温度读取指令来获取温度参数等。获取到GPU的温度参数之后,如果GPU没有被其他APP调用,则显卡驱动可以向GPU下发睡眠指令,使得GPU处于休眠模式。
硬件层,该硬件层包括CPU、GPU、MEMORY、温度传感器(例如热敏电阻DTS)、风扇等硬件设备,这些硬件设备在设备驱动程序的控制下运行。
为了便于理解,本申请以下实施例将以具有上文中所示结构的电子设备为例,结合附图和应用场景,对本申请实施例提供的温度参数读取方法进行具体阐述。
用户在使用PC的过程中,常常需要对底层的硬件设备的运行状态进行监控,例如检测CPU、GPU等高热器件的温度和占用率等。以监测GPU的温度为例,对于普通用户来说,可以通过一些温度监测软件来读取GPU的温度,具体的流程可以参见图9所示:
S901、应用层的温度监测软件启动周期性事件,用于周期性执行读取温度参数的操作。
S902、通过应用层预设的API接口(例如API,该NVAPI为获取温度参数的接口)调度内核与驱动层的显卡驱动(例如NV驱动)来唤醒硬件层的GPU。
S903、由显卡驱动向GPU下发温度读取指令。
S904、GPU则响应该温度读取指令,上报GPU的温度参数。该温度参数沿原先的调用堆栈进行上报,即由显卡驱动通过预设的API接口上报至应用层的温度监测软件,进行显示。
S905、上报完温度参数之后,如果GPU没有新任务,即GPU没有被其他APP调用,则由显卡驱动向GPU下发休眠指令。
S906、GPU在休眠指令的指示下,进入休眠状态。
当用户使用温度监测软件来读取GPU的温度时,电子设备在每个周期(例如1秒),都会重复执行上述S901至S906的步骤。这种情况下,GPU在每个周期都会从休眠状态被唤醒,上报温度,然后再进入休眠。这样的方式会导致GPU在没有进行任何处理的情况下,即没有对系统资源进行任何有效贡献的情况下被不断地唤醒和休眠,频繁地在开/关(OFF/ON)的状态下来回切换,无法在不进行有效的数据处理的情况下持续保持低功耗的状态,因此浪费功耗。在一些场景下经过实测,如果持续测温,上述方法会导致整机功耗增加10W。
本申请所提供的方案可以适用于如图10所示的架构中。如图10所示,以检测GPU的温度为例,通常GPU附近会布置一个温度传感器,例如数字温度传感器(digital thermalsensor,DTS),用来探测GPU的温度。在一些实施例中,GPU上还可以设置铜片等导热材料来进行散热,该导热材料和风扇的距离较近。当风扇转动时,能够通过降低导热材料的温度对GPU进行降温。通常DTS探测到温度参数之后,由嵌入式控制器(embedded controller,EC)进行读取。EC获取到温度参数后,可以根据温度参数表征的温度高低对风扇的转速进行控制。例如,如果温度高于一定的温度阈值,则可以增大风扇的转速,加速GPU的散热;如果温度低于一定的阈值,则可以认为此时GPU温度较低,可以减小风扇的转速,以降低风扇带来的噪声,提升用户体验。
本申请所提供的方案中,EC获取到温度参数之后,该温度参数可以通过基本输入输入系统(basic input output system,BIOS),经由WMI驱动传递,写入动态链接库(dynamic-link library,DLL)文件中。当温度检测软件需要获取温度参数的时候,可以通过读取DLL文件获取温度参数。PC管家也可以通过自身的显卡管理模块,通过读取共享DLL文件来读取温度参数,并将温度参数所表征的温度进行显示。该方法通过设置在GPU外部的温度传感器探测表征GPU的温度参数并上报至应用层,因此无需在GPU休眠的时候为了上报温度参数而唤醒GPU,避免了GPU在唤醒和休眠状态之间的不断切换,可以使得GPU在没有处理任务的时候保持休眠状态,从而持续地保持低功耗的状态,节约了功耗,提升了整机的续航能力。
在一些实施例中,上述共享DLL文件可以作为一些应用程序的接口,向外提供温度参数的读取功能。当然,其他硬件设备的状态,例如CPU的温度参数、风扇的转速或者硬件层的其他的硬件设备的状态也可以通过如图10所示的架构中温度参数的路径进行传递,本申请实施例并不做限定。针对不同硬件设备的状态可以采用针对各个硬件设备设置的传感器来进行监测。
为了更为清楚的对应用在上述图10的框架中的方法进行说明,还可以参见图11所示的流程,包括:
S1101、EC按照定时器设置的预设的周期,例如1秒的周期,读取DTS的温度参数。
S1102、根据最近一次读取的温度参数调整风扇的转速。
S1103、采用平滑算法,根据连续三个周期检测到的三个温度参数计算出新的温度参数,作为最近一个周期对应的温度参数,并存储在EC RAM中。
具体的,为了避免由于外界的环境干扰导致的温度值波动过大,EC可以将读取到的多个连续周期的温度参数采用平滑算法进行处理,得到较小波动的温度值,能够排除外界环境导致的干扰,减小和实际温度的偏差,使得获取到的温度值的准确度提高。
以三个连续周期为例,EC可以采用公式T=a*Ti+b*Ti-1+c*Ti-2来进行处理。其中。Ti为i时刻(一个整周期的时刻)检测到的温度值,Ti-1为Ti时刻的前一个周期检测到的温度值,Ti-2为Ti-1时刻的前一个周期检测到的温度值,a、b、c分别为Ti、Ti-1、Ti-2这三个时刻对应的权重系数。通常,a、b、c中,a最大,表示针对i时刻的温度T来说,Ti所占的影响最大;c最小,表示针对i时刻的温度T来说,Ti-2所占的影响最小。在一些实施例中,a=70%,b=20%,c=10%。当然,其中a、b、c也可采用其他的权重系数,权重系数的大小可以根据实际的需要进行调整。
在一些实施例中,电子设备获取多次连续检测周期的温度参数来计算最近一个周期对应的温度参数,并存储在EC RAM中,可以是对连续两个周期的温度参数进行融合,或者是对连续四个或五个检测周期的温度参数进行融合,对此本申请实施例也不做限定。
在一些实施例中,电子设备也可以直接获取当前周期的温度参数来存储在EC RAM中。
S1104、当应用层的温度监测软件接收到用户需要检测GPU温度的指令时,可以执行访问共享DLL文件的操作,即下发温度读取指令。
S1105、调用WMI驱动转发温度读取指令。
S1106、通过BIOS转发WMI下发的温度读取指令,读取EC RAM中新的温度参数。
之后,新的温度参数经过上述堆栈传递至应用层,更新共享DLL文件中的温度参数,以供温度监测软件读取。
在一些实施例中,为了达到兼容的目的,PC管家中可以设置一个SDK,该SDK中可以包括上述共享DLL文件。该共享DLL文件具有开放接口,能够向其他的温度监测软件提供温度参数的读取功能。
在一些场景下,参见图10所示的场景,温度监测软件正在监测GPU的温度,即正在访问共享DLL文件。此时共享DLL文件被温度监测软件占用,PC管家没有权限强制关闭温度监测软件。而如果PC管家正值升级的过程中,需要将旧版本的文件替换为升级包中释放出的新的文件。如果旧的共享DLL文件作为PC管家的文件,被温度监测软件占用,PC管家没有权限强制关闭温度监测软件,则无法对旧的共享DLL文件执行删除的操作,这样会导致PC管家升级不成功。
因此,在温度监测软件测温时,为了确保PC管家的升级流程顺利进行,PC管家在共享DLL文件被占用时,可以将升级包中新的共享DLL文件释放至旧的共享DLL文件的路径下,然后通过在新的共享DLL文件的后缀增加标识来区分新旧共享DLL文件,之后根据新的文共享DLL文件的文件名(包括新的后缀)来修改温度监测软件的注册表,使得修改后的注册表指向新的共享DLL文件。当PC管家第一次升级时,可以在旧的共享DLL文件的后缀上添加标识A,记作文件A;在新的共享DLL文件的后缀上添加标识B,记作文件B。第一次升级过程中,则可以描述为,PC管家将文件B存储在文件A的路径中,并修改温度监测软件的注册表,使得调用共享DLL文件的路径指向文件B。这样,当温度监测软件下一次启动的时候,就可以依据修改后的注册表来访问文件B,即使用升级后的SDK来获取温度值。其中,该SDK可以随PC管家的升级同步更新。该方法无需关闭温度监测软件,能够在监测温度的同时完成PC管家的升级操作,提高PC管家的升级成功率。同时,通过修改温度监测软件的注册表,使得温度监测软件能够在新的注册表的作用下,访问新的共享DLL文件,从而使得获取的温度值更准确。
可选地,PC管家第一次升级完成后,可以保留后续不再访问的文件A,无需执行删除操作,来减少无效的操作,节约系统资源;也可以执行删除文件A的操作,来释放空间。
当PC管家需要进行第二次升级的时候,可以将第二次升级需要释放的新的共享DLL文件的后缀添加A的标识,记作新的文件A,存储在和已有的文件B相同的路径下。在存储新的文件A之前,需要将旧的文件A删除。同时还需要将修改温度检测软件的注册表来指向新的文件A,使得温度检测软件在下一次使用时能够访问到新的文件A,从而完成二次升级。当然,PC管家还会面临多次升级,可以将每次升级所释放的新的共享DLL文件在相邻两次升级的过程中,轮流使用后缀A和后缀B。如果每次升级都增加新的后缀,例如增加新的后缀C、D等,系统则会记录多个共享DLL文件,如果不删除每次升级时的旧的共享DLL文件,也会存在大量无效文件占用存储的空间的情况,本实施例所提供的方法使得PC管家在多次升级的过程中,温度监测软件所调用的共享DLL能够在两个文件之间来回互换,而不用每次PC管家升级都更换调用的共享DLL文件,因此减少了系统所管理的文件的数量,也能够删除大量无效文件,释放了存储空间,减少了系统冗余。
本申请中对释放新的共享DLL文件所占用的存储空间的位置和大小不做具体限制,只要是能够存储新的共享DLL文件即可,提高了升级操作的灵活性。
图12为一个实施例中针对PC管家升级的流程进行的详细说明,包括:
S1201、PC管家确定系统是否需要重启。此处的系统为操作系统。
S1202A、若是,则提示用户重启系统。
S1202B、若否,则确定执行PC管家的升级流程,执行S1203。
S1203、读取温度监测软件的注册表,确定当前状态时,温度检测软件占用的共享DLL文件为文件A或文件B。
S1204A、若文件A被占用,则删除旧的文件B,并将新的文件增加后缀B的标识并存储在相同的路径下,作为新的文件B。如果该路径下没有旧的文件B,则无需执行删除的操作。
S1204B、若文件B被占用,则删除旧的文件A,并将新的文件增加后缀A的标识并存储在相同的路径下,作为新的文件A。如果该路径下没有旧的文件B,则无需执行删除的操作。
S1205、修改温度监测软件的注册表并设置需要重启的标志。
当系统重启后,新的文件A或新的文件B生效。
图12所示的实施例中各个步骤的实现原理和有益效果可以参见前述实施例中对PC管家升级的实施例的描述,此处不再赘述。
上文详细介绍了本申请提供的温度读取方法的示例。可以理解的是,相应的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请可以根据上述方法示例对温度读取装置进行功能模块的划分,例如,可以将各个功能划分为各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图13为一个实施例提供的温度参数读取装置1300的结构示意图。包括:
获取模块1301,用于获取目标器件的温度参数,温度参数与通过设置在目标器件外部的温度传感器所探测的参数相关,温度参数用于表征目标器件的温度;
更新模块1302,用于根据温度参数更新预设配置文件,预设配置文件用于存储温度参数;
接收模块1303,用于接收温度读取指令;
处理模块1304,用于响应于温度读取指令,读取预设配置文件以获取温度参数。
在一些实施例中,获取模块1301,具体用于控制第一APP通过系统管理规范WMI通道,获取存储在基本输入输出系统BIOS中的所述温度参数,所温度参数由EC上报至BIOS。
在一些实施例中,更新模块1302,具体用于控制第一APP根据温度参数更新预设配置文件。
在一些实施例中,处理模块1304,具体用于控制第一APP响应于温度读取指令,读取预设配置文件以获取温度参数。
在一些实施例中,获取模块1301,具体用于采用预设平滑算法对多个初始温度参数进行处理,得到温度参数,多个初始温度参数为多个连续检测时刻探测到的表征目标器件的温度的参数,多个连续检测时刻中,相邻检测时刻的时间间隔为预设周期。
在一些实施例中,获取模块1301,具体用于获取多个初始温度参数;获取多个权重系数,多个初始温度参数与多个权重系数一一对应;将多个初始温度参数中每个初始温度参数与对应的权重系数的积进行求和,得到温度参数。
在一些实施例中,多个连续检测时刻包括第一时刻和第二时刻,第一时刻在第二时刻之前,第一时刻探测的初始温度参数对应的权重系数小于第二时刻探测的初始温度参数对应的权重系数。
在一些实施例中,多个初始温度参数的数量为三个。
在一些实施例中,预设配置文件为具有开放接口的共享动态链接库DLL文件。
在一些实施例中,目标器件为图形处理器GPU。
在一些实施例中,处理模块1304,还用于根据温度参数显示目标器件的温度。
温度参数读取装置执行温度参数读取方法的具体方式以及产生的有益效果可以参见方法实施例中的相关描述,此处不再赘述。
本申请实施例还提供了一种电子设备,包括上述处理器。本实施例提供的电子设备可以是图1所示,为终端设备,例如是笔记本电脑,用于执行上述温度读取方法。在采用集成的单元的情况下,终端设备可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对终端设备的动作进行控制管理,例如,可以用于支持终端设备执行显示单元、检测单元和处理单元执行的步骤。存储模块可以用于支持终端设备执行存储程序代码和数据等。通信模块,可以用于支持终端设备与其它设备的通信。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi-Fi芯片等与其它终端设备交互的设备。
在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的终端设备可以为具有图1所示结构的设备。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行上述任一实施例所述的温度参数读取方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的温度参数读取方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,更换的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种温度参数读取方法,其特征在于,包括:
获取目标器件的温度参数,所述温度参数与通过设置在所述目标器件外部的温度传感器所探测的参数相关,所述温度参数用于表征所述目标器件的温度,所述目标器件为图形处理器GPU;
根据所述温度参数更新预设配置文件,所述预设配置文件用于存储所述温度参数;
接收温度读取指令;
响应于所述温度读取指令,读取所述预设配置文件以获取所述温度参数的同时,当所述预设配置文件所属的管理应用程序进行升级时,获取所述管理应用程序的程序包中新的预设配置文件,所述新的预设配置文件的文件名携带新的后缀,所述新的预设配置文件的存储路径和所述预设配置文件相同;
再次接收所述温度读取指令,读取所述新的预设配置文件以获取新的温度参数;
其中,所述获取目标器件的温度参数,包括:
第一应用程序APP通过系统管理规范WMI通道,获取存储在基本输入输出系统BIOS中的所述温度参数,所述温度参数由嵌入式控制器EC上报至所述BIOS中;
所述方法还包括:
所述EC根据所述温度参数对风扇的转速进行控制;
当所述温度参数表征的温度高于预设温度阈值时,增大所述风扇的转速;
当所述温度参数表征的温度小于预设温度阈值时,减小所述风扇的转速;
所述温度参数的获取方式包括:
获取多个初始温度参数;其中,所述多个初始温度参数为多个连续检测时刻探测到的表征所述目标器件的温度的参数,所述多个连续检测时刻中,相邻检测时刻的时间间隔为预设周期,所述多个连续检测时刻包括第一时刻和第二时刻,所述第一时刻在所述第二时刻之前;
获取多个权重系数,所述多个初始温度参数与所述多个权重系数一一对应,所述第一时刻探测的初始温度参数对应的权重系数小于所述第二时刻探测的初始温度参数对应的权重系数;
将所述多个初始温度参数中每个所述初始温度参数与对应的权重系数的积进行求和,得到所述温度参数。
2.根据权利要求1所述的方法,其特征在于,所述根据所述温度参数更新预设配置文件,包括:
所述第一应用程序APP根据所述温度参数更新所述预设配置文件。
3.根据权利要求1或2所述的方法,其特征在于,所述响应于所述温度读取指令,读取所述预设配置文件以获取所述温度参数,包括:
所述第一应用程序APP响应于所述温度读取指令,读取所述预设配置文件以获取所述温度参数。
4.根据权利要求1所述的方法,其特征在于,所述多个初始温度参数的数量为三个。
5.根据权利要求1或2所述的方法,其特征在于,所述预设配置文件为具有开放接口的共享动态链接库DLL文件。
6.根据权利要求1或2所述的方法,其特征在于,还包括:
根据所述温度参数显示所述目标器件的温度。
7.一种电子设备,其特征在于,包括:处理器、存储器和接口;
所述处理器、所述存储器和所述接口相互配合,使得所述电子设备执行如权利要求1至6任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至6任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2022105304351 | 2022-05-16 | ||
CN202210530435 | 2022-05-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028314A CN116028314A (zh) | 2023-04-28 |
CN116028314B true CN116028314B (zh) | 2023-11-14 |
Family
ID=86078307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210763594.6A Active CN116028314B (zh) | 2022-05-16 | 2022-06-30 | 温度参数读取方法、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028314B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011056170A1 (en) * | 2009-11-04 | 2011-05-12 | Deere & Company | Electronic data processing system having a virtual bus server application |
CN103024531A (zh) * | 2012-11-12 | 2013-04-03 | 北京奇虎科技有限公司 | 硬件监测方法及系统 |
CN103019907A (zh) * | 2012-11-26 | 2013-04-03 | 北京奇虎科技有限公司 | 一种终端电池温度监测方法和装置及终端 |
CN103324526A (zh) * | 2012-03-19 | 2013-09-25 | 联想(北京)有限公司 | 一种调用传感器的方法 |
-
2022
- 2022-06-30 CN CN202210763594.6A patent/CN116028314B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011056170A1 (en) * | 2009-11-04 | 2011-05-12 | Deere & Company | Electronic data processing system having a virtual bus server application |
CN103324526A (zh) * | 2012-03-19 | 2013-09-25 | 联想(北京)有限公司 | 一种调用传感器的方法 |
CN103024531A (zh) * | 2012-11-12 | 2013-04-03 | 北京奇虎科技有限公司 | 硬件监测方法及系统 |
CN103019907A (zh) * | 2012-11-26 | 2013-04-03 | 北京奇虎科技有限公司 | 一种终端电池温度监测方法和装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN116028314A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115599513B (zh) | 资源调度方法及电子设备 | |
CN105589336B (zh) | 多处理器设备 | |
KR102691293B1 (ko) | 전자 장치의 전력 소모 감소를 위한 방법 및 장치 | |
US10470133B2 (en) | Electronic device and method for controlling application and component | |
US10853026B2 (en) | Method and apparatus for streaming audio by using wireless link | |
EP2919115B1 (en) | Task migration method and apparatus | |
WO2018082412A1 (zh) | 电子设备控制方法、装置及电子设备 | |
US20130074067A1 (en) | Multimodal computing device | |
CN116028205B (zh) | 资源调度方法和电子设备 | |
KR102257737B1 (ko) | 전자장치의 처리량 제어장치 및 방법 | |
CN116028210B (zh) | 资源调度方法、电子设备及存储介质 | |
US11422857B2 (en) | Multi-level scheduling | |
CN116027879B (zh) | 确定参数的方法、电子设备和计算机可读存储介质 | |
CN116028211B (zh) | 显卡调度方法、电子设备和计算机可读存储介质 | |
CN116027880B (zh) | 资源调度方法和电子设备 | |
CN116028314B (zh) | 温度参数读取方法、电子设备和计算机可读存储介质 | |
KR20180004956A (ko) | 전자 장치 및 전자 장치의 동작 방법 | |
CN117112191B (zh) | 信息处理方法和电子设备 | |
CN116025580A (zh) | 调节风扇转速的方法和电子设备 | |
CN116028209B (zh) | 资源调度方法、电子设备及存储介质 | |
CN116027878B (zh) | 功耗调整方法和电子设备 | |
CN116055443B (zh) | 识别社交场景的方法、电子设备及计算机可读存储介质 | |
WO2024093491A1 (zh) | 一种性能调控方法及电子设备 | |
CN116028206A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |