CN111831443A - 处理器状态调整方法、装置、存储介质及电子设备 - Google Patents

处理器状态调整方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN111831443A
CN111831443A CN202010628874.7A CN202010628874A CN111831443A CN 111831443 A CN111831443 A CN 111831443A CN 202010628874 A CN202010628874 A CN 202010628874A CN 111831443 A CN111831443 A CN 111831443A
Authority
CN
China
Prior art keywords
processor
state
target
thread
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.)
Pending
Application number
CN202010628874.7A
Other languages
English (en)
Inventor
谢继恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010628874.7A priority Critical patent/CN111831443A/zh
Publication of CN111831443A publication Critical patent/CN111831443A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种处理器状态调整方法、装置、存储介质及电子设备。本申请实施例通过获取处理器中运行的不同预设类别的线程的负载值;对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;将所述加权和值作为所述处理器的目标负载值;根据所述目标负载值调整所述处理器的运行状态。本申请可以基于不同类型的线程动态地获取处理器的负载值,再根据负载值对处理器的运行状态进行调整,实现了针对不同类型的线程动态调节处理器的运行状态,从而可以灵活地调控处理器。

Description

处理器状态调整方法、装置、存储介质及电子设备
技术领域
本申请涉及处理器技术领域,具体涉及一种处理器状态调整方法、装置、存储介质及电子设备。
背景技术
随着科学技术的快速发展,人们的生活中出现了越来越多的电子设备。而电子设备中最为重要的部件则是中央处理器。中央处理器(CPU,central processing unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。然而现有技术中处理器状态的调整方法单一,不能灵活地调控处理器。
发明内容
本申请实施例提供了一种处理器状态调整方法、装置、存储介质及电子设备,可以灵活地调控处理器。
第一方面,本申请实施例提供了一种处理器状态调整方法,包括:
获取处理器中运行的不同预设类别的线程的负载值;
对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;
将所述加权和值作为所述处理器的目标负载值;
根据所述目标负载值调整所述处理器的运行状态。
第二方面,本申请实施例提供了一种处理器状态调整装置,包括:
获取模块,用于获取处理器中运行的不同预设类别的线程的负载值;
加权模块,用于对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;
确定模块,用于将所述加权和值作为所述处理器的目标负载值;
调整模块,用于根据所述目标负载值调整所述处理器的运行状态。
第三方面,本申请实施例提供的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行本申请任一实施例提供的处理器状态调整方法。
第四方面,本申请实施例提供的电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行本申请任一实施例提供的处理器状态调整方法。
本申请实施例通过获取处理器中运行的不同预设类别的线程的负载值;对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;将所述加权和值作为所述处理器的目标负载值;根据所述目标负载值调整所述处理器的运行状态。本申请可以基于不同类型的线程动态地获取处理器的负载值,再根据负载值对处理器的运行状态进行调整,实现了针对不同类型的线程动态调节处理器的运行状态,从而可以灵活地调控处理器。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的处理器状态调整方法的场景示意图。
图2是本申请实施例提供的处理器状态调整方法的流程图。
图3是本申请实施例提供的处理器状态调整方法的又一流程图。
图4是本申请实施例提供的选取处理器运行状态的流程示意图。
图5是本申请实施例提供的选取处理器运行状态的又一流程示意图。
图6是本申请实施例提供的处理器状态调整装置的模块示意图。
图7是本申请实施例提供的电子设备的结构示意图。
图8是本申请实施例提供的电子设备的另一结构示意图。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本申请的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本申请具体实施例,其不应被视为限制本申请未在此详述的其它具体实施例。
本申请实施例提供一种处理器状态调整方法,该处理器状态调整方法的执行主体可以是本申请实施例提供的处理器状态调整装置,或者集成了该处理器状态调整装置的电子设备,其中该处理器状态调整装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑(PDA,Personal Digital Assistant)等。以下进行具体分析说明。
比如,如图1所示,当处于使用电子设备的场景时,该电子设备可以获取不同预设类型的线程的负载值,并根据不同预设类别的线程所对应的权重对所获取到的负载值进行加权求和,将得到的加权和值作为目标负载值,并根据该目标负载值来调整处理器的运行状态。
本申请实施例提供一种处理器状态调整方法,如图2所示,图2为本申请实施例提供的处理器状态调整方法的流程示意图,该处理器状态调整方法可以包括:
在步骤101中,获取处理器中运行的不同预设类别的线程的负载值。
其中,线程的负载值可以为预设周期内为处理器贡献负载的线程数。比如,当该预设周期为十分钟时,该线程的负载值可以为当前时刻前十分钟内为处理器贡献负载的线程数。
本申请实施例中,根据线程的重要程度的不同,将线程分为多个类别。为每一类别设置对应的权重,其中,类别的权重与重要程度成正比。
比如,在一实施例中,可以根据线程是运行在前台还是运行在后台,将线程分成前台线程和后台线程。
又比如,在另一实施例中,从线程的运行情况是否会影响到用户体验的角度出发,将系统中的线程分为第一类线程和第二类线程,其中,与用户体验紧密相关的线程记为Ux(User Experience,用户体验)线程,作为第一类线程;将除了Ux线程之外的其他线程记为非Ux线程,作为第二类线程。设置Ux线程的权重高于非Ux线程的权重。
又比如,在另一实施例中,从线程的运行情况是否会影响到用户体验的角度出发,将系统中的线程分为第一类线程、第二类线程和第三类线程,其中,与用户体验紧密相关的线程记为Ux(User Experience,用户体验)线程,作为第一类线程;将除了Ux线程之外的其他线程中的前台线程,作为第二类线程;将除了Ux线程之外的其他线程中的后台线程,作为第三类线程。设置Ux线程的权重高于前台线程的权重,设置前台线程的权重高于Ux线程的权重。
接下来,以将系统中的线程分为第一类线程和第二类线程为例,对Ux线程的识别与标记的方式进行说明。
本申请实施例中,电子设备的操作系统可以是基于Linux内核的系统,例如,安卓操作系统等。电子设备上运行着系统进程和应用程序的进程,线程是进程的一条执行路径,是程序执行时的最小单位。一个进程可以有多个线程,但至少有一个线程。
对于内核来说,在实现本申请实施例的技术方案时,都是具体到某个线程的。进程内有一个主线程,它也会创建出很多子线程来协助工作。比如一个内容交互应用程序的进程,它会创建一个主线程来执行代码,执行途中也会创建其它子线程来协助运行各部分的任务代码。
本申请实施例中,从线程的运行情况是否会影响到用户体验的角度出发,将那些直接或者间接地影响到用户体验的线程标记出来,在资源分配时,将资源向这些线程倾斜。
执行用户交互事件中相关任务的线程是否能够流畅运行决定着是否会在用户交互事件中产生用户可感知的卡顿,故确定出用于执行用户交互事件中相关任务的目标线程,并将这些与用户体验紧密相关的线程记为Ux(userexperience,用户体验)线程,即第一类线程。本申请实施例中,将除Ux线程之外的线程记为第二类线程。第二类线程的运行情况一般不会影响用户体验,或者对用户体验影响较小。
其中,电子设备的系统架构至少包括应用框架(framework)层和内核(kernel)层,本申请实施例,从应用框架层和内核层的角度对Ux线程进行识别和标记,例如,应用框架层为一些直接执行用户交互事件中相关任务的线程添加预设标签,以将这些线程标记为静态Ux线程,内核层将一些间接地影响到用户交互事件中相关任务执行的线程标记为动态Ux线程。
本申请实施例中的进程包括系统级进程和应用级进程。由于产生用户可感知的界面的卡顿的场景多是相对于运行在前台的进程来说的。因此,本申请实施例的方案中,确定出用于执行用户交互事件中相关任务的目标线程,包括:在检测到有进程切换到前台运行时,先确定该前台进程。在确定前台进程后,从该前台进程的线程中确定出用于执行用户交互事件中相关任务的线程,作为目标线程。
例如,在一实施例中,“从前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”包括:从前台进程的线程中识别出用于执行用户交互事件中相关任务的第一预设线程,作为目标线程;为目标线程添加预设标签,以将线程标记为第一类线程。
例如,上述第一预设线程包括进程运行时创建的一些用于直接执行用户交互事件的相关任务的线程,如UI(user interface,用户界面)线程,Render(渲染)线程,GL线程,用户输入事件的分发线程,用户输入事件的检测线程等。这些线程是否能够流畅运行决定着是否会在用户与该进程的交互界面中产生用户可感知的卡顿。
比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这次交互事件中,需要UI线程、Render线程、用户输入事件的分发线程、用户输入事件的检测线程等线程共同工作,以完成本次用户交互事件,其中,每一个线程的运行都需要系统为其分配资源。因此,在检测到该聊天软件在前台运行时,识别出这些线程,将其标记为Ux线程。
其中,第一预设线程一般是应用级线程,这些线程可以是通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个线程处理任务太慢导致的,则可以认为该线程是用于执行用户交互事件中相关任务的,该线程的运行与用户体验紧密相关,可以将该线程作为第一预设线程。
基于此,可以通过对各种可能的卡顿场景进行测试,记录这些导致卡顿出现的线程。电子设备中存储这些第一预设线程的相关信息,当进程切换到前台运行时,将该进程下的属于预先记录的第一预设线程的线程都标记为Ux线程。
可以理解的是,对于电子设备来说,存储的第一预设线程的相关信息并不是不可修改的,当进行系统升级时,可以对第一预设线程的相关信息进行更新。
此外,在另一实施例中,该方法还包括:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,第二预设线程为系统级线程。
由于在执行用户交互事件的过程中,除了应用级线程之外,可能还涉及到一些系统级的线程来完成任务,系统框架层也需要将这些系统级线程标记为Ux线程。一般这些线程在系统启动时就会创建,因此,可以在检测到系统启动时,识别出这些线程并进行标记,比如,Surfaceflinger线程、系统动画线程等。或者,在系统运行过程中,如果检测到有新的系统进程的线程创建并用来执行用户交互事件中相关任务,系统框架层也将这些线程标记为Ux线程。比如,SystemUI线程。其中,第二预设线程也可以通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个系统级线程处理任务太慢导致的,则可以认为该系统级线程是用于执行用户交互事件中相关任务的,该系统级线程的运行与用户体验紧密相关,可以将该系统级线程作为第二预设线程。电子设备中存储这些第二预设线程的相关信息,如果检测到系统创建了这些线程,则将其标记为Ux线程。
其中,预设标签可以为Ux标签,其添加方式如下:Linux使用task_struct结构体描述和记录线程,每个线程都有对应的task_struct结构体。task_struct中记录了线程的名称、标识符、状态、优先级、内存指针、上下文数据等属性信息。因此,应用框架层可以在task_struct结构体中增加对应的Ux flag成员,以将前台进程的UI线程、Render线程、GL线程等执行用户交互事件中相关任务的线程,通过标记Ux flag位,使内核层能够识别该线程的任务属性。
需要说明的是,上述几种静态Ux线程仅为举例说明,并不局限于此,只要是直接地执行用户交互事件中相关任务的线程,使得其运行情况直接地影响到用户体验的线程,都可以将其标记为静态Ux线程。对于应用框架层来说,在检测到新创建的线程是用来执行用户交互事件,或者检测到某些常驻系统级线程是用以处理用户交互事件时,为这些线程添加Ux标签,以将其标记为静态Ux线程。
在另一实施例中,“从前台进程的线程中确定出用于执行用户交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”还包括:在前台进程的运行过程中,当检测到有新线程创建时,确定新创建的线程是否用于执行用户交互事件中的相关任务;当新创建的线程用于执行用户交互事件中的相关任务时,将新创建的线程标记为第一类线程。
前台进程在运行过程中,如果有用户交互事件发生,除了上述应用级的第一预设线程和系统级的第二预设线程之外,还可能会有一些临时创建的任务线程,这些任务线程的运行也会直接影响到是否会在用户与该进程的交互界面中产生用户可感知的卡顿。因此,应用框架层会将这些线程也标记为Ux线程,以优化系统对该线程的资源分配。
其中,电子设备根据检测到的用户指令确定发生的用户交互事件。用户交互事件一般是指用户触发了某指令后,电子设备需要即时的对该指令进行响应,进行某种处理并将处理结果显示在界面上的情况。例如,用户使用电子设备观看视频、编辑短信、使用聊天软件、使用游戏软件、控制电子设备界面的切换、使用浏览浏览网页等,都属于用户交互事件。比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这个过程中,电子设备需要调度多个线程以完成本次用户交互事件,从该用户交互事件的开始到完成的整个过程中,进程创建的用来完成这次用户交互事件的线程都可以认为是与用户体验相关的线程。
在另一实施例中,为目标线程添加预设标签之后,该方法还包括:若前台进程为应用进程,则在检测到前台进程切换至后台运行时,删除第一预设线程的预设标签。当前台进程切换到后台运行时,该进程的运行情况已经与用户体验无关,其线程的重要程度也有所下降,因此,可以将该进程对应的第一预设线程的Ux标记删除,将这些Ux线程恢复为普通线程。
此外,对于那些在用户交互事件中临时创建的任务线程来说,在执行完对应的任务后就会被销毁,其自然会丢失掉Ux标签。而对于系统级的第二预设线程来说,即使发生了进程的前后台切换,这些线程始终与用户体验相关,所以始终保有Ux标签。
通过上述实施例,框架层识别出那些直接影响到用户体验的线程并为其添加标记。而线程需要内核为之分配系统资源供其运行。因此,线程在执行任务前,会向内核发送系统资源分配请求。当内核接收到资源分配请求时,可以先判断该线程是否为Ux线程,对于Ux线程和非Ux线程采用不同的资源分配方式。
需要说明的是,这里的第一类线程和第二类线程中的“第一类”和“第二类”,仅仅是为了区分线程是否具有Ux标签,而不是说将系统中的线程只划分为这两种类别。本申请的技术方案是从线程是否具有Ux标签这一角度出发的,如果线程同时还具有其他属性,则在实现技术方案时,考虑了是否具有Ux标签这一属性后,仍然会考虑其他属性。
上述实施例介绍了静态Ux线程的识别。还有一些线程虽然并没有直接地执行用户交互事件的相关任务,但是这些线程的运行情况也会影响到静态Ux线程的运行情况,进而间接地影响到用户交互事件的相关任务的执行。也就是说,这些线程并不是总是与用户体验相关,但是这些线程在执行过程的某段时间内,可能通过资源约束与静态Ux线程产生关联,因此,在一些实施例中,为了进一步地减少交互场景下的卡顿现象,内核层将这些与静态Ux线程之间有约束关系的线程也标记为Ux线程。而一旦这种约束关系结束,就会将该线程恢复至非Ux线程。本申请实施例中将这类线程定义为动态Ux线程。其中,具体的约束关系包括但不限于进程间通信、线程间通信或者持有临界资源等。比如,静态Ux线程通过进程间通信请求的普通线程,静态Ux线程通过某种线程间通信方式请求的普通线程,持有静态Ux线程需要的等待信号量、读写信号量、互斥锁等临界资源的普通线程等,本申请实施例中将这类线程标记为动态Ux线程。
基于此,在一些实施例中,该方法还包括:对第一类线程的运行状态进行检测;当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;为关联线程添加预设标签,以将关联线程标记为第一类线程。
在一些实施例中,将关联线程标记为第一类线程之后,还包括:当检测到约束关系解除时,删除关联线程的预设标签。
其中,关于线程的阻塞状态,在内核层面一般会区分为D状态(Uninterruptablesleep状态,不可中断的睡眠状态)和S状态(interruptable sleep状态,可中断的睡眠状态),比如,线程发起IO请求但得不到满足,就进入D状态;线程发起同步Binder请求,就会进入S状态。线程进入这些状态一般都是因为这些都是线程任务执行途中因为某些原因或者逻辑,需要主动或者被动地放弃CPU资源。
该实施例中,内核层对静态Ux线程的状态进行检测,当检测到Ux线程进入到堵塞状态时,确定出与进入堵塞状态的Ux线程之间具有约束关系的关联线程,如果这些关联线程没有及时分配到资源,比如IO资源,而导致运行受阻,则由于关联线程的运行缓慢又会导致该Ux线程长时间处于阻塞状态,因此,为了避免该Ux线程长时间处于阻塞状态,内核层会将识别出的关联线程也标记为Ux线程,以提高其IO处理效率,保证其及时执行,进而快速解除该Ux线程的阻塞状态。
其中,内核在确定线程的类别时,可以获取线程中携带的标签,并根据所述标签确定线程对应的预设类别,则该方法可以包括:
获取线程中携带的标签,并根据所述标签确定线程对应的预设类别。
其中,内核在确定线程的类别时,该方法可以包括:确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,将除所述第一类线程之外的其他线程标记为第二类线程。
在步骤102中,对获取到的负载值进行加权求和得到加权和值,其中该不同预设类别的线程对应的权重不同。
其中,权重可以有多种设置方式。例如,可以根据不同的预设类型的线程设置不同的权重占比。在一些实施例中,当线程的预设类型为Ux线程、前台线程和后台线程时,可以给予Ux线程,前台线程和后台线程不同的权重占比。其中,权重占比可以根据实际需求进行设置。例如,当前的场景需要增强处理器的运行能力时,可以将权重占比设置从高到低。又例如,当前的场景需要增强后台处理的运行能力时,可以将权重占比设置为从低到高。又例如,可以针对不同的处理器,并针对不同预设类型的线程设置不同的权重占比。
其中,对获取到的负载值进行加权求和得到加权和值的方式可以有多种。在一些实施例中,可以获取不同预设类型的线程所对应的权重,再根据该权重对获取到的不同预设类型的线程在预设周期内的负载值进行加权求和,得到加权和值。
在步骤103中,将该加权和值作为该处理器的目标负载值。
在一些实施例中,当线程的预设类型包括Ux线程,前台线程和后台线程时,该目标负载值可以为用户体验相关负载值(Uxload)。
例如,当获取到Ux线程、前台线程和后台线程的负载值时,可以获取每一类线程所对应的权重,分别为第一权重、第二权重和第三权重。由于当前场景需要增强用户使用体验,则可以由高到低设置第一权重、第二权重和第三权重的值。然后根据每一权重的值进行加权求和,得到加权和值。然后,将该加权和值作为该处理器的目标负载值。
在步骤104中,根据该目标负载值调整该处理器的运行状态。
其中,处理器的运行状态可以包括正常运行状态和空闲状态(idle state,在Linux内核的标准术语中,也称作C state)。
在一些实施例中,处理器可以从正常运行状态调整到空闲状态。当从正常运行状态调整至空闲状态时,可以调整为不同的idle state(例如,可以为C0、C1、C2……)。在idlestate下关闭的系统资源越多,idle state下的功耗就越低,但对应退出idle state的时延就越长。可以把这些不同的idle state称作CPU的idle深度。例如,较深的idle state可以消耗更少的功耗,但是退出时延较高。较浅的idle state可以消耗更多的功耗,但是退出时延较低,CPU可以很快的从idlestate退出,参与运算。
其中,根据该目标负载值调整该处理器的运行状态的方式可以有多种。在一些实施例中,可以通过预测处理器在调整的运行状态中的运行时长、以及获取输入输出任务信息、负载值来获取该处理器的时延容忍值,并根据该时延容忍值调整处理器的运行状态。该“根据该目标负载值调整该处理器的运行状态”的方法可以包括:
预测该处理器在调整后的运行状态中的运行时长;
获取该处理器的输入输出任务信息;
根据该运行时长、该输入输出任务信息以及该目标负载值获取该处理器的第一时延容忍值;
根据该第一时延容忍值调整该处理器的运行状态。
其中,预测该处理器在调整后的运行状态中的运行时长的方式可以有多种。例如,在一些实施例中可以根据系统当前的运行情况,预测该处理器在调整后的运行状态中的运行时长(即predicted_us)。比如,可以测量得到距离下一个tick(Linux系统中的一种计时单位)来临的时间,将该时间作为predicted_us。又比如,可以基于以往得到的实际predicted_us得到。再比如,还可以统计过去多次停留时间的标准差(stand deviation),如果小于一定的门限值,则使用这多个停留时间的平均值,作为predicted_us。
其中,获取该处理器的输入输出任务信息的方式可以有多种。例如,在一些实施例中,该输入输出任务信息(iowaiters)可以通过get_iowait_load函数获取。具体可以根据实际需求进行设置。
其中,根据该运行时长、该输入输出任务信息以及该目标负载值获取该处理器的第一时延容忍值的方式可以有多种。例如,在一些实施例中,当该目标负载值为Uxload时,可以根据以下公式获取处理器的第一时延容忍度:
predicted_us/(1+2*Uxload+10*iowaiters)。
其中,根据该第一时延容忍值调整该处理器的运行状态的方式可以有多种。在一些实施例中,可以根据处理器的运行性能获取第二时延容忍值,选取第一、第二时延容忍值中较小的作为目标时延容忍值,并根据该目标时延容忍度选取目标运行状态。则该方法可以包括:
根据该处理器的运行性能信息获取该处理器的第二时延容忍值;
从该第一时延容忍值与该第二时延容忍值中选取较小的候选时延容忍值作为目标时延容忍值;
根据该目标时延容忍值调整该处理器的运行状态。
其中,根据该处理器的运行性能信息获取该处理器的第二时延容忍值的方式可以有多种。例如,在一些实施例中,该处理器的运行性能信息可以根据通过电源管理服务质量(Power Management Quality Of Service,PM QoS)获取。又例如,可以基于系统期望的CPU和直接存储器访问(Direct Memory Access,DMA)的延迟需求获取。具体可以根据实际需求进行设置。
其中,根据该目标时延容忍值调整该处理器的运行状态可以有多种方式。在一些实施例中,该方式可以包括:
确定该目标时延容忍值所对应的多个候选运行状态;
从该多个候选运行状态中确定第一目标运行状态;
将该处理器的运行状态调整为该第一目标运行状态。
其中,确定该目标时延容忍值所对应的多个候选运行状态的方式可以有多种。在一些实施例中,可以通过获取处理器从运行状态调整到其他状态时的延迟时长,并将该延迟时长小于目标时延容忍值的确定为候选运行状态。该方式可以包括:
获取该处理器调整为每个预设运行状态时所对应的调整时长;
将该调整时长小于该目标时延容忍值的预设运行状态确定为候选运行状态。
其中,调整时长可以有多种表现形式。例如,当处理器调整状态的目的是为了提高运行流畅度时,该调整时长可以为退出该state的延迟时长(exit_latency)。该调整时长可以根据实际需求进行设置。
其中,从该多个候选运行状态中确定第一目标运行状态的方式可以有多种。在一些实施例中,可以从中多个候选运行状态中选取功耗满足预设功耗要求的作为目标运行状态,并将处理器的运行状态调整为该运行状态,则该方式可以包括:
获取每个候选运行状态所对应的功耗;
从该多个候选运行状态中选取功耗满足预设功耗要求的运行状态,得到第一目标运行状态。
其中,从该多个候选运行状态中选取功耗满足预设功耗要求的运行状态的方式可以有多种。例如,由于每个候选运行状态对应着不同的功耗,当调整运行状态的目的为降低功耗时,则该预设功耗要求可以为功耗最小,则可以获取功耗最小的state作为第一目标运行状态。
例如,在一些实施例中,调整运行状态的目的是为了降低功耗。当获取到第一时延容忍值和第二时延容忍值,通过比较该两个候选时延容忍值的大小,从中选取较小的作为目标时延容忍值,并在所有idle state中选取exit_latency小于该目标时延容忍值的多个state,在多个state中选取功耗最小的state作为第一目标运行状态,并将该处理器的运行状态调整为该状态。
由上所述,当需要调整处理器的运行状态时,可以获取时延容忍值。通过获取所有idle state从运行状态调整到该state的延迟时长(exit_latency),从中选取延迟时长小于latency_req(时延容忍值)的状态,可以降低处理器的运行时延,有效地提高处理器运行的流畅度。再在选取出来的状态中选取功耗最小的作为目标运行状态,并将处理器的运行状态调整为该运行状态,可以有效地降低处理器的功耗。其中,时延容忍度还与系统运行性能有关,则可以通过获取与系统运行性能相关的第二时延容忍度,并与第一时延容忍度进行比较以选取目标时延容忍度,并根据该目标时延容忍度选取目标运行状态,并基于此调整该处理器的运行状态。本申请不仅提高系统运行流畅度,还降低了处理器运行的功耗,给用户带来了良好的使用体验。
由于CPU在不同运行状态之间切换需要付出功耗的代价。基于该代价CPU必须在idle state中停留超过一定的时间(target_residency)。因此需要预测出CPU从正常运行状态调整至idle state时,将要在每一个idle state中的停留时长,则选取满足“停留时长>target_residency”的idle state。在一些实施例中,还可以通过选取所有停留时长大于target_residency的idle state中功耗最小的state作为第二目标运行状态,通过比较第一目标运行状态和第二目标运行状态之间的功耗,选取功耗最小的作为处理器所需要调整的运行状态。
其中,该将该处理器的运行状态调整为该第一目标运行状态之前,还包括:
预测该处理器在该每个预设运行状态中的停留时长;
将该停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态;
当该第一目标运行状态对应的功耗小于该第二目标运行状态时,将该处理器的运行状态调整为该第一目标运行状态。
其中,将该停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态的方法可以有多种。例如,当预设停留时间要求为“停留时长>target_residency”时,可以从所有state中选取多个满足预设停留时间要求的state。进一步地,从选取出来中的state中选取功耗最小的作为第二目标运行状态。
其中,当获取第二目标运行状态之后,该方法还可以包括:
当该第一目标运行状态对应的功耗大于该第二目标运行状态时,将该处理器的运行状态调整为该第二目标运行状态。
例如,当从所有state中选取“停留时长>target_residency”且功耗最小的state作为第二目标运行状态时,可以比较第一目标运行状态和第二目标运行状态的功耗,选取功耗较小的作为该处理器所需要调整的运行状态。
本申请实施例通过获取处理器中运行的不同预设类别的线程的负载值;对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;将所述加权和值作为所述处理器的目标负载值;根据所述目标负载值调整所述处理器的运行状态。
由于本申请通过对不同预设类型的线程给予不同的权重占比,并基于该权重占比获取处理器的负载值以及所对应的时延容忍度。当系统中Ux线程较多时,通过提高Ux线程的权重,使得时延容忍度更低,在进入idle状态时偏向选择深度更浅的idle状态,缩短处理器在调整状态时产生的时延,提高线程运行效率,减少用户交互场景下的卡顿现象,提升用户体验;而当Ux线程和前台线程较少,而后台线程较多时,由于后台线程的权重较低,所得到的时延容忍度更高,则在进入idle状态时会偏向选择深度更深的idle状态,可以减少功耗。基于此,通过针对不同类型的线程计算负载值,并且根据该负载值选择不同的运行状态,可以动态调节处理器的运行状态,灵活地调控处理器,不仅提高了处理器的响应速度,而且减少了部分场景下电子设备的功耗。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
请参阅图3,图3为本申请实施例提供的处理器状态调整方法的另一流程示意图,该处理器状态调整方法可以包括:
在步骤201中,获取处理器中运行的不同预设类别的线程的负载值。
确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,将除所述第一类线程之外的其他线程标记为第二类线程。例如,将处理器中运行的任务线程分为Ux线程,前台线程和后台线程。分别获取Ux线程、前台线程和后台线程在预设周期内的负载值。其中,内核在确定线程的类别时,可以获取线程中携带的标签,并根据所述标签确定线程对应的预设类别。
在步骤202中,对获取到的负载值进行加权求和得到加权和值,其中该不同预设类别的线程对应的权重不同。
例如,当线程的预设类型为Ux线程、前台线程和后台线程时,可以获取每一类线程所对应的权重,分别为第一权重、第二权重和第三权重。其中,权重占比设置从高到低。然后根据每一权重的值进行加权求和,得到加权和值。
在步骤203中,将该加权和值作为该处理器的目标负载值。
例如,当线程的预设类型为Ux线程、前台线程和后台线程时,可以获取每一类线程所对应的权重,分别为第一权重、第二权重和第三权重。其中,权重占比设置从高到低。然后根据每一权重的值进行加权求和,得到加权和值。然后,将该加权和值作为该处理器的目标负载值。
在步骤204中,预测该处理器在调整后的运行状态中的运行时长,获取该处理器的输入输出任务信息,并根据该运行时长、该输入输出任务信息以及该目标负载值获取该处理器的第一时延容忍值。
例如,可以根据系统当前的运行情况,预测该处理器在调整后的运行状态中的运行时长(即predicted_us)。该输入输出任务信息(iowaiters)可以通过get_iowait_load函数获取。当线程的预设类型为Ux线程、前台线程和后台线程时,该目标负载值可以为Uxload,则可以根据以下公式获取处理器的第一时延容忍度:predicted_us/(1+2*Uxload+10*iowaiters)。
在步骤205中,根据该处理器的运行性能信息获取该处理器的第二时延容忍值,从该第一时延容忍值与该第二时延容忍值中选取较小的候选时延容忍值作为目标时延容忍值。
例如,可以基于系统期望的CPU和DMA的延迟需求获取该处理器的运行性能信息,并获取到该处理器的第二时延容忍值。由于需要提高处理器的运行流畅度,则需要调整到时延较小的处理状态,则将第一时延容忍值与第二时延容忍值进行比较,选取较小的作为目标时延容忍值。
在步骤206中,确定该目标时延容忍值所对应的多个候选运行状态,从该多个候选运行状态中确定第一目标运行状态。
例如,如图4所示,当确定该目标时延容忍值所对应的多个候选运行状态时,可以获取该处理器调整为每个预设运行状态时所对应的调整时长,并将该调整时长小于该目标时延容忍值的预设运行状态确定为候选运行状态。当获取到多个候选运行状态时,可以获取每个候选运行状态所对应的功耗。由于处理器调整运行状态的目的是提高运行流畅度的同时降低功耗,则可以从该多个候选运行状态中选取功耗最小的运行状态,得到第一目标运行状态。
在步骤207中,预测该处理器在该每个预设运行状态中的停留时长,将该停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态。
CPU在不同运行状态之间切换需要付出功耗的代价。基于该代价CPU必须在idlestate中停留超过一定的时间(target_residency)。因此需要预测出CPU从正常运行状态调整至idle state时,将要在每一个idle state中的停留时长,则选取满足“停留时长>target_residency”的idle state。
例如,如图5所示,当预设停留时间要求为“停留时长>target_residency”时,可以从所有idle state中选取多个满足预设停留时间要求的state。由于处理器调整运行状态的目的是提高运行流畅度的同时降低功耗,则可以从选取出来中的state中选取功耗最小的作为第二目标运行状态。
在步骤208中,从第一目标运行状态和第二目标运行状态中选取功耗较小的运行状态,并基于此调整该处理器的运行状态。
例如,当得到第一目标运行状态和第二目标运行状态时,获取相应的功耗。比较每个运行状态所对应的功耗。当该第一目标运行状态对应的功耗小于该第二目标运行状态时,将该处理器的运行状态调整为该第一目标运行状态。
当该第一目标运行状态对应的功耗大于该第二目标运行状态时,将该处理器的运行状态调整为该第二目标运行状态。
由此可知,本申请实施例提供的处理器状态调整方法可以获取处理器中运行的不同预设类别的线程的负载值;然后,对获取到的负载值进行加权求和得到加权和值,其中该不同预设类别的线程对应的权重不同,将该加权和值作为该处理器的目标负载值;之后,预测该处理器在调整后的运行状态中的运行时长,获取该处理器的输入输出任务信息,并根据该运行时长、该输入输出任务信息以及该目标负载值获取该处理器的第一时延容忍值;接着,根据该处理器的运行性能信息获取该处理器的第二时延容忍值,从该第一时延容忍值与该第二时延容忍值中选取较小的候选时延容忍值作为目标时延容忍值;再接着,确定该目标时延容忍值所对应的多个候选运行状态,从该多个候选运行状态中确定第一目标运行状态;预测该处理器在该每个预设运行状态中的停留时长,将该停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态;从第一目标运行状态和第二目标运行状态中选取功耗较小的运行状态,并基于此调整该处理器的运行状态。由于本申请实施例所提供的处理器状态调整方法可以根据线程的不同类型动态调整处理器的运行状态,可以在降低处理器运行功耗的同时灵活调整处理器,使得处理器的运行流畅度提升,减少用户交互场景下的卡顿现象,进一步提升了用户的使用体验。
为便于更好的实施本申请实施例提供的处理器状态调整方法,本申请实施例还提供一种基于上述处理器状态调整方法的装置。其中名词的含义与上述处理器状态调整方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图6,图6为本申请实施例提供的处理器状态调整装置300的模块示意图。具体而言,该处理器状态调整装置300,包括:获取模块301、加权模块302、确定模块303、调整模块304。
获取模块301,用于获取处理器中运行的不同预设类别的线程的负载值;
加权模块302,用于对获取到的负载值进行加权求和得到加权和值,其中该不同预设类别的线程对应的权重不同;
确定模块303,用于将该加权和值作为该处理器的目标负载值;
调整模块304,用于根据该目标负载值调整该处理器的运行状态。
在一些实施方式中,该调整模块304用于:
预测该处理器在调整后的运行状态中的运行时长;获取该处理器的输入输出任务信息;根据该运行时长、该输入输出任务信息以及该目标负载值获取该处理器的第一时延容忍值;根据该第一时延容忍值调整该处理器的运行状态。
在一些实施方式中,该调整模块304用于:
根据该处理器的运行性能信息获取该处理器的第二时延容忍值;从该第一时延容忍值与该第二时延容忍值中选取较小的候选时延容忍值作为目标时延容忍值;根据该目标时延容忍值调整该处理器的运行状态。
在一些实施方式中,该调整模块304用于:
确定该目标时延容忍值所对应的多个候选运行状态;从该多个候选运行状态中确定第一目标运行状态;将该处理器的运行状态调整为该第一目标运行状态。
在一些实施方式中,该调整模块304用于:
获取该处理器调整为每个预设运行状态时所对应的调整时长;将该调整时长小于该目标时延容忍值的预设运行状态确定为候选运行状态。
在一些实施方式中,该调整模块304用于:
获取每个候选运行状态所对应的功耗;从该多个候选运行状态中选取功耗满足预设功耗要求的运行状态,得到第一目标运行状态。
在一些实施方式中,将该处理器的运行状态调整为该第一目标运行状态之前,该调整模块304还用于:
预测该处理器在该每个预设运行状态中的停留时长;
将该停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态;
当该第一目标运行状态对应的功耗小于该第二目标运行状态时,将该处理器的运行状态调整为该第一目标运行状态。
在一些实施方式中,该调整模块304还用于:
当该第一目标运行状态对应的功耗大于该第二目标运行状态时,将该处理器的运行状态调整为该第二目标运行状态。
在一些实施方式中,所述获取处理器中运行的不同预设类别的线程的负载值之前,该调整模块304还用于:
获取线程中携带的标签,并根据所述标签确定线程对应的预设类别。
在一些实施方式中,该调整模块304还用于:
确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,将除所述第一类线程之外的其他线程标记为第二类线程。
由此可知,本申请实施例提供了一种处理器状态调整装置,获取模块301可以获取处理器中运行的不同预设类别的线程的负载值;加权模块302对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;确定模块303将所述加权和值作为所述处理器的目标负载值;调整模块304根据所述目标负载值调整所述处理器的运行状态。本申请实施例可以针对不同类型的线程动态调节处理器的运行状态,可以灵活地调控处理器。
本申请实施例还提供一种电子设备400。请参阅图7,电子设备400包括处理器401以及存储器。其中,处理器401与存储器电性连接。
该处理器400是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或加载存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备400的各种功能并处理数据,从而对电子设备400进行整体监控。
该存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的计算机程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
在本申请实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401运行存储在存储器402中的计算机程序,从而实现各种功能,如下:
获取处理器中运行的不同预设类别的线程的负载值;对获取到的负载值进行加权求和得到加权和值,其中该不同预设类别的线程对应的权重不同;将该加权和值作为该处理器的目标负载值;根据该目标负载值调整该处理器的运行状态。
在一些实施例中,处理器401可以具体执行以下步骤:
预测该处理器在调整后的运行状态中的运行时长;获取该处理器的输入输出任务信息;根据该运行时长、该输入输出任务信息以及该目标负载值获取该处理器的第一时延容忍值;根据该第一时延容忍值调整该处理器的运行状态。
在一些实施例中,处理器401可以具体执行以下步骤:
根据该处理器的运行性能信息获取该处理器的第二时延容忍值;从该第一时延容忍值与该第二时延容忍值中选取较小的候选时延容忍值作为目标时延容忍值;根据该目标时延容忍值调整该处理器的运行状态。
在一些实施例中,处理器401可以具体执行以下步骤:
确定该目标时延容忍值所对应的多个候选运行状态;从该多个候选运行状态中确定第一目标运行状态;将该处理器的运行状态调整为该第一目标运行状态。
在一些实施例中,处理器401可以具体执行以下步骤:
获取该处理器调整为每个预设运行状态时所对应的调整时长;将该调整时长小于该目标时延容忍值的预设运行状态确定为候选运行状态。
在一些实施例中,处理器401可以具体执行以下步骤:
获取每个候选运行状态所对应的功耗;从该多个候选运行状态中选取功耗满足预设功耗要求的运行状态,得到第一目标运行状态。
在一些实施例中,该将该处理器的运行状态调整为该第一目标运行状态之前,处理器401可以具体执行以下步骤:
预测该处理器在该每个预设运行状态中的停留时长;将该停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态;当该第一目标运行状态对应的功耗小于该第二目标运行状态时,将该处理器的运行状态调整为该第一目标运行状态。
在一些实施例中,该将该停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态之后,处理器401可以具体执行以下步骤:
当该第一目标运行状态对应的功耗大于该第二目标运行状态时,将该处理器的运行状态调整为该第二目标运行状态。
在一些实施例中,获取处理器中运行的不同预设类别的线程的负载值之前,处理器401可以具体执行以下步骤:
获取线程中携带的标签,并根据所述标签确定线程对应的预设类别。
在一些实施例中,处理器401可以具体执行以下步骤:
确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,将除所述第一类线程之外的其他线程标记为第二类线程。
由上可知,本申请实施例的电子设备通过获取处理器中运行的不同预设类别的线程的负载值;对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;将所述加权和值作为所述处理器的目标负载值;根据所述目标负载值调整所述处理器的运行状态。本申请可以针对不同类型的线程动态调节处理器的运行状态,可以灵活地调控处理器。
请一并参阅图8,在某些实施方式中,电子设备400还可以包括:显示器403、射频电路404、音频电路405以及电源406。其中,其中,显示器403、射频电路404、音频电路405以及电源406分别与处理器401电性连接。
该显示器403可以用于显示由用户输入的信息或提供给用户的信息以及各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示器403可以包括显示面板,在某些实施方式中,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、或者有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板。
该射频电路404可以用于收发射频信号,以通过无线通信与网络设备或其他电子设备建立无线通讯,与网络设备或其他电子设备之间收发信号。
该音频电路405可以用于通过扬声器、传声器提供用户与电子设备之间的音频接口。
该电源406可以用于给电子设备400的各个部件供电。在一些实施例中,电源406可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
本文所使用的术语「模块」可看做为在该运算系统上执行的软件对象。本文该的不同组件、模块、引擎及服务可看做为在该运算系统上的实施对象。而本文该的装置及方法优选的以软件的方式进行实施,当然也可在硬件上进行实施,均在本申请保护范围之内。
本申请实施例还提供一种存储介质,该存储介质存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上述任一实施例中的处理器状态调整方法,比如:获取处理器中运行的不同预设类别的线程的负载值;对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;将所述加权和值作为所述处理器的目标负载值;根据所述目标负载值调整所述处理器的运行状态。本申请可以针对不同类型的线程动态调节处理器的运行状态,可以灵活地调控处理器。
在本申请实施例中,存储介质可以是磁碟、光盘、只读存储器(Read Only Memory,ROM)、或者随机存取记忆体(Random Access Memory,RAM)等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对本申请实施例的处理器状态调整方法而言,本领域普通测试人员可以理解实现本申请实施例的处理器状态调整方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,如存储在电子设备的存储器中,并被该电子设备内的至少一个处理器执行,在执行过程中可包括如处理器状态调整方法的实施例的流程。其中,该的存储介质可为磁碟、光盘、只读存储器、随机存取记忆体等。
对本申请实施例的处理器状态调整装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,该存储介质譬如为只读存储器,磁盘或光盘等。
以上对本申请实施例所提供的一种处理器状态调整方法、装置、存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (12)

1.一种处理器状态调整方法,其特征在于,包括:
获取处理器中运行的不同预设类别的线程的负载值;
对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;
将所述加权和值作为所述处理器的目标负载值;
根据所述目标负载值调整所述处理器的运行状态。
2.根据权利要求1所述的处理器状态调整方法,其特征在于,所述根据所述目标负载值调整所述处理器的运行状态,包括:
预测所述处理器在调整后的运行状态中的运行时长;
获取所述处理器的输入输出任务信息;
根据所述运行时长、所述输入输出任务信息以及所述目标负载值获取所述处理器的第一时延容忍值;
根据所述第一时延容忍值调整所述处理器的运行状态。
3.根据权利要求2所述的处理器状态调整方法,其特征在于,所述根据所述第一时延容忍值调整所述处理器的运行状态,包括:
根据所述处理器的运行性能信息获取所述处理器的第二时延容忍值;
从所述第一时延容忍值与所述第二时延容忍值中选取较小的候选时延容忍值作为目标时延容忍值;
根据所述目标时延容忍值调整所述处理器的运行状态。
4.根据权利要求3所述的处理器状态调整方法,其特征在于,根据所述目标时延容忍值调整所述处理器的运行状态,包括:
确定所述目标时延容忍值所对应的多个候选运行状态;
从所述多个候选运行状态中确定第一目标运行状态;
将所述处理器的运行状态调整为所述第一目标运行状态。
5.根据权利要求4所述的处理器状态调整方法,其特征在于,所述确定所述目标时延容忍值所对应的多个候选运行状态,包括:
获取所述处理器调整为每个预设运行状态时所对应的调整时长;
将所述调整时长小于所述目标时延容忍值的预设运行状态确定为候选运行状态。
6.根据权利要求4所述的处理器状态调整方法,其特征在于,所述从所述多个候选运行状态中确定第一目标运行状态,包括:
获取每个候选运行状态所对应的功耗;
从所述多个候选运行状态中选取功耗满足预设功耗要求的运行状态,得到第一目标运行状态。
7.根据权利要求5所述的处理器状态调整方法,其特征在于,所述将所述处理器的运行状态调整为所述第一目标运行状态之前,还包括:
预测所述处理器在所述每个预设运行状态中的停留时长;
将所述停留时长满足预设停留时间要求的预设运行状态确定为第二目标运行状态;
当所述第一目标运行状态对应的功耗小于所述第二目标运行状态时,将所述处理器的运行状态调整为所述第一目标运行状态。
8.根据权利要求1至7任一项所述的处理器状态调整方法,其特征在于,所述获取处理器中运行的不同预设类别的线程的负载值之前,还包括:
获取线程中携带的标签,并根据所述标签确定线程对应的预设类别。
9.根据权利要求8所述的处理器状态调整方法,其特征在于,所述方法还包括:
确定出用于执行用户交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,将除所述第一类线程之外的其他线程标记为第二类线程。
10.一种处理器状态调整装置,其特征在于,包括:
获取模块,用于获取处理器中运行的不同预设类别的线程的负载值;
加权模块,用于对获取到的负载值进行加权求和得到加权和值,其中所述不同预设类别的线程对应的权重不同;
确定模块,用于将所述加权和值作为所述处理器的目标负载值;
调整模块,用于根据所述目标负载值调整所述处理器的运行状态。
11.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至9任一项所述的处理器状态调整方法。
12.一种电子设备,包括处理器和存储器,所述存储器有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至9任一项所述的处理器状态调整方法。
CN202010628874.7A 2020-07-01 2020-07-01 处理器状态调整方法、装置、存储介质及电子设备 Pending CN111831443A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010628874.7A CN111831443A (zh) 2020-07-01 2020-07-01 处理器状态调整方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010628874.7A CN111831443A (zh) 2020-07-01 2020-07-01 处理器状态调整方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN111831443A true CN111831443A (zh) 2020-10-27

Family

ID=72901224

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010628874.7A Pending CN111831443A (zh) 2020-07-01 2020-07-01 处理器状态调整方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN111831443A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445737A (zh) * 2020-11-23 2021-03-05 海光信息技术股份有限公司 通过非透明桥设备传输信息的系统、方法和该设备
CN112667407A (zh) * 2021-01-18 2021-04-16 成都国科微电子有限公司 一种处理器参数调节方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649042A (zh) * 2016-12-28 2017-05-10 深圳市深信服电子科技有限公司 一种cpu负载信息的处理方法及处理装置
CN110120973A (zh) * 2019-04-28 2019-08-13 华为技术有限公司 一种请求控制方法、相关设备及计算机存储介质
CN110795238A (zh) * 2019-10-11 2020-02-14 Oppo广东移动通信有限公司 负载计算方法、装置、存储介质及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649042A (zh) * 2016-12-28 2017-05-10 深圳市深信服电子科技有限公司 一种cpu负载信息的处理方法及处理装置
CN110120973A (zh) * 2019-04-28 2019-08-13 华为技术有限公司 一种请求控制方法、相关设备及计算机存储介质
CN110795238A (zh) * 2019-10-11 2020-02-14 Oppo广东移动通信有限公司 负载计算方法、装置、存储介质及电子设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445737A (zh) * 2020-11-23 2021-03-05 海光信息技术股份有限公司 通过非透明桥设备传输信息的系统、方法和该设备
CN112445737B (zh) * 2020-11-23 2022-02-22 海光信息技术股份有限公司 通过非透明桥设备传输信息的系统、方法和该设备
CN112667407A (zh) * 2021-01-18 2021-04-16 成都国科微电子有限公司 一种处理器参数调节方法、装置、电子设备及存储介质
CN112667407B (zh) * 2021-01-18 2023-09-19 成都国科微电子有限公司 一种处理器参数调节方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN111831440B (zh) 内存回收方法、装置、存储介质及电子设备
CN106557367B (zh) 用于为计算资源提供粒度化服务质量的装置、方法和设备
CN106716365B (zh) 异构线程调度
CN111831441A (zh) 内存回收方法、装置、存储介质及电子设备
CN111831437B (zh) 设备管理方法、装置、存储介质及电子设备
CN111831414A (zh) 线程迁移方法、装置、存储介质及电子设备
CN111597042A (zh) 业务线程运行方法、装置、存储介质及电子设备
US8782674B2 (en) Wait on address synchronization interface
CN111831433A (zh) 资源分配方法、装置、存储介质及电子设备
CN111813520A (zh) 线程调度方法、装置、存储介质及电子设备
US9875141B2 (en) Managing pools of dynamic resources
CN111831434A (zh) 资源分配方法、装置、存储介质及电子设备
CN113495780A (zh) 任务调度方法、装置、存储介质及电子设备
CN111813521A (zh) 线程调度方法、装置、存储介质及电子设备
CN111831443A (zh) 处理器状态调整方法、装置、存储介质及电子设备
CN111831435A (zh) 内存分配方法、装置、存储介质及电子设备
CN111831438A (zh) 资源分配方法、装置、存储介质及电子设备
CN111831411B (zh) 任务处理方法、装置、存储介质及电子设备
CN111831436B (zh) Io请求的调度方法、装置、存储介质及电子设备
CN111831432B (zh) Io请求的调度方法、装置、存储介质及电子设备
CN117999541A (zh) 基于资源消耗的动态策略调整
Vega et al. STOMP: A tool for evaluation of scheduling policies in heterogeneous multi-processors
CN111831442A (zh) 一种资源分配的方法、装置、存储介质及电子设备
CN113495787A (zh) 资源分配方法、装置、存储介质及电子设备
CN111831439A (zh) Io请求的处理方法、装置、存储介质及电子设备

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