CN115017003B - 负载预测方法和负载预测装置 - Google Patents

负载预测方法和负载预测装置 Download PDF

Info

Publication number
CN115017003B
CN115017003B CN202111607998.8A CN202111607998A CN115017003B CN 115017003 B CN115017003 B CN 115017003B CN 202111607998 A CN202111607998 A CN 202111607998A CN 115017003 B CN115017003 B CN 115017003B
Authority
CN
China
Prior art keywords
target
thread
load
processor
threads
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
Application number
CN202111607998.8A
Other languages
English (en)
Other versions
CN115017003A (zh
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
Priority to CN202111607998.8A priority Critical patent/CN115017003B/zh
Publication of CN115017003A publication Critical patent/CN115017003A/zh
Application granted granted Critical
Publication of CN115017003B publication Critical patent/CN115017003B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • 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/266Arrangements to supply power to external peripherals either directly from the computer or under computer control, e.g. supply of power through the communication port, computer controlled power-strips
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Supply And Distribution Of Alternating Current (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种负载预测方法和负载预测装置,该方法包括:从历史绘帧任务的绘帧周期中确定多个目标线程,多个目标线程之间存在唤醒关系,唤醒关系用于表示线程之间唤醒与被唤醒的关系;根据多个目标线程中每个目标线程在处理器的运行时长,计算多个目标线程的总负载,总负载为每个目标线程的负载之和;根据多个目标线程的总负载和绘帧周期的时长,确定历史绘帧任务的负载;根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载。该方法可以预测终端设备运行时线程在绘帧任务中的负载,以便于终端设备根据预测的负载为系统中的线程提供合适的性能,从而使得资源供给更准确。

Description

负载预测方法和负载预测装置
技术领域
本申请涉及终端技术领域,尤其涉及一种负载预测方法和负载预测装置。
背景技术
目前,终端设备在运行时,常遇到性能不足而引起终端设备运行卡顿等问题,影响用户体验,或者,性能过供导致终端设备因高能耗而引起发热、续航能力下降等问题,即终端设备无法平衡功耗和性能。
因此,亟需一种预测负载的方法,以使终端设备根据预测的负载为系统中的线程提供合适的性能。
发明内容
本申请提供一种负载预测方法和负载预测装置,可以预测终端设备运行时线程在绘帧任务中的负载,以便于终端设备根据预测的负载为系统中的线程提供合适的性能,从而使得资源供给更准确。
第一方面,提供了一种负载预测方法,包括:从历史绘帧任务的绘帧周期中确定历史的多个目标线程,多个目标线程之间存在唤醒关系,唤醒关系用于表示线程之间唤醒与被唤醒的关系;根据多个目标线程中每个目标线程在处理器的运行时长,计算多个目标线程的总负载,总负载为每个目标线程的负载之和;根据多个目标线程的总负载和绘帧周期的时长,确定历史绘帧任务的负载;根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载。
历史绘帧任务可以理解为终端设备已经执行过的绘帧任务。历史绘帧任务的数量可以为一个,也可以为多个,本申请实施例对此不做限定。
绘帧周期可以为绘帧任务的上一个绘帧任务的结束时刻至该绘帧任务的结束时刻之间的时间段。绘帧周期的时长可以为该时间段的时长。
终端设备可以从该多个线程中确定多个目标线程,本申请实施例对目标线程的个数不做限定。该多个目标线程之间存在唤醒关系,即多个目标线程之间存在唤醒与被唤醒的关系,本申请实施例对具体的唤醒关系不做限定。
每个目标线程在处理器的运行时长可以指每个目标线程被调度到处理器上运行的时间点与每个目标线程唤醒其它线程的时间点(或者在处理器上被调度出的时间点)之间的时长。
需要说明的是,本申请实施例中“线程被调度到处理器上运行”也可以理解为“线程被调度入处理器”,“线程在处理器上被调度出”也可以理解为“线程调度出处理器”,本申请实施例对此不作限定。终端设备可以根据多个目标线程中每个目标线程在处理器的运行时长,计算每个目标线程的负载,然后将每个目标线程的负载进行求和计算,得到多个目标线程的总负载。
下一个绘帧任务可以理解为终端设备中同一应用即将要执行的绘帧任务,该终端设备即将要执行的绘帧任务可以为历史绘帧任务的下一个绘帧任务。
本申请实施例提供的负载预测方法,在历史绘帧任务中确定存在唤醒关系的多个线程,并根据该多个线程在处理器运行时的负载和绘帧周期的时长,确定历史绘帧任务的负载,并根据该历史绘帧任务的负载,预测多个线程在下一个绘帧任务中在处理器运行时的负载。本申请实施例的方法,将历史绘帧任务的负载作为样本进行预测,以便于终端设备根据预测的负载为系统中的线程提供合适的性能,从而使得资源供给更准确。
结合第一方面,在第一方面的某些实现方式中,上述根据多个目标线程中每个目标线程在处理器的运行时长,计算多个目标线程的总负载,包括:根据每个目标线程在处理器的运行时长和处理器的运行频率,计算每个目标线程的负载系数,处理器的运行频率是每个目标线程在处理器运行时处理器的频率;根据每个目标线程在处理器的运行时长和每个目标线程的负载系数,计算每个目标线程的负载;将每个目标线程的负载进行求和,得到多个目标线程的总负载。
每个目标线程在处理器运行时,处理器的运行频率可以相同也可以不同,本申请实施例对此不作限定。
应理解,绘帧周期内,目标线程在处理器运行时长应小于或等于目标线程的唤醒时长,该目标线程的唤醒时长是指目标线程被唤醒到目标线程在处理器运行结束之间的时长。
本申请实施例提供的负载预测方法,利用目标线程在处理器的运行时长和处理器的运行频率,计算目标线程的负载系数,相比直接利用目标线程的唤醒时长和处理器的运行频率计算得到的目标线程的负载系数,具有更高的准确性,有利于提高得到多个目标线程的总负载的准确性。
结合第一方面,在第一方面的某些实现方式中,上述多个目标线程中第一目标线程在处理器运行时,处理器的运行频率包括第一频率和第二频率,第一频率的持续时长为第一时长,第二频率的持续时长为第二时长,第一目标线程的运行时长包括第一时长和第二时长,第一目标线程的负载系数包括第一负载系数和第二负载系数;根据每个目标线程在处理器的运行时长和处理器的运行频率,计算每个目标线程的负载系数,包括:根据第一时长和第一频率,计算第一负载系数;根据第二时长和第二频率,计算第二负载系数;根据每个目标线程在处理器的运行时长和每个目标线程的负载系数,计算每个目标线程的负载,包括:根据第一时长和第一负载系数,计算第一目标线程的第一负载;根据第二时长和第二负载系数,计算第一目标线程的第二负载;将第一负载和第二负载之和作为第一目标线程的负载。
结合第一方面,在第一方面的某些实现方式中,上述历史绘帧任务的数量为多个;根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载,包括:对历史绘帧任务的负载进行加权求和计算,得到计算结果;将计算结果确定为多个目标线程在下一个绘帧任务中的负载。
当历史绘帧任务的数量为多个时,终端设备可以对该多个历史绘帧任务的负载进行加权求和计算,得到计算结果,并将计算结果确定为多个目标线程在下一个绘帧任务中的负载。应理解,该多个目标线程可能会在下一帧绘帧任务中被终端设备调度到处理器运行,当该多个目标线程在在下一帧绘帧任务中被终端设备调度到处理器运行时,终端设备可以确定该多个目标线程的负载。
本申请实施例提供的负载预测方法,对多个历史绘帧任务的负载进行加权求和计算,得到多个目标线程在下一个绘帧任务中的负载,可以根据任意侧重点,调节每一个历史绘帧任务的加权系数,有利于灵活应用。
结合第一方面,在第一方面的某些实现方式中,上述历史绘帧任务的数量为n,历史绘帧任务中第i个历史绘帧任务的负载的加权系数为
Figure BDA0003426983130000031
其中,i∈{1,2,…,n-1},且n为大于或等于2的正整数,历史绘帧任务的负载的加权系数之和为1。
本申请实施例提供的负载预测方法,提供了一种加权系数的设置方法,距离当前时间最近的一个历史绘帧任务的加权系数最大,距离最近的历史绘帧任务对预测的影响更大,有利于提高预测的负载的准确性。
结合第一方面,在第一方面的某些实现方式中,上述在根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载之后,方法还包括:根据多个目标线程在下一个绘帧任务中的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围;当多个目标线程中存在目标线程在下一个绘帧任务中被调度到处理器运行时,按照频率范围,调整处理器的频率。
当该多个目标线程中存在任一目标线程在下一个绘帧任务中被调度到处理器运行时,终端设备可以按照频率范围,调整处理器的频率。
本申请实施例提供的负载预测方法,可以根据预测的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围,并可以按照频率范围,调整处理器的频率,以为多个目标线程在下一个绘帧任务中运行时提供合适的性能。
结合第一方面,在第一方面的某些实现方式中,上述根据多个目标线程在下一个绘帧任务中的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围,包括:根据多个目标线程在下一个绘帧任务中的负载、处理器的容量以及处理器在下一个绘帧任务中的频率,确定处理器的频率范围。
结合第一方面,在第一方面的某些实现方式中,上述处理器的频率范围下限为:
Figure BDA0003426983130000032
处理器的频率范围上限为:/>
Figure BDA0003426983130000033
其中,a和b为预设系数,且大于或等于0,util为多个目标线程在下一个绘帧任务中的负载,max_freq为处理器的最大频率,max为处理器的最大处理能力。
结合第一方面,在第一方面的某些实现方式中,上述从历史绘帧任务的绘帧周期中确定多个目标线程,包括:从历史绘帧任务的绘帧周期中确定目标渲染线程;基于绘帧周期中已发生的重要事件信息,追溯绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,重要事件信息包括线程与线程之间的唤醒事件;基于绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,确定绘帧周期中的多个目标线程,多个目标线程包括目标渲染线程。
渲染线程为实现绘帧任务的关键线程,终端设备可以从历史绘帧任务的绘帧周期中确定目标渲染线程,并将目标渲染线程作为目标线程。
在绘帧周期中终端设备可以执行多个线程,在该多个线程执行过程中,终端设备可以记录发生的重要事件信息,该重要事件信息包括线程与线程之间的唤醒事件。线程与线程之间的唤醒事件可以包括正在运行的线程唤醒的休眠中的线程,正在运行的线程创建线程并唤醒被创建的线程。
终端设备可以基于目标渲染线程,采用回溯的方法,将目标渲染线程作为被唤醒的线程,在绘帧周期中已发生的重要事件信息中确定唤醒目标渲染线程的线程,并将其确定为目标线程。应理解,上述多个目标线程也可以理解为目标线程组,目标线程组可以包括目标渲染线程和唤醒目标渲染线程的线程。
本申请实施例提供的负载预测方法,以渲染线程为目标线程,根据线程之间的唤醒关系,采用回溯的方式,依次确定多个目标线程,可以将实现绘帧任务的关键线程确定为目标线程,进而有利于提高预测的负载的准确性。
第二方面,提供了一种负载预测装置,包括:确定模块、计算模块以及预测模块。确定模块用于:从历史绘帧任务的绘帧周期中确定历史的多个目标线程,多个目标线程之间存在唤醒关系,唤醒关系用于表示线程之间唤醒与被唤醒的关系;计算模块用于:根据多个目标线程中每个目标线程在处理器的运行时长,计算多个目标线程的总负载,总负载为每个目标线程的负载之和;确定模块还用于:根据多个目标线程的总负载和绘帧周期的时长,确定历史绘帧任务的负载;预测模块用于:根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载。
结合第二方面,在第二方面的某些实现方式中,上述计算模块还用于:根据每个目标线程在处理器的运行时长和处理器的运行频率,计算每个目标线程的负载系数,处理器的运行频率是每个目标线程在处理器运行时处理器的频率;根据每个目标线程在处理器的运行时长和每个目标线程的负载系数,计算每个目标线程的负载;将每个目标线程的负载进行求和,得到多个目标线程的总负载。
结合第二方面,在第二方面的某些实现方式中,上述多个目标线程中第一目标线程在处理器运行时,处理器的运行频率包括第一频率和第二频率,第一频率的持续时长为第一时长,第二频率的持续时长为第二时长,第一目标线程的运行时长包括第一时长和第二时长,第一目标线程的负载系数包括第一负载系数和第二负载系数;计算模块还用于:根据第一时长和第一频率,计算第一负载系数;根据第二时长和第二频率,计算第二负载系数;根据第一时长和第一负载系数,计算第一目标线程的第一负载;根据第二时长和第二负载系数,计算第一目标线程的第二负载;将第一负载和第二负载之和作为第一目标线程的负载。
结合第二方面,在第二方面的某些实现方式中,上述历史绘帧任务的数量为多个;计算模块还用于:对历史绘帧任务的负载进行加权求和计算,得到计算结果;将计算结果确定为多个目标线程在下一个绘帧任务中的负载。
结合第二方面,在第二方面的某些实现方式中,上述历史绘帧任务的数量为n,历史绘帧任务中第i个历史绘帧任务的负载的加权系数为
Figure BDA0003426983130000041
其中,i∈{1,2,…,n-1},且n为大于或等于2的正整数,历史绘帧任务的负载的加权系数之和为1。
结合第二方面,在第二方面的某些实现方式中,上述装置还包括调整模块;确定模块还用于:根据多个目标线程在下一个绘帧任务中的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围;调整模块用于:当多个目标线程中存在目标线程在下一个绘帧任务中被调度到处理器运行时,按照频率范围,调整处理器的频率。
结合第二方面,在第二方面的某些实现方式中,上述确定模块还用于:根据多个目标线程在下一个绘帧任务中的负载、处理器的容量以及处理器在下一个绘帧任务中的频率,确定处理器的频率范围。
结合第二方面,在第二方面的某些实现方式中,上述处理器的频率范围下限为:
Figure BDA0003426983130000051
处理器的频率范围上限为:/>
Figure BDA0003426983130000052
其中,a和b为预设系数,且大于或等于0,util为多个目标线程在下一个绘帧任务中的负载,max_freq为处理器的最大频率,max为处理器的最大处理能力。
结合第二方面,在第二方面的某些实现方式中,上述装置还包括追溯模块;确定模块还用于:从历史绘帧任务的绘帧周期中确定目标渲染线程;追溯模块用于:基于绘帧周期中已发生的重要事件信息,追溯绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,重要事件信息包括线程与线程之间的唤醒事件;确定模块还用于:基于绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,确定绘帧周期中的多个目标线程,多个目标线程包括目标渲染线程。
第三方面,本申请提供了一种负载预测装置,包括处理器,该处理器与存储器耦合,可用于执行存储器中的指令,以实现上述第一方面中任一种可能实现方式中的方法。可选地,该频率预测装置还包括存储器。可选地,该频率预测装置还包括通信接口,处理器与通信接口耦合。
第四方面,本申请提供了一种处理器,包括:输入电路、输出电路和处理电路。处理电路用于通过输入电路接收信号,并通过输出电路发射信号,使得处理器执行上述第一方面中任一种可能实现方式中的方法。
在具体实现过程中,上述处理器可以为芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本申请对处理器及各种电路的具体实现方式不做限定。
第五方面,本申请提供了一种处理装置,包括处理器和存储器。该处理器用于读取存储器中存储的指令,并可通过接收器接收信号,通过发射器发射信号,以执行上述第一方面中任一种可能实现方式中的方法。
可选地,处理器为一个或多个,存储器为一个或多个。
可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不做限定。
应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。
上述第五方面中的处理装置可以是一个芯片,该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
第六方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
第七方面,本申请提供了一种计算机程序产品,计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
附图说明
图1为本申请实施例提供的一种基于手机的游戏操作的示意图;
图2为本申请实施例提供的一种手机运行线程的示意图;
图3为本申请实施例提供的一种终端设备的结构示意图;
图4为本申请实施例提供的一种终端设备的软件结构的示意性框图;
图5为本申请实施例提供的一种负载预测方法的示意性流程图;
图6为本申请实施例提供的一种绘帧周期的示意图;
图7为本申请实施例提供的一种多个目标线程的确定方法的示意性流程图;
图8为本申请实施例提供的一种多个目标线程的的示意图;
图9为本申请实施例提供的另一种多个目标线程的的示意图;
图10为本申请实施例提供的一种目标线程队列的的示意性框图;
图11为本申请实施例提供的一种目标渲染线程在处理器运行时的示意图;
图12为本申请实施例提供的另一种目标渲染线程在处理器运行时示意图;
图13为本申请实施例提供的一种负载队列的示意性框图;
图14为本申请实施例提供的多个历史绘帧任务的负载的加权系数的示意图;
图15为本申请实施例提供的一种负载预测装置的示意性框图;
图16为本申请实施例提供的一种负载预测装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
在介绍本申请实施例提供的负载预测方法和负载预测装置之前,先做出以下几点说明。
第一,在下文示出的实施例中,各术语及英文缩略语,如目标线程、唤醒关系、绘帧任务以及运行频率等,均为方便描述而给出的示例性举例,不应对本申请构成任何限定。本申请并不排除在已有或未来的协议中定义其它能够实现相同或相似功能的术语的可能。
第二,在下文示出的实施例中第一、第二以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围。例如,区分不同的频率、区分不同的时长等。
第三,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b和c中的至少一项(个),可以表示:a,或b,或c,或a和b,或a和c,或b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。
目前,终端设备在运行时,常因性能不足而引起终端设备运行卡顿等问题,影响用户体验,或者,性能过供导致终端设备因高能耗而引起发热、续航能力下降等问题,即终端设备无法平衡功耗和性能。
示例性地,终端设备可以为手机,手机可以运行游戏应用程序。图1示出了一种基于手机的游戏操作的示意图,如图1中的a界面所示,该a界面可以包括游戏人物101、游戏人物102、1技能图标、2技能图标、3技能图标以及普通技能图标。用户可以通过点击1技能图标、2技能图标、3技能图标或者普通技能图标控制游戏人物301释放1技能、2技能、3技能或者普通技能。
用户点击普通技能图标,手机检测到普通技能图标对应的控件被触发后,可以显示图1中的b界面。如图1中的b界面所示,游戏人物101释放普通攻击,即游戏人物101出拳攻击游戏人物102。
手机从显示图1中a界面到显示图1中的b界面,若手机性能不足,从a界面转换到b界面的时间较长,且显示b界面时,手机会出现卡顿,不流畅等问题,影响用户体验。若手机性能过供,会出现手机发热等问题,若手机处于长期性能过供,可能会导致续航能力下降等问题。
本申请实施例以终端设备是手机为例,描述手机正常运行以及手机运行时出现发热或顿现象时,手机显示一帧图像运行线程的状态。
示例性地,图2示出了手机运行线程的示意图。在图2中,矩形200可以代表手机,矩形200的长度为手机显示一帧图像所需时长,手机显示一帧图像所需时长可以由手机的屏幕刷新率确定。手机显示一帧图像所需时长可以理解为是固定的。填充黑色的矩形为手机显示一帧图像所运行的线程,填充黑色的矩形的长度代表手机运行该线程所需要的时长。手机显示一帧图像所运行的线程包括线程201、线程202、线程203、线程204以及线程205。应理解,手机显示一帧图像所运行的线程的个数仅仅为一个示例,本申请实施例对此不作限定。
当手机在运行时出现发热现象时,手机显示一帧图像运行线程的状态可以如图2中的a所示,手机运行线程201、线程202、线程203、线程204以及线程205的所需时长较短,远小于手机显示一帧图像所需时长,此时,手机的性能过供,终端设备的功耗过大,产生了发热问题。
当手机在运行时出现卡顿现象时,手机显示一帧图像运行线程的状态可以如图2中的b所示,手机运行线程201、线程202、线程203以及线程204所需时长较长,线程205未运行已到达了手机显示一帧图像所需时长,此时,手机的性能不足,出现界面卡顿的现象。
当手机在正常运行时,手机显示一帧图像运行线程的状态可以如图2中的c所示,手机运行线程201、线程202、线程203、线程204以及线程205所需时长之和可以为手机显示一帧图像所需时长,此时,手机界面流畅,且不会产生发热的现象。
经研究分析,终端设备性能不足,可能是因为终端设备的处理器资源调节和应用绘帧线程负载不协调,导致应用绘帧线程在处理器上执行时间过长。终端设备性能过供,可能是因为终端设备的处理器的频率过高,可以满足终端设备的运行需求,但会增加终端设备的功耗,并产生发热问题。
有鉴于此,本申请实施例提供一种负载预测方法和负载预测装置,可以预测终端设备运行时线程在绘帧任务中的负载,以便于终端设备根据预测的负载为系统中的线程提供合适的性能,从而使得资源供给更准确。
本申请实施例提供的负载预测方法和负载预测装置,可以应用于终端设备运行的任意场景,例如,终端设备在运行游戏、购物、视频等应用程序的场景,终端设备在运行滑动列表的场景。
本申请实施例涉及的终端设备可以为手机、平板电脑、个人计算机(personalcomputer,PC)、智能手表等可穿戴电子设备,各种教学辅助工具(例如学习机、早教机)、智能玩具、便携式机器人、个人数字助理(personal digital assistant,PDA)、增强现实技术(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备等。应理解,本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
为了能够更好地理解本申请实施例,下面对本申请实施例的终端设备的硬件结构进行介绍。示例性地,图3为本申请实施例提供的一种终端设备的结构示意图。
终端设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,传感器模块180,按键190,指示器192,摄像头193,以及显示屏194等。
可选地,上述传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备的具体限定。在本申请另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中还可以设置存储器,用于存储指令和数据。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端设备充电,也可以用于终端设备与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。电源管理模块141用于连接充电管理模块140与处理器110。
终端设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端设备中的天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
移动通信模块150可以提供应用在终端设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
无线通信模块160可以提供应用在终端设备上的包括无线局域网(wirelesslocalarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM)等无线通信的解决方案。
终端设备通过GPU,显示屏194以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,终端设备可以包括1个或N个显示屏194,N为大于1的正整数。
终端设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。在一些实施例中,终端设备可以包括1个或N个摄像头193,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。
终端设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备可以通过扬声器170A收听音乐,或收听免提通话。受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。陀螺仪传感器180B可以用于确定终端设备的运动姿态。气压传感器180C用于测量气压。磁传感器180D包括霍尔传感器。加速度传感器180E可检测终端设备在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。温度传感器180J用于检测温度。触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。骨传导传感器180M可以获取振动信号。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备可以接收按键输入,产生与终端设备的用户设置以及功能控制有关的键信号输入。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。分层架构可以采用安卓(Android)系统,也可以采用苹果(IOS)系统,还可以采样其他操作系统,本申请实施例对此不作限定。
下面以分层架构的Android系统为例,示例性说明终端设备的软件结构。
图4为本申请实施例适用的终端设备的一种软件结构框图。分层架构将终端设备的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可以将Android系统分为四层,从上到下依次为应用程序层(applications)、应用程序框架层(application framework)、安卓运行时(Androidruntime)和系统库、以及内核层(kernel)。
应用程序层可以包括一系列应用程序包,应用程序层通过调用应用程序框架层所提供的应用程序接口(application programming interface,API)运行应用程序。如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供API和编程框架。应用程序框架层包括一些预先定义的函数。如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
安卓系统运行时包括核心库和虚拟机。安卓系统运行时负责安卓系统的调度和管理。核心库包含两部分:一部分是Java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的Java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。系统库可以包含多个功能的模块,例如:表面管理器,媒体库以及三维图形处理库等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维图层和三维图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成和图层处理等。
内核层是硬件和软件之间的层。内核层用于驱动硬件,使得硬件工作。内核层至少包含显示驱动,屏幕驱动、摄像头驱动以及传感器驱动等,本申请实施例对此不做限制。
图5为本申请实施例提供的一种负载预测方法500的示意性流程图,该方法500可以由终端设备执行,例如,手机。终端设备的硬件结构图可以如图3所示,终端设备的软件结构图可以如图4所示,但本申请实施例对此不作限定。
如图5所示,该方法500可以包括以下步骤:
S501、从历史绘帧任务的绘帧周期中确定历史的多个目标线程,多个目标线程之间存在唤醒关系,唤醒关系用于表示线程之间唤醒与被唤醒的关系。
历史绘帧任务可以理解为终端设备已经执行过的绘帧任务。历史绘帧任务的数量可以为一个,也可以为多个,本申请实施例对此不做限定。绘帧任务可以理解为终端设备显示一帧图像所需执行的任务。
绘帧周期可以为绘帧任务的上一个绘帧任务的结束时刻至该绘帧任务的结束时刻之间的时间段。绘帧周期的时长可以为该时间段的时长。绘帧周期可以理解为上述图2中显示一阵图像所需时长。
可选地,绘帧任务在绘帧过程中,和用户交互相对贴近的逻辑点是渲染线程,当渲染线程执行完结束后,就可以将当前帧处理完的数据输出给图形,然后显示在界面上,故绘帧周期可以设置为上一绘帧任务的渲染线程的结束点到当前绘帧任务的渲染线程的结束点。
示例性地,绘帧任务包括主线程(UI THREAD)和渲染线程(RENDER THREAD),主线程可以为上述图2中线程201,渲染线程可以为上述图2中的线程205,绘帧周期可以设置上一绘帧任务的渲染线程(RENDER THREAD)的结束点到当前绘帧任务的渲染线程(RENDERTHREAD)的结束点。主线程和渲染线程之间可以存在唤醒关系,也可以不存在唤醒关系,本申请实施例对此不做限定。
可选地,渲染线程存在队列缓冲区(queueBuffer),绘帧周期可以设置上一绘帧任务的渲染线程(RENDER THREAD)的queueBuffer结束点到当前绘帧任务的渲染线程(RENDERTHREAD)的queueBuffer结束点。
示例性地,图6示出了一种绘帧周期的示意图。如图6所示,上一绘帧任务用虚线框表示,该绘帧任务中包括主线程和渲染线程,当前绘帧任务用虚线框表示,该绘帧任务中包括主线程和渲染线程。绘帧周期可以为上一绘帧任务的渲染线程的queueBuffer结束点到当前绘帧任务的渲染线程的queueBuffer结束点,即虚线框的长度可以代表一个绘帧周期。主线程和渲染线程之间可以存在唤醒关系,也可以不存在唤醒关系,本申请实施例对此不做限定。
一个绘帧周期可以运行多个线程,终端设备可以从一个绘帧周期的多个线程中确定多个目标线程,本申请实施例对目标线程的个数不做限定。该多个目标线程之间存在唤醒关系,即多个目标线程之间存在唤醒与被唤醒的关系,本申请实施例对具体的唤醒关系不做限定。
示例性地,多个目标线程可以包括3个目标线程,该3个目标线程可以分别为主线程、线程A以及渲染线程。该3个目标线程之间的唤醒关系可以存在多种可能的实现方式。
在一种可能的实现方式中,该3个目标线程之间的唤醒关系可以包括:主线程在时间点1唤醒线程A,线程A在时间点2唤醒渲染线程。
在另一种可能的实现方式中,该3个目标线程之间的唤醒关系可以包括:主线程在时间点3唤醒线程A,主线程在时间点4唤醒渲染线程,其中时间点4晚于时间点3。
应理解,唤醒与被唤醒是相对的概念,不同的目标线程之间,同一个目标线程可以为唤醒线程,也可以为被唤醒线程。
示例性地,在上述主线程在时间点1唤醒线程A,线程A在时间点2唤醒渲染线程的唤醒关系中,在线程A与主线程之间,线程A为被唤醒线程,在线程A与渲染线程之间,线程A为唤醒线程。
可选地,终端设备从多个绘帧周期中确定多个目标线程可以存在下列多种实现方式。
在一种可能的实现方式中,终端设备可以先将历史绘帧任务中出现次数较多的线程确定为目标线程,然后根据线程之间的唤醒关系,确定多个目标线程。
示例性地,历史绘帧任务中出现次数较多的线程为线程A,终端设备可以将唤醒线程A的线程确定为目标线程。终端设备还可以根据新确定的目标线程的唤醒关系,确定其他目标线程。
在另一种可能的实现方式中,终端设备可以将历史绘帧任务中实现绘帧任务的关键线程(例如,渲染线程)确定为目标线程,然后根据线程之间的唤醒关系,确定多个目标线程。
在又一种可能的实现方式中,终端设备可以将历史绘帧任务中实现绘帧任务的关键线程,且出现次数较多的线程确定为目标线程,然后根据线程之间的唤醒关系,确定多个目标线程。
S502、根据多个目标线程中每个目标线程在处理器的运行时长,计算多个目标线程的总负载,这里的总负载为每个目标线程的负载之和。
可选地,上述处理器可以理解为上述图3示出的处理器110。该处理器可以具体为中央处理器,但本申请实施例对此不作限定。
终端设备可以包括多个处理器,多个目标线程可以被终端设备调度到同一个处理器上运行,也可以被终端设备调度到不同的处理器上运行,本申请实施例对此不作限定。
每个目标线程在处理器的运行时长可以指每个目标线程被调度到处理器上运行的时间点与每个目标线程唤醒其它线程的时间点(或者在处理器上被调度出的时间点)之间的时长。
示例性地,目标线程在处理器的运行时长可以指每个目标线程被调度到处理器上运行的时间点与在处理器上被调度出的时间点之间的时长。
终端设备可以通过调度参数(例如SCHED_SWITCH)得到被调度入和调度出处理器的线程,并记录线程被调度入处理器的时间点和线程被调度出处理器的时间点,当目标线程存在被调度入处理器上运行一段时间后,又被调度出处理器的情况时,终端设备可以根据记录的目标线程被调度出处理器的时间点和目标线程被调度入处理器的时间点,得到目标线程的运行时长。应理解,该目标线程的运行时长为目标线程被调度出处理器的时间点与目标线程被调度入处理器的时间点之差。
应理解,若目标线程存在多次被调度入处理器又被调度出处理器的情况,终端设备可以计算每次被调度出处理器的时间点与被调度入处理器的时间点之差,得到多次时间差,然后对该多次时间差求和,得到目标线程的运行时长。
需要说明的是,本申请实施例中“线程被调度到处理器上运行”也可以理解为“线程被调度入处理器”,“线程在处理器上被调度出”也可以理解为“线程调度出处理器”,本申请实施例对此不作限定。终端设备可以根据多个目标线程中每个目标线程在处理器的运行时长,计算每个目标线程的负载,然后将每个目标线程的负载进行求和计算,得到多个目标线程的总负载。
示例性地,在上述主线程在时间点1唤醒线程A,线程A在时间点2唤醒渲染线程的唤醒关系中,主线程在时间点1唤醒线程A,主线程在处理器的运行时长可以为主线程被调度到处理器上运行的时间点与时间点1之间的时长,线程A在时间点2唤醒渲染线程,线程A在处理器的运行时长可以为线程A被调度到处理器上运行的时间点与时间点3之间的时长,渲染线程在处理器的运行时长可以为渲染线程被调度到处理器上运行的时间点与渲染线程被调度出处理器的时间点之间的时长。终端设备可以根据主线程、线程A以及渲染线程在处理器的运行时长,分别计算主线程的负载、线程A的负载以及渲染线程的负载,然后将主线程的负载、线程A的负载以及渲染线程的负载进行求和计算,得到该3个目标线程的总负载。
可选地,在多个目标线程中存在目标线程可以唤醒多个其它线程的情况下,该目标线程在处理器的运行时长为该目标线程被调度到处理器上运行的时间点与该目标线程唤醒的其他线程的时间点中最晚的时间点之间的时长。
示例性地,在上述主线程在时间点3唤醒线程A,主线程在时间点4唤醒渲染线程,其中时间点4晚于时间点3的唤醒关系中,主线程在时间点3唤醒线程A,在时间点4唤醒渲染线程,时间点4晚于时间点3,主线程在处理器的运行时长为该目标线程被调度到处理器上运行的时间点与时间点4之间的时长,线程A在处理器的运行时长可以为线程A被调度到处理器上运行的时间点与线程A被调度出处理器的时间点之间的时长,渲染线程在处理器的运行时长可以为渲染线程被调度到处理器上运行的时间点与渲染线程被调度出处理器的时间点之间的时长。
S503、根据多个目标线程的总负载和绘帧周期的时长,确定历史绘帧任务的负载。
绘帧周期的时长可以通过终端设备的屏幕刷新率计算,绘帧周期的时长可以用符号t表示,t的单位为纳秒(nanosecond,ns),终端设备的屏幕刷新率可以用符号f表示,f的单位为赫兹(Hertz,Hz)。
示例性地,绘帧周期的时长t可以通过公式
Figure BDA0003426983130000131
计算,其中,1*109为一个常数。当f等于60Hz时,t约等于16666666ns。
多个目标线程的总负载可以用符号demand表示,历史绘帧任务的负载可以通过符号util表示,util的值可以通过demand和t得到。
示例性地,历史绘帧任务的负载util可以通过公式
Figure BDA0003426983130000132
其中,1024为一个常数。
S504、根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载。
下一个绘帧任务可以理解为终端设备中同一应用即将要执行的绘帧任务,该终端设备即将要执行的绘帧任务可以为历史绘帧任务的下一个绘帧任务。
终端设备可以根据历史绘帧任务的负载util,预测多个目标线程在下一个绘帧任务中的负载。
本申请实施例提供的负载预测方法,在历史绘帧任务中确定存在唤醒关系的多个线程,并根据该多个线程在处理器运行时的负载和绘帧周期的时长,确定历史绘帧任务的负载,并根据该历史绘帧任务的负载,预测多个线程在下一个绘帧任务中在处理器运行时的负载。本申请实施例的方法,将历史绘帧任务的负载作为样本进行预测,以便于终端设备根据预测的负载为系统中的线程提供合适的性能,从而使得资源供给更准确。
可选地,上述多个目标线程也可以称为关键线程或者其他名称,本申请实施例对此不作限定。下面结合图7详细介绍多个目标线程的确定方法。
图7为本申请实施例提供的多个目标线程的确定方法700的示意性流程图,该方法700可以由终端设备执行,例如,手机。终端设备的硬件结构图可以如图3所示,终端设备的软件结构图可以如图4所示,但本申请实施例对此不作限定。
如图7所示,该方法700可以包括以下步骤:
S701、从历史绘帧任务的绘帧周期中确定目标渲染线程。
渲染线程为实现绘帧任务的关键线程,终端设备可以从历史绘帧任务的绘帧周期中确定目标渲染线程,并将目标渲染线程作为目标线程。
S702、基于绘帧周期中已发生的重要事件信息,追溯绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,重要事件信息包括线程与线程之间的唤醒事件。
在绘帧周期中终端设备可以执行多个线程,在该多个线程执行过程中,终端设备可以记录发生的重要事件信息,该重要事件信息包括线程与线程之间的唤醒事件。线程与线程之间的唤醒事件可以包括正在运行的线程唤醒的休眠中的线程,正在运行的线程创建线程并唤醒被创建的线程。
示例性地,终端设备可以通过唤醒参数(例如SCHED_WAKING)得到正在运行的线程唤醒的休眠中的线程,可以通过唤醒新线程参数(例如SCHED_PROCESS_FORK)得到正在运行的线程创建线程并唤醒被创建的线程。
上述重要事件信息还包括被唤醒线程的进程标识、正在运行的线程唤醒的线程的时间、线程在处理器上运行时长、运行频率等信息。
上述追溯也可以称为回溯,本申请实施例对此不作限定。
S703、基于绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,确定绘帧周期中的多个目标线程,多个目标线程包括目标渲染线程。
终端设备可以基于目标渲染线程,采用回溯的方法,将目标渲染线程作为被唤醒的线程,在绘帧周期中已发生的重要事件信息中确定唤醒目标渲染线程的线程,并将其确定为目标线程。应理解,上述多个目标线程也可以理解为目标线程组,目标线程组可以包括目标渲染线程和唤醒目标渲染线程的线程。
示例性地,图8示出了一种多个目标线程的示意图。如图8所示,唤醒目标渲染线程的线程为线程A,且在时间点1被线程A唤醒,唤醒线程A的线程为线程B,且在时间点2被线程B唤醒,唤醒线程B的线程为主线程,且在时间点3被主线程唤醒。主线程被内核线程唤醒或者系统中断,则终端设备不再追溯,并将主线程、线程B、线程A以及目标渲染线程确定为目标线程组中的线程。
可选地,终端设备可以根据多个目标线程的唤醒关系,得到该多个目标线程的执行次序,并根据该多个目标线程的执行次序,确定目标路径。其中,该多个目标线程的执行次序可以是顺序,也可以是逆序,本申请实施例对此不作限定。
示例性地,上述图8所示的多个目标线程中,该多个目标线程的执行次序为主线程、线程B、线程A、目标渲染线程,若按顺序,目标路径可以为主线程、线程B、线程A、目标渲染线程,若按逆序,目标路径可以为目标渲染线程、线程A、线程B、主线程。
需要说明的是,若在上述图8中,线程A除可以唤醒目标渲染线程之外,还可以唤醒线程D,线程D并不属于目标线程,且不在目标路径中。
还需要说明的是,在上述图8中,线程A为目标线程,若在下一个绘帧周期中,线程A与目标渲染线程之间不存在唤醒关系,则线程A不是目标线程,且不在目标路径中。
可选地,上述绘帧周期中已发生的重要事件信息中可能存在多个唤醒目标渲染线程的线程,与目标渲染线程之间存在唤醒关系的线程均为目标线程。
示例性地,图9示出了另一种多个目标线程的示意图。如图9所示,唤醒目标渲染线程的线程包括线程A和线程C,线程A在时间点1唤醒目标渲染线程,目标渲染线程被调度到处理器上运行一段时间后,被调度出处理器,进入休眠状态,线程C在时间点4再次唤醒目标渲染线程,目标渲染线程再次被调度到处理器上运行。唤醒线程A的线程为线程B,且在时间点2被线程B唤醒,唤醒线程B的线程为内核线程唤醒或者系统中断,则终端设备不再追溯,唤醒线程C的线程为内核线程唤醒或者系统中断,则终端设备不再追溯,并将线程C、线程B、线程A以及目标渲染线程确定为目标线程组中的线程。终端设备可以根据线程C、线程B、线程A以及目标渲染线程的执行次序,确定2条目标路径,其中,第1条目标路径可以为目标渲染线程、线程C,第2条目标路径可以为目标渲染线程、线程A、线程B。应理解,第1条目标路径可以为线程C、目标渲染线程,第2条目标路径可以为线程B、线程A、目标渲染线程,本申请实施例对此不作限定。
可选地,当历史绘帧任务的数量为多个时,终端设备可以在每一个历史绘帧任务的绘帧周期中确定多个目标线程,终端设备可以将该多个目标线程中在该多个历史绘帧任务中出现次数大于或等于预设次数的目标线程作为最终的目标线程。
示例性地,历史绘帧任务的数量可以为3个,终端设备可以在内核中建立一个队列,该队列用于存储该3个历史绘帧任务的多个目标线程。图10示出了一种目标线程队列的示意性框图。如图13所示,3个历史绘帧任务可以分别为历史绘帧任务1、历史绘帧任务2以及历史绘帧任务3,终端设备在历史绘帧任务1中确定的多个目标线程为线程C、线程B、线程A以及目标渲染线程,在历史绘帧任务2中确定的多个目标线程为线程B、线程A以及目标渲染线程,在历史绘帧任务3中确定的多个目标线程为线程C以及目标渲染线程,终端设备可以将该3个历史绘帧任务中出现次数大于或等于2次的线程C、线程B、线程A以及目标渲染线程作为最终的目标线程。
本申请实施例提供的负载预测方法,以渲染线程为目标线程,根据线程之间的唤醒关系,采用回溯的方式,依次确定多个目标线程,可以将实现绘帧任务的关键线程确定为目标线程,进而有利于提高预测的负载的准确性。
作为一个可选的实施例,上述S502、根据多个目标线程中每个目标线程在处理器的运行时长,计算多个目标线程的总负载,包括:根据每个目标线程在处理器的运行时长和处理器的运行频率,计算每个目标线程的负载系数,处理器的运行频率是每个目标线程在处理器运行时处理器的频率;根据每个目标线程在处理器的运行时长和每个目标线程的负载系数,计算每个目标线程的负载;将每个目标线程的负载进行求和,得到多个目标线程的总负载。
每个目标线程在处理器运行时,处理器的运行频率可以相同也可以不同,本申请实施例对此不作限定。
示例性地,多个目标线程包括2个目标线程,该2个目标线程可以分别为目标线程1、目标线程2,目标线程1在处理器运行时的处理器的运行频率可以和目标线程2在处理器运行时的处理器的运行频率相同,也可以不同。终端设备可以通过中央处理器频率参数(例如CPU_FREQUENCY)得到目标线程1在处理器运行时的处理器的运行频率。
应理解,绘帧周期内,目标线程在处理器运行时长应小于或等于目标线程的唤醒时长,该目标线程的唤醒时长是指目标线程被唤醒到目标线程在处理器运行结束之间的时长。
多个目标线程中第j个目标线程的负载系数可以通过符号task_exec_scalej表示,task_exec_scalej可以通过第j个目标线程在处理器的运行时长和处理器的运行频率计算。其中,j为大于或等于1的正整数,第j个目标线程在处理器的运行时长可以通过第j个目标线程被调度到处理器的时间点Tj1和第j个目标线程被调出处理器的时间点Tj2计算,即Tj2-Tj1
终端设备可以根据第j个目标线程在处理器的运行时长Tj2-Tj1和第j个目标线程的负载系数task_exec_scalej,计算第j个目标线程的负载demandj
示例性地,第j个目标线程的负载可以为
Figure BDA0003426983130000161
其中,1024为一个常数。
终端设备可以通过上述公式计算多个目标线程中每个目标线程的负载,并将每个目标线程的负载进行求和,得到多个目标线程的总负载demand。
本申请实施例提供的负载预测方法,利用目标线程在处理器的运行时长和处理器的运行频率,计算目标线程的负载系数,相比直接利用目标线程的唤醒时长和处理器的运行频率计算得到的目标线程的负载系数,具有更高的准确性,有利于提高得到多个目标线程的总负载的准确性。
可选地,多个目标线程中的任一个目标线程在处理器运行时,处理器的运行频率可以为至少一个,即任一个目标线程被终端设备调度到处理器运行时,处理器的运行频率可以为1个,也可以为2个或者2个以上,本申请实施例对此不作限定。
示例性地,上述多个目标线程中第一目标线程在处理器运行时,处理器的运行频率包括第一频率和第二频率,第一频率的持续时长为第一时长,第二频率的持续时长为第二时长,第一目标线程的运行时长包括第一时长和第二时长,第一目标线程的负载系数包括第一负载系数和第二负载系数。上述根据每个目标线程在处理器的运行时长和处理器的运行频率,计算每个目标线程的负载系数,包括:根据第一时长和第一频率,计算第一负载系数;根据第二时长和第二频率,计算第二负载系数;上述根据每个目标线程在处理器的运行时长和每个目标线程的负载系数,计算每个目标线程的负载,包括:根据第一时长和第一负载系数,计算第一目标线程的第一负载;根据第二时长和第二负载系数,计算第一目标线程的第二负载;将第一负载与第二负载之和作为第一目标线程的负载。
第一目标线程可以为多个目标线程中的任一个目标线程。例如,第一目标线程可以为目标渲染线程。
图11示出了目标渲染线程在处理器运行时的示意图,如图11中的a所示,填充黑色的矩形为目标渲染线程,填充黑色的矩形的长度为目标渲染线程在处理器的运行时长。目标渲染线程被终端设备调度到处理器的时间点可以为T11,此时,处理器的频率可以为第一频率,如图11中的b所示,在图11中的b中,坐标系的横轴为时间,纵轴为频率,原点为T11,处理器从第一频率转化为第二频率的时间点为T110,则第一频率的持续时长(第一时长)为T110-T11,目标渲染线程被终端设备调出处理器的时间T12,则第二频率的持续时长(第二时长)为T12-T110。应理解,目标渲染线程在处理的运行时长为第一时长与第二时长之和。
终端设备根据第一时长T110-T11和第一频率,计算第一负载系数task_exec_scale11;根据第二时长T12-T110和第二频率,计算第二负载系数task_exec_scale12
终端设备根据第一时长T110-T11和第一负载系数task_exec_scale11,计算目标渲染线程的第一负载
Figure BDA0003426983130000171
终端设备根据第二时长T12-T110和第二负载系数task_exec_scale12,计算目标渲染线程的第二负载
Figure BDA0003426983130000172
终端设备将第一负载demand11和第二负载demand12之和作为目标渲染线程的负载
Figure BDA0003426983130000173
需要说明的是,上述目标渲染线程可能会存在多次被终端设备调度到处理器,又被调度出处理器的情况,目标渲染线程在处理器的运行时长为多次时间段的总和。
示例性地,图12示出了目标渲染线程在处理器运行时的示意图,如图12所示,上述目标渲染线程被终端设备调度到处理器的时间点为T11,被终端设备调度出处理器的时间点为T111,第一目标线程被终端设备再次调度到处理器的时间点为T112,被终端设备调度出处理器的时间点为T12,目标渲染线程在处理器的第一运行时长为T111-T11,第二运行时长为T12-T112,目标渲染线程的运行时长为第一运行时长为第二运行时长的和。终端设备可以分别计算第一运行时长T111-T11对应的负载和第二运行时长T12-T112对应的负载,并将两个负载进行加和计算,得到目标渲染线程的负载。
作为一个可选的实施例,历史绘帧任务的数量为多个;上述S504、根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载,包括:对历史绘帧任务的负载进行加权求和计算,得到计算结果;将计算结果确定为多个目标线程在下一个绘帧任务中的负载。
当历史绘帧任务的数量为多个时,终端设备可以对该多个历史绘帧任务的负载进行加权求和计算,得到计算结果,并将计算结果确定为多个目标线程在下一个绘帧任务中的负载。应理解,该多个目标线程可能会在下一帧绘帧任务中被终端设备调度到处理器运行,当该多个目标线程在在下一帧绘帧任务中被终端设备调度到处理器运行时,终端设备可以确定该多个目标线程的负载。
示例性地,终端设备可以在内核中建立一个负载队列,该负载队列用于存储多个历史绘帧任务的负载。图13示出了一种负载队列的示意性框图。如图13所示,负载队列可以用于存储8个历史绘帧任务的负载,该8个历史绘帧任务的负载分别为util0、util1、util2、util3、util4、util5、util6以及util7,util0为负载队列的头部,util7为负载队列的尾部,util0是多个历史绘帧任务中时间最晚的负载数据,util7是多个历史绘帧任务中时间最早的负载数据。在下一个绘帧任务来临之前,终端设备可以根据该负载队列中的8个历史绘帧任务的负载进行加权求和计算,得到计算结果,即为该多个目标线程在下一个绘帧任务中的负载。
应理解,该队列的负载可以随着绘帧任务的执行而实时变化,终端设备执行绘帧任务结束之后,可以将原来的负载数据依次向负载队列尾部移动,即丢弃时间最早的负载数据,将该绘帧任务的负载数据保存在负载队列的头部。
还应理解,对于多个历史绘帧任务的负载中每一个历史绘帧任务的加权系数,终端设备可以根据任意条件设置,本申请实施例不作限定。
本申请实施例提供的负载预测方法,对多个历史绘帧任务的负载进行加权求和计算,得到多个目标线程在下一个绘帧任务中的负载,可以根据任意侧重点,调节每一个历史绘帧任务的加权系数,有利于灵活应用。
可选地,上述历史绘帧任务的数量可以为n,该历史绘帧任务中第i个历史绘帧任务的负载的加权系数为
Figure BDA0003426983130000181
其中,i∈{1,2,…,n-1},且n为大于或等于2的正整数,历史绘帧任务的负载的加权系数之和为1。
示例性地,在上述图13的示例中,n可以为8,该8个历史绘帧任务的负载分别为util0、util1、util2、util3、util4、util5、util6以及util7,该8个历史绘帧任务的负载的加权系数可以如图14所示,在图14中,该历史绘帧任务中第1个历史绘帧任务的负载可以为util0,util0的加权系数为
Figure BDA0003426983130000182
第2个历史绘帧任务的负载可以为util1,util1的加权系数为
Figure BDA0003426983130000183
第3个历史绘帧任务的负载可以为util2,util2的加权系数为/>
Figure BDA0003426983130000184
第4个历史绘帧任务的负载可以为util3,util3的加权系数为/>
Figure BDA0003426983130000185
第5个历史绘帧任务的负载可以为util4,util4的加权系数为/>
Figure BDA0003426983130000186
第6个历史绘帧任务的负载可以为util5,util5的加权系数为/>
Figure BDA0003426983130000187
第7个历史绘帧任务的负载可以为util6,util6的加权系数为/>
Figure BDA0003426983130000188
该8个历史绘帧任务的负载的加权系数之和为1,则util7为第8个历史绘帧任务的负载,util7的加权系数为/>
Figure BDA0003426983130000189
可选地,上述n个历史绘帧任务中的历史绘帧任务可以是按照发生时间进行排序的,第1个历史绘帧任务可以是距离当前时间最近的一个历史绘帧任务,第8个历史绘帧任务可以是距离当前时间最远的一个历史绘帧任务,最近的历史绘帧任务的加权系数可以是最大的,即最近的历史绘帧任务在n个历史绘帧任务中占比最大。
本申请实施例提供的负载预测方法,提供了一种加权系数的设置方法,距离当前时间最近的一个历史绘帧任务的加权系数最大,距离最近的历史绘帧任务对预测的影响更大,有利于提高预测的负载的准确性。
作为一个可选的实施例,在上述S504、在根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载之后,上述方法500还包括:根据多个目标线程在下一个绘帧任务中的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围;当多个目标线程中存在目标线程在下一个绘帧任务中被调度到处理器运行时,按照频率范围,调整处理器的频率。
当该多个目标线程中存在任一目标线程在下一个绘帧任务中被调度到处理器运行时,终端设备可以按照频率范围,调整处理器的频率。
示例性地,当该多个目标线程中第一目标线程在下一个绘帧任务中被调度到处理器运行,且处理器的频率低于频率范围的下限时,终端设备可以将处理器的频率调高到频率范围内。当该第一目标线程在下一个绘帧任务中被调度到处理器运行,且处理器的频率高于频率范围的上限值时,终端设备可以将处理器的频率调低到频率范围内。
应理解,本申请实施例中的下限也可以称为最小值,上限也可以称为最大值,本申请实施例对此不作限定。
本申请实施例提供的负载预测方法,可以根据预测的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围,并可以按照频率范围,调整处理器的频率,以为多个目标线程在下一个绘帧任务中运行时提供合适的性能。
可选地,上述根据多个目标线程在下一个绘帧任务中的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围,包括:根据多个目标线程在下一个绘帧任务中的负载、处理器的最大处理能力以及处理器的最大频率,确定处理器的频率范围。
处理器的最大处理能力可以用符号max表示,处理器的最大频率可以用符号max_freq表示,处理器的频率范围可以通过util、max以及max_freq确定。应理解,本申请实施例中的处理器均是指运行目标线程的处理器,也可以理解为目标线程所在的处理器,本申请实施例对此不做限定。
示例性地,处理器的频率范围下限可以为:a*max_freq*util/max。处理器的频率范围上限可以为:a*max_freq*(1+b)*util/max,其中,a和b为预设系数,且大于或等于0。应理解,本申请实施例对a和b的具体数值不做限定。
示例性地,a可以为1.25,b可以为0.1。当a为1.25,b为0.1时,处理器的频率范围下限可以为:
Figure BDA0003426983130000191
处理器的频率范围上限可以为:
Figure BDA0003426983130000192
应理解,在上述图14所示的示例中,多个目标线程在下一个绘帧任务中的负载可以具体为
Figure BDA0003426983130000193
当目标线程在下一个绘帧任务被调度到处理器运行时,若处理器的频率小于
Figure BDA0003426983130000194
终端设备将处理器的频率调整到大于或等于
Figure BDA0003426983130000195
且小于或等于/>
Figure BDA0003426983130000196
若处理器的频率大于/>
Figure BDA0003426983130000197
终端设备将处理器的频率调整到大于或等于
Figure BDA0003426983130000198
且小于或等于/>
Figure BDA0003426983130000199
终端设备可以通过调节目标线程在下一个绘帧任务中在处理器运行时处理器的频率,使目标线程在处理器的运行时长达到一个相对合理的长度,有利于终端设备的性能达到平衡。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文中结合图1至图14,详细描述了本申请实施例提供的负载预测方法,下面将结合图15和图16,详细描述本申请实施例提供的负载预测装置。
图15示出了本申请实施例提供的一种负载预测装置1500,该装置1500包括:确定模块1510、计算模块1520以及预测模块1530。其中,确定模块1510用于:从历史绘帧任务的绘帧周期中确定历史的多个目标线程,多个目标线程之间存在唤醒关系,唤醒关系用于表示线程之间唤醒与被唤醒的关系;计算模块1520用于:根据多个目标线程中每个目标线程在处理器的运行时长,计算多个目标线程的总负载,总负载为每个目标线程的负载之和;确定模块1510还用于:根据多个目标线程的总负载和绘帧周期的时长,确定历史绘帧任务的负载;预测模块1530用于:根据历史绘帧任务的负载,预测多个目标线程在下一个绘帧任务中的负载。
可选地,上述计算模块1520还用于:根据每个目标线程在处理器的运行时长和处理器的运行频率,计算每个目标线程的负载系数,处理器的运行频率是每个目标线程在处理器运行时处理器的频率;根据每个目标线程在处理器的运行时长和每个目标线程的负载系数,计算每个目标线程的负载;将每个目标线程的负载进行求和,得到多个目标线程的总负载。
可选地,上述多个目标线程中第一目标线程在处理器运行时,处理器的运行频率包括第一频率和第二频率,第一频率的持续时长为第一时长,第二频率的持续时长为第二时长,第一目标线程的运行时长包括第一时长和第二时长,第一目标线程的负载系数包括第一负载系数和第二负载系数;计算模块1520还用于:根据第一时长和第一频率,计算第一负载系数;根据第二时长和第二频率,计算第二负载系数;根据第一时长和第一负载系数,计算第一目标线程的第一负载;根据第二时长和第二负载系数,计算第一目标线程的第二负载;将第一负载和第二负载之和作为第一目标线程的负载。
可选地,上述历史绘帧任务的数量为多个;计算模块1520还用于:对历史绘帧任务的负载进行加权求和计算,得到计算结果;将计算结果确定为多个目标线程在下一个绘帧任务中的负载。
可选地,上述历史绘帧任务的数量为n,历史绘帧任务中第i个历史绘帧任务的负载的加权系数为
Figure BDA0003426983130000201
其中,i∈{1,2,…,n-1},且n为大于或等于2的正整数,历史绘帧任务的负载的加权系数之和为1。
可选地,上述装置还包括调整模块;确定模块1510还用于:根据多个目标线程在下一个绘帧任务中的负载,确定多个目标线程在下一个绘帧任务中运行时处理器的频率范围;调整模块用于:当多个目标线程中存在目标线程在下一个绘帧任务中被调度到处理器运行时,按照频率范围,调整处理器的频率。
可选地,上述确定模块1510还用于:根据多个目标线程在下一个绘帧任务中的负载、处理器的容量以及处理器在下一个绘帧任务中的频率,确定处理器的频率范围。
可选地,上述处理器的频率范围下限为:
Figure BDA0003426983130000202
处理器的频率范围上限为:/>
Figure BDA0003426983130000203
其中,a和b为预设系数,且大于或等于0,util为多个目标线程在下一个绘帧任务中的负载,max_freq为处理器的最大频率,max为处理器的最大处理能力。
可选地,上述装置还包括追溯模块;确定模块1510还用于:从历史绘帧任务的绘帧周期中确定目标渲染线程;追溯模块用于:基于绘帧周期中已发生的重要事件信息,追溯绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,重要事件信息包括线程与线程之间的唤醒事件;确定模块1510还用于:基于绘帧周期中运行的线程与目标渲染线程之间的唤醒关系,确定绘帧周期中的多个目标线程,多个目标线程包括目标渲染线程。
应理解,这里的装置1500以功能模块的形式体现。这里的术语“模块”可以指应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选的例子中,本领域技术人员可以理解,装置1500可以具体为上述方法实施例中的终端设备,或者,上述方法实施例中端设备的功能可以集成在装置1500中,装置1500可以用于执行上述方法实施例中与端设备对应的各个流程和/或步骤,为避免重复,在此不再赘述。
上述装置1500具有实现上述方法实施例中的终端设备执行的相应步骤的功能;上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
在本申请的实施例中,图15中的装置1500也可以是芯片或者芯片系统,例如:片上系统(system on chip,SoC)。
图16是本申请实施例提供的另一种负载预测装置1600的示意性框图。该装置1600包括处理器1610、收发器1620和存储器1630。其中,处理器1610、收发器1620和存储器1630通过内部连接通路互相通信,该存储器1630用于存储指令,该处理器1620用于执行该存储器1630存储的指令,以控制该收发器1620发送信号和/或接收信号。
应理解,装置1600可以具体为上述方法实施例中的终端设备或成像设备,或者,上述方法实施例中终端设备或成像设备的功能可以集成在装置1600中,装置1600可以用于执行上述方法实施例中与终端设备对应的各个步骤和/或流程。可选地,该存储器1630可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器1610可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与终端设备对应的各个步骤和/或流程。
应理解,在本申请实施例中,该处理器1610可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,该计算机程序用于实现上述方法实施例中终端设备对应的方法。
本申请还提供了一种芯片系统,该芯片系统用于支持上述方法实施例中终端设备实现本申请实施例所示的功能。
本申请还提供了一种计算机程序产品,该计算机程序产品包括计算机程序(也可以称为代码,或指令),当该计算机程序在计算机上运行时,该计算机可以执行上述方法实施例所示的终端设备对应的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应所述以权利要求的保护范围为准。

Claims (19)

1.一种负载预测方法,其特征在于,包括:
从历史绘帧任务的绘帧周期中确定历史的多个目标线程,所述多个目标线程之间存在唤醒关系,所述唤醒关系用于表示线程之间唤醒与被唤醒的关系;
根据所述多个目标线程中每个目标线程在处理器的运行时长,计算所述多个目标线程的总负载,所述总负载为所述每个目标线程的负载之和;所述多个目标线程中第一目标线程在所述处理器运行时,所述处理器的运行频率包括第一频率和第二频率,所述第一频率的持续时长为第一时长,所述第二频率的持续时长为第二时长,所述第一目标线程的运行时长包括所述第一时长和所述第二时长;
根据所述多个目标线程的总负载和所述绘帧周期的时长的比值,确定所述历史绘帧任务的负载;
根据所述历史绘帧任务的负载,预测所述多个目标线程在下一个绘帧任务中的负载;
所述根据所述多个目标线程中每个目标线程在处理器的运行时长,计算所述多个目标线程的总负载,包括:
根据所述第一时长和所述第一频率,计算所述第一目标线程的第一负载系数;
根据所述第二时长和所述第二频率,计算所述第一目标线程的第二负载系数;
根据所述每个目标线程在所述处理器的运行时长和所述每个目标线程的负载系数,计算所述每个目标线程的负载;
将所述每个目标线程的负载进行求和,得到所述多个目标线程的总负载。
2.根据权利要求1所述的方法,其特征在于,
所述根据所述每个目标线程在所述处理器的运行时长和所述每个目标线程的负载系数,计算所述每个目标线程的负载,包括:
根据所述第一时长和所述第一负载系数,计算所述第一目标线程的第一负载;
根据所述第二时长和所述第二负载系数,计算所述第一目标线程的第二负载;
将所述第一负载和所述第二负载之和作为所述第一目标线程的负载。
3.根据权利要求1或2所述的方法,其特征在于,所述历史绘帧任务的数量为多个;
所述根据所述历史绘帧任务的负载,预测所述多个目标线程在下一个绘帧任务中的负载,包括:
对所述历史绘帧任务的负载进行加权求和计算,得到计算结果;
将所述计算结果确定为所述多个目标线程在下一个绘帧任务中的负载。
4.根据权利要求3所述的方法,其特征在于,所述历史绘帧任务的数量为n,所述历史绘帧任务中第i个历史绘帧任务的负载的加权系数为
Figure FDA0004052061150000011
其中,i∈{1,2,…,n-1},且n为大于或等于2的正整数,所述历史绘帧任务的负载的加权系数之和为1。
5.根据权利要求1-2、4中任一项所述的方法,其特征在于,在所述根据所述历史绘帧任务的负载,预测所述多个目标线程在下一个绘帧任务中的负载之后,所述方法还包括:
根据所述多个目标线程在所述下一个绘帧任务中的负载,确定所述多个目标线程在所述下一个绘帧任务中运行时所述处理器的频率范围;
当所述多个目标线程中存在目标线程在所述下一个绘帧任务中被调度到处理器运行时,按照所述频率范围,调整所述处理器的频率。
6.根据权利要求5所述的方法,其特征在于,所述根据所述多个目标线程在所述下一个绘帧任务中的负载,确定所述多个目标线程在所述下一个绘帧任务中运行时所述处理器的频率范围,包括:
根据所述多个目标线程在所述下一个绘帧任务中的负载、所述处理器的最大处理能力以及所述处理器的最大频率,确定所述处理器的频率范围。
7.根据权利要求6所述的方法,其特征在于,所述处理器的频率范围下限为:
Figure FDA0004052061150000021
所述处理器的频率范围上限为:
Figure FDA0004052061150000022
其中,a和b为预设系数,且大于或等于0,util为所述多个目标线程在所述下一个绘帧任务中的负载,max_freq为所述处理器的最大频率,max为所述处理器的最大处理能力。
8.根据权利要求1-2、4、6-7中任一项所述的方法,其特征在于,所述从历史绘帧任务的绘帧周期中确定多个目标线程,包括:
从所述历史绘帧任务的绘帧周期中确定目标渲染线程;
基于所述绘帧周期中已发生的重要事件信息,追溯所述绘帧周期中运行的线程与所述目标渲染线程之间的唤醒关系,所述重要事件信息包括线程与线程之间的唤醒事件;
基于所述绘帧周期中运行的线程与所述目标渲染线程之间的唤醒关系,确定所述绘帧周期中的多个目标线程,所述多个目标线程包括所述目标渲染线程。
9.一种负载预测装置,其特征在于,包括:
确定模块,用于从历史绘帧任务的绘帧周期中确定历史的多个目标线程,所述多个目标线程之间存在唤醒关系,所述唤醒关系用于表示线程之间唤醒与被唤醒的关系;
计算模块,用于根据所述多个目标线程中每个目标线程在处理器的运行时长,计算所述多个目标线程的总负载,所述总负载为所述每个目标线程的负载之和;所述多个目标线程中第一目标线程在所述处理器运行时,所述处理器的运行频率包括第一频率和第二频率,所述第一频率的持续时长为第一时长,所述第二频率的持续时长为第二时长,所述第一目标线程的运行时长包括所述第一时长和所述第二时长;
所述确定模块还用于:根据所述多个目标线程的总负载和所述绘帧周期的时长的比值,确定所述历史绘帧任务的负载;
预测模块,用于根据所述历史绘帧任务的负载,预测所述多个目标线程在下一个绘帧任务中的负载;
所述计算模块还用于:
根据所述第一时长和所述第一频率,计算所述第一目标线程的第一负载系数;
根据所述第二时长和所述第二频率,计算所述第一目标线程的第二负载系数;
根据所述每个目标线程在所述处理器的运行时长和所述每个目标线程的负载系数,计算所述每个目标线程的负载;
将所述每个目标线程的负载进行求和,得到所述多个目标线程的总负载。
10.根据权利要求9所述的装置,其特征在于,
根据所述第一时长和所述第一负载系数,计算所述第一目标线程的第一负载;
根据所述第二时长和所述第二负载系数,计算所述第一目标线程的第二负载;
将所述第一负载和所述第二负载之和作为所述第一目标线程的负载。
11.根据权利要求9或10所述的装置,其特征在于,所述历史绘帧任务的数量为多个;
所述计算模块还用于:
对所述历史绘帧任务的负载进行加权求和计算,得到计算结果;
将所述计算结果确定为所述多个目标线程在下一个绘帧任务中的负载。
12.根据权利要求11所述的装置,其特征在于,所述历史绘帧任务的数量为n,所述历史绘帧任务中第i个历史绘帧任务的负载的加权系数为
Figure FDA0004052061150000031
其中,i∈{1,2,…,n-1},且n为大于或等于2的正整数,所述历史绘帧任务的负载的加权系数之和为1。
13.根据权利要求9-10、12中任一项所述的装置,其特征在于,所述装置还包括调整模块;
所述确定模块还用于:
根据所述多个目标线程在所述下一个绘帧任务中的负载,确定所述多个目标线程在所述下一个绘帧任务中运行时所述处理器的频率范围;
所述调整模块用于:
当所述多个目标线程中存在目标线程在所述下一个绘帧任务中被调度到处理器运行时,按照所述频率范围,调整所述处理器的频率。
14.根据权利要求13所述的装置,其特征在于,所述确定模块还用于:
根据所述多个目标线程在所述下一个绘帧任务中的负载、所述处理器的最大处理能力以及所述处理器的最大频率,确定所述处理器的频率范围。
15.根据权利要求14所述的装置,其特征在于,所述处理器的频率范围下限为:
Figure FDA0004052061150000032
所述处理器的频率范围上限为:
Figure FDA0004052061150000033
其中,a和b为预设系数,且大于或等于0,util为所述多个目标线程在所述下一个绘帧任务中的负载,max_freq为所述处理器的最大频率,max为所述处理器的最大处理能力。
16.根据权利要求9-10、12、14-15中任一项所述的装置,其特征在于,所述装置还包括追溯模块;
所述确定模块还用于:
从所述历史绘帧任务的绘帧周期中确定目标渲染线程;
所述追溯模块用于:
基于所述绘帧周期中已发生的重要事件信息,追溯所述绘帧周期中运行的线程与所述目标渲染线程之间的唤醒关系,所述重要事件信息包括线程与线程之间的唤醒事件;
所述确定模块还用于:
基于所述绘帧周期中运行的线程与所述目标渲染线程之间的唤醒关系,确定所述绘帧周期中的多个目标线程,所述多个目标线程包括所述目标渲染线程。
17.一种负载预测装置,其特征在于,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储计算机程序,当所述处理器调用所述计算机程序时,使得所述装置执行如权利要求1至8中任一项所述的方法。
18.一种芯片系统,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片系统的设备实现如权利要求1至8中任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序包括用于实现如权利要求1至8中任一项所述的方法的指令。
CN202111607998.8A 2021-12-22 2021-12-22 负载预测方法和负载预测装置 Active CN115017003B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111607998.8A CN115017003B (zh) 2021-12-22 2021-12-22 负载预测方法和负载预测装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111607998.8A CN115017003B (zh) 2021-12-22 2021-12-22 负载预测方法和负载预测装置

Publications (2)

Publication Number Publication Date
CN115017003A CN115017003A (zh) 2022-09-06
CN115017003B true CN115017003B (zh) 2023-05-30

Family

ID=83064879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111607998.8A Active CN115017003B (zh) 2021-12-22 2021-12-22 负载预测方法和负载预测装置

Country Status (1)

Country Link
CN (1) CN115017003B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117891617A (zh) * 2024-03-15 2024-04-16 荣耀终端有限公司 资源调度方法、设备、可读存储介质及芯片系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037171B2 (en) * 2015-04-30 2018-07-31 International Business Machines Corporation Accessing common data in a dispersed storage network
US10025641B2 (en) * 2015-09-15 2018-07-17 Qualcomm Incorporated Workload differentiation for processor frequency scaling
US10579093B2 (en) * 2018-03-01 2020-03-03 At&T Intellectual Property I, L.P. Workload prediction based CPU frequency scaling
CN111045814B (zh) * 2018-10-11 2023-12-08 华为技术有限公司 资源调度方法和终端设备
CN111581174A (zh) * 2019-02-18 2020-08-25 北京搜狗科技发展有限公司 基于分布式集群系统的资源管理方法及装置
CN112789651B (zh) * 2019-03-27 2023-07-18 华为技术有限公司 一种应用于终端的频率调整方法、装置及电子设备
CN110209501B (zh) * 2019-06-03 2022-02-08 Oppo广东移动通信有限公司 图形处理器的频率调整方法、装置、终端及存储介质
CN112000459B (zh) * 2020-03-31 2023-06-27 华为云计算技术有限公司 一种用于服务的扩缩容的方法及相关设备
CN111831437A (zh) * 2020-07-01 2020-10-27 Oppo广东移动通信有限公司 设备管理方法、装置、存储介质及电子设备
CN112114975B (zh) * 2020-10-28 2023-06-27 Oppo广东移动通信有限公司 处理器频率的调整方法、装置、存储介质及电子设备
CN113821330B (zh) * 2021-11-24 2022-03-15 腾讯科技(深圳)有限公司 任务调度方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN115017003A (zh) 2022-09-06

Similar Documents

Publication Publication Date Title
WO2021000881A1 (zh) 一种分屏方法及电子设备
JP2022508176A (ja) 音声制御方法及び電子装置
WO2021052016A1 (zh) 一种人体姿态检测方法及电子设备
CN110059686B (zh) 字符识别方法、装置、设备及可读存储介质
CN111338910B (zh) 日志数据处理、显示方法、装置、设备及存储介质
US20240137438A1 (en) Information display method and electronic device
CN115017002B (zh) 频率预测方法和频率预测装置
CN113220176B (zh) 基于微件的显示方法、装置、电子设备及可读存储介质
CN110119305B (zh) 任务执行方法、装置、计算机设备及存储介质
CN110210045A (zh) 目标区域的人数估算方法、装置及存储介质
CN110673944B (zh) 执行任务的方法和装置
CN111177137A (zh) 数据去重的方法、装置、设备及存储介质
CN115017003B (zh) 负载预测方法和负载预测装置
CN115655310A (zh) 数据的校准方法、电子设备及可读存储介质
WO2022166435A1 (zh) 分享图片的方法和电子设备
CN113688019B (zh) 响应时长检测方法及装置
WO2021042881A1 (zh) 消息通知方法及电子设备
CN111312207B (zh) 文本转音频方法、装置、计算机设备及存储介质
WO2022117002A1 (zh) 电子设备间的无线充电方法、存储介质及其电子设备
CN117632400A (zh) 任务调度方法、电子设备及计算机可读存储介质
CN111768297A (zh) 状态变换参数获取方法、电子设备及存储介质
CN113760164A (zh) 显示设备及其控制操作的响应方法
CN112308104A (zh) 异常识别方法、装置及计算机存储介质
CN110995932A (zh) 备忘录设置方法、装置、存储介质及电子设备
CN116088955B (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