CN117999543A - 分配计算设备资源 - Google Patents
分配计算设备资源 Download PDFInfo
- Publication number
- CN117999543A CN117999543A CN202280064659.6A CN202280064659A CN117999543A CN 117999543 A CN117999543 A CN 117999543A CN 202280064659 A CN202280064659 A CN 202280064659A CN 117999543 A CN117999543 A CN 117999543A
- Authority
- CN
- China
- Prior art keywords
- task
- amount
- determining
- computing device
- perform
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000004044 response Effects 0.000 claims abstract description 49
- 238000013468 resource allocation Methods 0.000 description 95
- 239000003607 modifier Substances 0.000 description 16
- 238000004146 energy storage Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011982 device technology Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5044—Allocation 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 hardware capabilities
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
公开了用于分配计算设备的资源的技术。在计算设备处执行的操作系统可以接收对计算设备执行与安装在计算设备处的应用相关联的任务的请求,并且确定与执行任务相关联的资源成本。在各种示例中,操作系统进一步基于应用来确定可用于执行任务的资源量,并且调度要在计算设备处执行的任务。响应于确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,计算设备可以基于调度来执行任务。
Description
本申请要求于2021年9月24日提交的美国专利申请序列No.17/448,737的权益,其全部内容通过引用并入本文。
背景技术
安装在计算设备处的一个或多个应用可以向计算设备的操作系统(“OS”)发送执行任务的请求。例如,娱乐应用可以自动地向OS发送请求以使计算设备在后台下载电影。这样的后台任务可能消耗计算设备的资源,诸如电池电力、处理器周期、网络带宽等。在一些情况下,用户可能不知道计算设备正在执行这样的后台任务,并且后台任务可能消耗比期望更多的资源(例如,通过过早地耗尽电池)。
发明内容
本公开的技术涉及使得计算设备能够相对于可用于执行任务的资源量,基于与执行任务相关联的资源成本来执行任务。通常,计算设备可以执行由安装在计算设备处的一个或多个应用所请求的每个任务。因此,计算设备可能将资源分配给执行(例如,对计算设备的用户)不重要的任务,并且因此没有足够的资源用于执行重要的任务。这不仅可能干扰计算设备的使用(例如,通过迫使用户对计算设备进行再充电),并且因此不利地影响计算设备的用户体验,而且可能增加电池的充电周期,这可能最终导致电池性能降低(例如,电池寿命减少)。
计算设备可以确定与执行任务相关联的资源成本,确定可用于执行任务的资源量,并且响应于确定在给定任务的资源成本的情况下有足够的资源可用于执行任务,调度并且执行任务,而不是执行对任务的每个请求而不考虑任务的重要性。在其他示例中,即使没有足够的资源,系统也可以调度任务,但是在有足够的资源之前可以不执行任务。资源成本和可用资源量都可能基于各种因素,其中至少一些因素可能与任务的重要性有关。
以这种方式,技术的各个方面可以使计算设备能够更有效地将资源分配给更重要的任务。以这种方式对任务进行优先级排序因此可以减少计算设备的功率使用,并且在一些示例中,减少计算设备的带宽和处理器使用。具体地,通过在与执行任务相关联的资源成本大于可用于执行任务的资源量时不执行任务(以这种方式指示任务不重要),计算设备可以减少功率、处理器和/或带宽使用。
在一些示例中,一种方法包括:由在计算设备处执行的操作系统接收对操作系统执行与安装在计算设备处的应用相关联的任务的请求;由操作系统确定与执行任务相关联的资源成本;由操作系统并且基于应用来确定可用于执行任务的资源量;由操作系统调度要在计算设备处执行的任务;以及响应于确定在给定与执行任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,由操作系统并且基于调度来执行任务。
在一些示例中,一种计算设备包括:一个或多个处理器;存储器,所述存储器存储操作系统和指令,所述指令在由所述一个或多个处理器执行时使一个或多个处理器:接收对操作系统执行与安装在计算设备处的应用相关联的任务的请求;确定与执行任务相关联的资源成本;基于应用来确定可用于执行任务的资源量;调度要在计算设备处执行的任务;以及响应于确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,基于调度来执行任务。
在一些示例中,一种非暂时性计算机可读存储介质编码有指令,所述指令在由计算设备的一个或多个处理器执行时,使一个或多个处理器:接收对计算设备的操作系统执行与安装在计算设备处的应用相关联的任务的请求;确定与执行任务相关联的资源成本;基于应用,确定可用于执行任务的资源量;调度任务以在计算设备处执行;以及响应于确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,基于调度来执行任务。
在附图和以下描述中阐述了一个或多个示例的细节。本公开的其他特征、目的和优点根据说明书和附图以及权利要求书将是显而易见的。
附图说明
图1是图示根据本公开的技术的用于分配资源的示例计算设备的概念图。
图2是图示根据本公开的技术的用于分配资源的示例计算设备的进一步细节的概念图。
图3A和3B是图示根据本公开的技术的示例资源成本储存库和示例资源可用性储存库的概念图。
图4是图示根据本公开的技术的计算设备的示例操作的流程图。
具体实施方式
图1是图示根据本公开的技术的用于分配资源的示例计算设备100的概念图。在图1的示例中,计算设备100表示单独的移动或非移动计算设备。计算设备100的示例包括移动电话、平板计算机、膝上型计算机、台式计算机、服务器、大型机、机顶盒、电视、可穿戴设备(例如,计算机化手表、计算机化眼镜、计算机化耳机、计算机化手套等)、家庭自动化设备或系统(例如,智能恒温器或家庭助理设备)、个人数字助理(PDA)、游戏系统、媒体播放器、电子书阅读器、移动电视平台、汽车导航或信息娱乐系统,或被配置为根据本公开的技术分配资源的任何其他类型的移动、非移动、可穿戴、和不可穿戴计算设备。
计算设备100包括用户界面组件(“UIC”)102、包括资源分配模块106的操作系统104(“OS104”)、一个或多个应用108、资源成本储存库110和资源可用性储存库112。OS104和应用108可以使用驻留在计算设备100中和/或在计算设备100处执行的软件、硬件、固件或硬件、软件和固件的混合来执行本文描述的操作。计算设备100可以利用多个处理器或多个设备执行OS104和应用108,作为在底层硬件上执行的虚拟机、作为操作系统或计算平台的一个或多个服务,和/或作为在计算设备100的计算平台的应用层处的一个或多个可执行程序。
计算设备100的UIC 102可以用作计算设备100的输入和/或输出设备。UIC 102可以使用各种技术来实现。例如,UIC 102可以用作使用存在敏感输入屏幕、麦克风技术、红外传感器技术或用于接收用户输入的其他输入设备技术的输入设备。UIC 102可以用作输出设备,该输出设备被配置为使用任何一个或多个显示设备、扬声器技术、触觉反馈技术或用于向用户输出信息的其他输出设备技术来向用户呈现输出。
UIC 102可以检测来自计算设备100的用户的输入(例如,触摸和非触摸输入)。UIC102可以通过检测由用户执行的一个或多个手势(例如,用户用手指或手写笔在UIC 102的一个或多个位置处或附近触摸、指向和/或轻扫)来检测输入指示。UIC 102可以以用户界面114(“UI 114”)的形式向用户输出信息,其可以与由计算设备100提供的功能性相关联。
如图1的示例中所示,计算设备100包括OS104。OS104可以为一个或多个模块(诸如资源分配模块106)和一个或多个应用(诸如应用108)提供执行环境。OS104可以表示资源分配模块106和应用108可以与之对接以访问计算设备100的硬件的多线程操作系统或单线程操作系统。OS104可以包括便于对计算设备100的底层硬件的访问的内核,其中内核可以呈现资源分配模块106和应用108可以调用以访问计算设备100的底层硬件的多个不同接口(例如,应用编程器接口(API))。
OS104的资源分配模块106可以执行与处理对OS104执行由应用108生成的任务的请求相关联的功能。例如,资源分配模块106可以通过分配资源(诸如处理器、网络链路、扩展卡、中央处理单元(CPU)时间、电池消耗和存储器使用)来调度任务以执行任务。在一些示例中,资源分配模块106可以调度任务,使得OS104在接收到对应的请求时基本上立即执行该任务。在其他示例中,资源分配模块106可以调度任务,使得OS104在稍后的时间执行任务。换句话说,资源分配模块106可以推迟执行任务的请求。
如贯穿本公开所使用的,术语“任务”用于描述存储在计算机可读存储介质上的指令,这些指令使计算设备100的一个或多个处理器执行与应用108相关联的对应进程、线程和/或数据流。通常,任务可以是前台任务或后台任务。前台任务的执行可能需要计算设备100的用户与前台任务交互(例如,应用可能需要用户输入来请求前台任务的执行)。相反,后台任务的执行可以独立于用户(例如,应用可能不需要用户输入来请求后台任务的执行)。
应用108可以表示作为集成到OS104中的应用被开发和提供的第一方应用或者主设备100的用户经由通过OS104提供的应用商店服务获得的第三方应用。应用108可以扩展主设备100的软件功能性,其中应用108可以在由OS104呈现的执行环境内执行。作为几个示例,应用108可以提供游戏服务(例如,视频游戏)、电子邮件服务、web浏览服务、文本和/或聊天服务、web会议服务、视频会议服务、音乐服务(包括流媒体音乐服务)、视频服务(包括视频流媒体服务)、导航服务、文字处理服务、电子表格服务、幻灯片和/或演示服务、助理服务、文本输入服务、或通常由应用提供的任何其他服务。出于本公开的目的,应用108可以包括小部件。
应用108中的一个或多个可以向资源分配模块106发送用于OS 104执行任务的请求。例如,娱乐应用可以向资源分配模块106发送请求以用于OS104执行自动下载电影的后台任务。响应于接收到请求,资源分配模块106可以调度任务,并且OS104可以利用计算设备100的底层硬件以基于调度来执行任务。一般而言,硬件组件消耗资源(诸如计算设备100的电池的电量)来执行这些功能。因此,如果资源分配模块106调度并且OS104执行由应用108请求的每个任务,而不管任务的重要性如何,则计算设备100的电池的电量水平(以及计算设备的其他资源)可能快速降低。这可能不仅干扰计算设备100的使用(例如,通过迫使用户对计算设备进行再充电),并且因此不利地影响计算设备的用户体验,而且还可能增加电池的充电周期,这可能最终导致电池性能降低(例如,电池寿命减少)。
本公开的技术使得OS104能够基于在给定任务的资源成本的情况下是否存在可用于执行任务的足够资源来执行任务,而不是执行每个任务,不管任务的重要性如何。例如,如下面更详细地描述的,通过基于与执行任务相关联的资源成本是否小于或等于可用于执行任务的资源量来执行任务,OS104可以根据任务的重要性对任务的执行进行优先级排序,从而潜在地改善计算设备100的性能和/或用户体验。
尽管本公开主要描述了OS104基于与执行任务相关联的资源成本是否小于或等于可用于执行任务的资源量,确定在给定任务的资源成本的情况下是否存在可用于执行任务的足够资源,但是应当理解到,本公开预期了其他配置。例如,OS104可以基于可用于执行任务的资源量是否等于或大于与执行任务相关联的资源成本,确定在给定任务的资源成本的情况下是否存在可用于执行任务的足够资源。因此,用于确定是否存在足够资源的OS104的示例配置仅仅是出于说明的目的,而不旨在限制权利要求的范围。
如上所述,响应于接收到对OS104执行与应用108之一相关联的任务的请求,资源分配模块106可以确定与执行任务相关联的资源成本。资源成本可以基于与任务的重要性相关的各种因素,包括但不限于计算设备100的状态、任务是前台任务还是后台任务、以及任务是否响应于用户输入而发起。可以使用任何适当的单位来测量资源成本,诸如标准单位(例如,瓦特(W)、千兆字节(GB)等)以及非标准单位(例如,“通用资源单位(GRU)”)。在某种程度上,非标准单位可以表示与计算设备100相关联的一个或多个物理属性,诸如计算设备100的功率使用、数据使用等。附加地或替代地,非标准单位可以(例如,基于上述因素)表示任务的重要性。
资源分配模块106可以从资源成本储存库110获得任务的资源成本。资源成本储存库110可以包括将每个任务与指示任务的资源成本的信息相关联的数据结构。在一些示例中,资源分配模块106可以访问资源成本储存库以获得任务的资源成本。任务的资源成本的值可以基于各种因素(诸如任务是在计算设备100的前台还是后台执行、计算设备100是否正在充电等)而变化。在一些情况下,与任务相关联的资源成本可以等于由一个或多个修改器调整的基值,其中一个或多个修改器与上述相应的一个或多个因素相关联。修改器可以经由任何数学运算(包括例如乘法、除法、加法、减法等)来调整基值。因此,修改器的类型可以包括乘法器、除法器、加法器、减法器等。
与前台任务相关联的资源成本可以不同于与后台任务相关联的资源成本。例如,与前台任务相关联的资源成本可以小于与后台任务相关联的资源成本,因为通常前台任务(例如,响应于用户输入而请求的任务)可能对用户来说比后台任务(例如,响应于用户输入而未请求的任务)更重要。在一些示例中,与所有前台任务相关联的资源成本可以是0(例如,0个GRU),在这种情况下,OS104,并且更具体地资源分配模块106,可以总是确定有足够的资源可用于执行前台任务。因此,与正在前台中执行的任务相关联的修改器可以是乘数0,但是应当理解到,本公开设想了其他乘数(例如,0.1、0.5、0.8等)以及其他类型的修改器(例如,除法器、加法器、减法器等)。在一些示例中,与后台任务相比,前台任务可以具有降低的资源成本,但不具有为0的资源成本。
当计算设备100正在充电时与任务相关联的资源成本可以不同于当计算设备100不正在充电时与任务相关联的资源成本。例如,当计算设备100正在充电时与任务相关联的资源成本可以小于当计算设备100不正在充电时与任务相关联的资源成本,因为当计算设备100正在充电时,资源(诸如计算设备100的电池的电量)不再稀缺或不太稀缺。在一些示例中,当计算设备100正在充电时与任务相关联的资源成本可以是0(例如,0个GRU),在这种情况下,OS104,并且更具体地资源分配模块106,可以总是确定存在足够的资源可用于执行任务。因此,与计算设备100的充电状态相关联的修改器可以是乘数0,但是应当理解到,本公开设想了其他乘数(例如,0.1、0.5、0.8等)以及其他类型的修改器(例如,除法器、加法器、减法器等)。
资源分配模块106还可以确定(并最终分配)可用于执行任务的资源量。可用的资源量可以基于与任务的重要性有关的各种因素,包括但不限于(例如,由特定应用和/或全部)已经消耗的资源量、计算设备的状态、任务的优先级、请求任务的应用发生故障的频率(例如,任务超时、应用崩溃或其他不期望的或非预期的行为)、以及终止应用的执行的用户输入(有时称为“强制停止”)。可用的资源量可以以与资源成本相同的单位来测量。
资源分配模块106可以从资源可用性储存库112获得可用于任务的资源量。资源可用性储存库112可以包括将每个任务与指示可用于执行任务的资源量的信息相关联的数据结构。在一些示例中,资源分配模块106可以访问资源成本储存库以获得任务的资源成本。
任务的优先级可以与可用于任务的资源量正相关,使得任务越重要,可用于任务的资源量越多。例如,可用于(例如,如由历史使用率所指示的)频繁使用的应用以请求任务的资源量可以大于可用于不频繁使用的应用以请求任务的资源量,因为(例如,从计算设备100的用户的角度来看)由频繁使用的应用执行的任务可能比由不频繁使用的应用执行的任务更重要。
在另一示例中,如果所请求的任务是重要的,则与如果任务是不重要的情况相比,可用于应用以请求任务的资源量可能更大。资源分配模块106可以基于例如任务是否与闹钟、定时器、日历提醒、用户定义的设置等相关来确定任务的重要性。资源分配模块106还可以基于请求任务的应用在计算设备100的前台中操作的时间量、由用户与之交互的应用生成的通知的数量、以及与应用和/或任务的其他用户交互(诸如用户是否已经重写(override)资源分配模块106以使资源分配模块106调度任务,如下面更详细描述的)来确定任务的重要性。
资源分配模块106可以将与执行任务相关联的资源成本与可用于执行任务的资源量进行比较。响应于确定在给定任务的资源成本的情况下有足够的资源可用于执行任务,资源分配模块106可以调度要在计算设备100处执行的任务。然后,OS104可以基于调度来执行任务。
虽然被描述为响应于足够的资源可用而调度任务,但是在其他示例中,即使在没有足够的资源时,资源分配模块106也可以调度任务,但是OS104可以在有足够的资源之前不执行任务。例如,资源分配模块106可以调度任务,而不管在给定与执行任务相关联的资源成本的情况下,可用于执行任务的资源量是否足够。响应于资源分配模块106确定在给定与执行任务相关联的资源成本的情况下可用于执行任务的资源量足够,OS104可以基于调度来执行任务。
作为示例,娱乐应用可以向资源分配模块106发送请求以使OS104执行自动下载电影的后台任务。资源分配模块106可以访问存储在资源成本储存库110中的数据结构以获得指示自动下载电影的后台任务的资源成本的信息。基于该信息,资源分配模块106可以确定资源成本是50GRU。
附加地,资源分配模块106可以访问存储在资源可用性储存库112中的数据结构,以获得指示可用于自动下载电影的后台任务的资源量的信息。基于该信息,资源分配模块106可以确定可用资源量是75GRU。因此,资源分配模块106可以调度自动下载电影的后台任务,因为50GRU的资源成本小于75GRU的可用资源量。然后,OS104可以基于该调度来执行自动下载电影的后台任务。
当调度任务时,资源分配模块106可以分配与任务的资源成本相对应的计算设备100的资源,并且可以调整可用于执行未来任务的资源量。当调度任务时由资源分配模块106进行的资源分配会导致可用于执行任务的资源量的相应变化。例如,使用上述示例,响应于资源分配模块106调度自动下载电影的后台任务,可用于执行下一任务的资源量可能变为25GRU(即,75GRU减去50GRU)。
响应于确定与执行任务相关联的资源成本大于可用于执行任务的资源量,资源分配模块106可以不调度任务,并且OS104进而可以不执行任务。在其他示例中,即使当与执行任务相关联的资源成本大于可用于执行任务的资源量时,资源分配模块106也可以调度任务,但是OS104可以不执行任务,直到与执行任务相关联的资源成本等于或小于可用于执行任务的资源量为止。
在一些示例中,当由于可用资源量不足而未执行任务时,计算设备100可以经由UIC 102输出通知116。计算设备100的用户可以提供用户输入(诸如经由UIC 102的触摸输入)以解除通知116。可替代地,用户可以提供用户输入以重写资源分配模块106,使资源分配模块106调度OS104以执行任务。在一些示例中,当用户重写资源分配模块106时,资源分配模块106可以调整与执行任务相关联的资源成本,使得在给定任务的资源成本的情况下,有足够的资源可用于执行任务。例如,资源分配模块106可以响应于重写资源分配模块106的用户输入而将资源成本降低到0。结果,重写资源分配模块106可能不会减少可用于执行未来任务的资源量。在一些示例中,任务的重要性可以响应于重写资源分配模块106的用户输入而增加,这可能使资源分配模块106增加可用于应用在将来请求任务的资源量。
作为示例,来自上述示例的娱乐应用可以向资源分配模块106发送请求以使OS104执行自动下载电影的后台任务。资源分配模块106可以访问存储在资源成本储存库110中的数据结构,并且确定该任务的资源成本是50GRU。资源分配模块106可以访问存储在资源可用性储存库112中的数据结构,并且确定可用于执行该任务的资源量是25GRU。因此,资源分配模块106可以不调度自动下载电影的后台任务,因为50GRU的资源成本大于25GRU的可用资源量。附加的,计算设备100可以输出通知116,该通知116传达自动下载电影的后台任务由于可用资源量不足而未能执行。然后,计算设备100的用户可以提供用户输入以解除通知116或重写资源分配模块106,从而使资源分配模块106调度并且OS104执行后台任务。
图2是图示根据本公开的一种或多种技术的执行资源分配的计算设备100的进一步细节的概念图。下面将图2的计算设备200描述为图1所示的计算设备100的示例。图2仅图示了计算设备200的一个具体示例,并且计算设备200的许多其他示例可以在其他实例中使用,并且可以包括在示例计算设备200中包括的组件的子集,或者可以包括图2中未示出的附加组件。
如图2的示例中所示,计算设备200包括UIC 202、一个或多个处理器240、一个或多个输入组件242、一个或多个输出组件244、一个或多个通信单元246、一个或多个储能设备248(例如,电池)、以及一个或多个存储组件250。计算设备200的存储组件250包括OS204、资源分配模块206、应用208、资源成本储存库210、资源可用性储存库212和UI模块218。资源分配模块206包括请求管理模块220、调度器模块222和设备状态模块224。
通信信道252可以互连组件240、202、242、244、246、248和/或250中的每一个以用于(物理地、通信地和/或可操作地)组件间通信。在一些示例中,通信信道252可以包括系统总线、网络连接、进程间通信数据结构、或用于传送数据的任何其他方法。
计算设备200的一个或多个输入组件242可以接收输入。输入的示例是触觉、音频和视频输入。在一个示例中,计算设备200的输入组件242包括存在敏感显示器、触敏屏幕、鼠标、键盘、语音响应系统、摄像机、麦克风、或用于检测来自人或机器的输入的任何其他类型的设备。
计算设备200的一个或多个输出组件244可以生成输出。输出的示例是触觉、音频和视频输出。在一个示例中,计算设备200的输出组件244包括存在敏感显示器、声卡、视频图形适配器卡、扬声器、阴极射线管(CRT)监视器、液晶显示器(LCD)、触觉电机、线性致动设备、或用于向人或机器生成输出的任何其他类型的设备。
计算设备200的一个或多个通信单元246可以通过在一个或多个网络上传输和/或接收网络信号来经由一个或多个有线和/或无线网络与外部设备通信。通信单元246的示例包括网络接口卡(例如,以太网卡)、光收发器、射频收发器、GPS接收器、或能够发送和/或接收信息的任何其他类型的设备。通信单元246的其他示例可以包括短波无线电、蜂窝数据无线电、无线网络无线电、以及通用串行总线(USB)控制器。
计算设备200的UIC 102可以是用作计算设备200的输入和/或输出设备的硬件。例如,UIC 202可以包括可以是由UIC 202在其处显示信息的屏幕的显示组件,以及可以检测在显示组件处和/或附近的对象的存在敏感输入组件。
一个或多个处理器240可以在计算设备200内实现功能性和/或执行指令。例如,计算设备200上的处理器240可以接收和执行由执行模块206、218、220、222和224以及应用208的功能性的存储组件250存储的指令。由处理器240执行的指令可以使计算设备200在程序执行期间将信息存储在存储组件250内。处理器240的示例包括应用处理器、显示控制器、传感器集线器、以及被配置为用作处理单元的任何其他硬件。处理器240可以执行模块206、218、220、222和224以及应用208的指令以执行计算设备200的各种动作或功能。
计算设备200内的一个或多个存储组件250可以存储用于在计算设备200的操作期间进行处理的信息(例如,计算设备200可以存储在计算设备200处执行期间由模块206、218、220、222和224以及应用208访问的数据)。在一些示例中,存储组件250可以被配置用于临时存储器,这意味着存储组件250的主要目的不是长期存储。计算设备200上的存储组件250可以作为易失性存储器被配置用于信息的短期存储,并且因此如果断电则不保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、和本领域已知的其他形式的易失性存储器。
在一些示例中,存储组件250还包括一个或多个计算机可读存储介质。存储组件250可以被配置为存储比易失性存储器更大量的信息。存储组件250还可以被配置作为非易失性存储器空间用于信息的长期存储,并且在通电/断电周期之后保留信息。非易失性存储器的示例包括磁性硬盘、光盘、闪存、或电可编程存储器(EPROM)或电可擦除可编程(EEPROM)存储器的形式。存储组件250可以存储与模块206、218、220、222和224以及应用208相关联的程序指令和/或信息(例如,数据)。资源分配模块206和应用208可以在处理器240处执行以执行与图1的资源分配模块106和应用108的功能类似的功能。
请求管理模块220可以执行与接收、管理和以其他方式处理对OS 104执行由应用108生成的任务的请求相关联的功能。例如,请求管理模块220可以从应用208接收对OS204输出通知、监视通信消息(例如,电子邮件、即时消息、文本消息等)的接收、从远程服务器请求信息、上传分析、下载内容、执行与媒体回放(例如,音乐回放、视频回放等)相关的操作、生成日历事件(会议、约会等)的提醒(例如,警报)、更新软件、实现在计算设备200处执行的平台、应用和/或服务的两个或更多个组件之间的组件间通信等的请求。
调度器模块222可以通过分配诸如处理器、网络链路和扩展卡的资源来调度任务以执行任务。调度器模块222可以是OS204的一部分,并且可以决定在某个时间点执行哪个任务。例如,调度器模块222可以具有开始执行任务、停止执行任务以及移动任务队列中任务的位置的能力。因此,调度器模块222可以允许、存储、推迟、拒绝和以其他方式处理来自应用对OS204执行任务的请求,以便分配计算设备200的资源。调度器模块222可以根据本公开的技术采用调度算法,用于在同时或异步请求资源的任务之间分配计算设备200的资源。
设备状态模块224可以确定计算设备200的状态,诸如功率状态、充电状态(即,计算设备200是否正在充电)、电量状态(即,储能设备248的电量水平)等。计算设备200的示例功率状态包括全功率状态、低功率状态等。全功率状态可以是计算设备200的最高性能、最多功能的状态,并且因此具有最大的功耗。低功率状态可以是性能相对较低、功能更少的状态,并且因此具有更少的功耗。示例低功率状态包括节电状态(有时称为低功率模式)、待机状态、睡眠状态、关闭状态等。
OS204的资源分配模块206可以基于在给定任务的资源成本的情况下是否有足够的资源可用于执行任务来执行任务。例如,请求管理模块220可以接收对OS204执行与应用208之一相关联的任务的请求。响应于请求管理模块220接收到请求,调度器模块222可以通过从资源成本储存库210获得任务的资源成本以及从资源可用性储存库212获得可用于任务的资源量来确定与执行任务相关联的资源成本。响应于确定与执行任务相关联的资源成本小于或等于可用于执行任务的资源量,调度器模块222可以调度要在计算设备200处执行的任务。然后,OS204可以基于调度来执行任务。
在一些示例中,调度器模块222可以基于可用于与任务相关联的应用的相应资源量和由应用先前使用的资源量来确定可用于执行任务的资源量。例如,调度器模块222可以确定可用于执行任务的总资源量,并且基于总资源量进一步确定可用于应用208中的每个应用的相应初始资源量。
作为示例,调度器模块222可以确定可用于在计算设备处执行任务的总资源量是300GRU。调度器模块222可以将总共300GRU的一部分分配给应用208中的每个应用,使得所分配的GRU的总和小于或等于300GRU,以这种方式确立可用于应用208中的每个应用的初始资源量。例如,第一应用、第二应用和第三应用可以各自被分配100GRU。应当理解,300GRU的初始资源量和/或对应用208中的每一个应用的资源的分配是任意的,并且本公开设想其他初始资源量和/或资源的其他分配。
第一应用可以请求OS以50GRU的资源成本执行任务,第二应用可以请求以75GRU的资源成本执行任务,而第三应用可以请求以100GRU的资源成本执行任务。调度器模块222可以针对对应的应用调度这些任务,从而导致可用于每个应用执行任务的资源量的对应变化。也就是说,在该示例中,可用于第一应用的资源量现在可能是50GRU,因为第一应用先前使用了100GRU的初始量中的50GRU,可用于第二应用的资源量现在可能是25GRU,因为第二应用先前使用了100GRU的初始量中的75GRU,而可用于第三应用的资源量现在可能是0GRU,因为第三应用先前使用了100GRU的初始量中的100GRU。
当应用消耗资源以执行任务时,调度器模块222可以记录所消耗的资源量并且基于所消耗的资源量来重新分配资源。例如,在第一应用、第二应用和第三应用使用总共225GRU的上述示例中,调度器模块222可以记录总共225GRU已经被消耗并且需要重新分配。调度器模块222然后可以将225GRU的一部分分配给应用208中的每个应用,使得所分配的GRU的总和小于或等于225GRU。
在一些示例中,调度器模块222可以基于计算设备200的储能设备248的容量或储能设备248的电量水平中的一个或多个来确定可用于执行任务的总资源量。在这样的示例中,确定与执行任务相关联的资源成本可以至少部分地基于执行任务所需的能量的量。
作为示例,如果储能设备248的容量是2500毫安小时(mAH)并且电量水平是100%,则调度器模块222可以确定可用于执行任务的总资源量是500GRU。在另一示例中,如果储能设备248的容量是5000mAH并且电量水平是100%,则调度器模块222可以确定可用于执行任务的总资源量是1000GRU。在又一示例中,如果储能设备248的容量是2000mAH并且电量水平是50%,则调度器模块222可以确定可用于执行任务的总资源量是100GRU。在又一示例中,如果储能设备248的容量是2000mAH并且电量水平是100%,则调度器模块222可以确定可用于执行任务的总资源量是200GRU。
随着储能设备248的电量水平降低,调度器模块222可以调整可用于应用208中的每个应用的资源量以防止储能设备248的过早耗尽。在一些示例中,调度器模块222可以使用与储能设备248的当前电量水平相关联的修改器来调整可用的基本资源量(例如,当储能设备248已经被充满电时,可用于应用208中的每个应用的初始资源量)。例如,如果储能设备248的电量水平从100%降低到75%,则调度器模块222可以将可用于应用208中的每个应用的基本GRU量乘以75%的当前电量水平,以这种方式潜在地减少调度器模块222可以根据本公开的技术调度的任务的数量。
在一些示例中,调度器模块222可以基于安装在计算设备200处的应用208的数量来确定可用于执行任务的总资源量。例如,如果在计算设备200处安装了3个应用,则调度器模块222可以确定可用于执行任务的总资源量是300GRU。在另一示例中,如果在计算设备200处安装了6个应用,则调度器模块222可以确定可用于执行任务的总资源量是600GRU。应当理解,可用的总资源量与安装在计算设备200处的应用208的数量之间的关系可以是除了由本公开设想的线性关系之外的关系。例如,关系可以是指数的。
由于可用于执行任务的总资源量可能是固定的,如果调度器模块222将太多资源分配给一组应用208,则调度器模块222可能无法将资源分配给不属于该组的应用以使那些应用请求执行任务。为了解决这种情况,应用208中的每个应用可以具有可用资源的相应最大限制,使得调度器模块222不能将应用可用的资源量增加到超过相应最大限制。附加地或替代地,调度器模块222可以周期性地将可用于应用208中的每个应用的资源量减少相应量,以这种方式“消耗”资源,并且根据本公开的技术来重新分配所消耗的资源。作为示例,调度器模块222可以每天消耗可用于每个应用的GRU的一部分(例如,50%),该GRU高于可用资源的相应初始量。
当计算设备200(并且更具体地,储能设备248)正在充电时,调度器模块222可以增加可用于应用208中的每个应用的资源量。在一些示例中,当计算设备200正在充电时,调度器模块222可以以相应的速率增加可用于相应应用的资源量。例如,如果第一应用是不频繁使用的,第二应用是稍微频繁使用的,并且第三应用是频繁使用的,则调度器模块222可以在计算设备200正在充电时向第一应用分配10GRU/小时(hr),在计算设备200正在充电时向第二应用分配50GRU/hr,并且在计算设备200正在充电时向第三应用分配100GRU/hr。
在一些示例中,响应于设备状态模块224确定计算设备200正在充电,调度器模块222可以将可用于来自应用208的每个应用的相应当前资源量重置为可用于应用208中的每个应用的相应初始资源量。例如,当储能设备248已经被充满电时,调度器模块222可以将可用的相应当前资源量重置为可用的相应初始资源量。调度器模块222可以以相应的速率逐渐增加到相应应用的资源,直到相应当前资源量已经被重置到可用的相应初始资源量为止。在一些情况下,调度器模块222甚至可以(例如,基于由历史使用率指示的任务的优先级、任务的重要性等)将可用的相应当前资源量增加到高于可用的相应初始资源量。
图3A和3B是图示根据本公开的技术的资源成本储存库310和资源可用性储存库312的概念图。下面将图3A的资源成本储存库310描述为图2所示的资源成本储存库210的示例。类似地,下面将图3B的资源可用性储存库312描述为图2所示的资源可用性储存库212的示例。
如图3A和3B所示,资源成本储存库310和资源可用性储存库312分别包括按应用数据结构的资源成本(“RCA数据结构”)和按应用数据结构的资源可用性(“RAA数据结构”)。RCA数据结构可以将每个任务与指示任务的资源成本的信息相关联。例如,RCA数据结构可以将第一任务与第一资源成本相关联、将第二任务与第二资源成本相关联等等。RAA数据结构可以将每个任务与指示每个应用可用于执行任务的资源量的信息相关联。例如,RAA数据结构可以将第一应用与可用的第一资源量相关联、将第二应用与可用的第二资源量相关联等等。
资源分配模块(诸如资源分配模块206)可以基于来自RCA数据结构和RAA数据结构的信息来分配资源。例如,调度器模块222可以基于来自RCA数据结构的信息来确定资源成本,并且基于来自RAA数据结构的信息来确定可用的资源量。来自RCA数据结构的信息的至少一部分可以涉及影响资源成本的因素,包括但不限于计算设备的状态、任务是前台任务还是后台任务、以及任务是否响应于用户输入而发起。例如,来自RCA数据结构的信息的一部分可以包括与调度器模块222可以用来调整与任务相关联的资源成本的基值的各种因素相关联的修改器。作为示例,与精确警报(例如,在特定时间或响应于特定条件触发的警报)相关联的修改器可以是1.1的乘数,这可以导致调度器模块222将与任务相关联的资源成本增加10%。在另一示例中,与不精确警报(例如,在某种程度上可以延迟触发以增加当资源不太稀缺时(诸如当计算设备200正在充电时、当可用时等)触发的可能性的警报)相关联的修改器可以是0.9的修改器,这可以导致调度器模块222将与任务相关联的资源成本降低10%。
类似地,来自RAA数据结构的信息的至少一部分可以涉及影响资源可用性的因素,包括但不限于计算设备的状态、任务的优先级、请求任务的应用发生故障(例如,任务超时、应用崩溃、或其他不期望的或非预期的行为)的频率、以及终止应用的执行的用户输入。例如,来自RAA数据结构的信息的一部分可以包括与各种因素相关联的修改器,调度器模块222可以使用这些修改器来调整可用于任务的资源量的基值和/或调度器模块222将资源分配给请求任务的应用的速率。作为示例,与高频率的任务超时相关联的修改器可以是0.5的乘数,这可以导致调度器模块222将可用于任务的资源量减少50%,或者将调度器模块222把资源分配给请求任务的应用的速率减少50%。
调度器模块可以基于计算设备的状态来确定资源成本。例如,调度器模块222可以确定:如果计算设备200正在充电,则与任务相关联的资源成本是第一量,如果计算设备200不正在充电,则与任务相关联的资源成本是第二量,并且如果计算设备200是节电的,则与任务相关联的资源成本是第三量。第一量可以不同于第二量和第三量。例如,第一量可以小于第二量和第三量。在又一示例中,第一量可以小于第二量,而第二量可以小于第三量。
例如,如果设备状态模块224确定计算设备200正在充电,则调度器模块222可以确定与由应用请求的任务相关联的资源成本是0GRU。在另一示例中,如果设备状态模块224确定计算设备200不在充电,则调度器模块222可以确定与任务相关联的资源成本是100GRU。在又一示例中,如果设备状态模块224确定计算设备200是节电的,则调度器模块222可以确定与任务相关联的资源成本是150GRU。
附加地或替代地,调度器模块可以基于任务是前台任务还是后台任务来确定资源成本。例如,如果任务是前台任务,则调度器模块可以确定与任务相关联的资源成本是第一量,如果任务是后台任务,则调度器模块可以确定与任务相关联的资源成本是第二量。第一量可以不同于第二量。例如,第一量可以小于第二量。
作为示例,如果由应用请求的任务是前台任务,则调度器模块222可以确定与任务相关联的资源成本是10GRU。如果任务代替的是后台任务,则调度器模块222可以确定与任务相关联的资源成本是20GRU。在该示例中,任务的基值可以是15,并且在前台中执行的任务的修改器可以是大约0.67的乘数,而在后台中执行的任务的修改器可以是大约1.33的乘数。
在一些示例中,调度器模块可以基于任务是否响应于用户输入而发起来确定资源成本。例如,如果任务是响应于用户输入而发起的,则调度器模块可以确定与任务相关联的资源成本是第一量,如果任务不是响应于用户输入而发起的,则调度器模块可以确定与任务相关联的资源成本是第二量。第一量可以不同于第二量。例如,第一量可以小于第二量。
例如,如果响应于用户输入而发起由应用请求的任务,则调度器222可以确定与任务相关联的资源成本是0GRU。然而,如果任务不是响应于用户输入而发起的,则调度器222可以确定与任务相关联的资源成本是75GRU。
调度器模块可以基于任务的优先级来确定可用于执行任务的资源量,任务的优先级指示应用的历史使用率(例如,计算设备200的用户与应用交互的频率)或任务的重要性(例如,警报、日历提醒等)中的一个或多个。例如,如果第一应用具有相对高的历史使用率和/或重要性,则第一应用可以具有可用于执行任务的相对大的初始资源量,和/或调度器模块222可以相对快速地增加可用于执行任务的资源量(例如,当计算设备正在充电时)。另一方面,如果第二应用具有相对低的历史使用率和/或重要性,则第二应用可以具有可用于执行任务的相对小的初始资源量,和/或调度器模块222可以相对缓慢地增加可用于执行任务的资源量。
在一些示例中,调度器模块可以至少部分地基于以下中的一个或多个来确定可用于执行任务的资源量:请求任务的应用发生故障的频率(例如,任务超时、应用崩溃、或其他不期望的或非预期的行为),或终止应用的执行的用户输入。例如,如果任务超时的频率低,则可用于执行任务的资源量可能相对较大。然而,如果任务超时的频率高,则可用于执行任务的资源量可能相对较小。在用户提供终止应用的执行的用户输入(其可以指示用户不期望应用消耗计算设备200的资源)的示例中,调度器模块222可以不向应用分配更多资源,直到用户再次初始化或以其他方式与应用交互为止。
图4是图示根据本公开的技术的计算设备的示例操作的流程图。尽管主要参考图1的计算设备100进行了描述,但是应当理解到,图4所示的技术可以由本文公开的任何计算设备应用。在图4的示例中,资源分配模块106可以接收对OS104执行任务的请求(400)。例如,娱乐应用可以向资源分配模块106发送请求以使OS104执行自动下载电影的后台任务。
响应于接收到对OS104执行与应用108之一相关联的任务的请求,资源分配模块106可以确定与执行任务相关联的资源成本和可用于执行任务的资源量(402)。资源分配模块106可以从资源成本储存库110获得任务的资源成本。资源分配模块106可以从资源可用性储存库112获得可用于任务的资源量。
资源分配模块106可以将与执行任务相关联的资源成本与可用于执行任务的资源量进行比较(404)。资源分配模块106可以调度要在计算设备100处执行的任务(406)。OS104可以根据本公开的技术基于调度来执行任务(408)。
在一些示例中,资源分配模块106可以响应于确定在给定与执行任务相关联的资源成本的情况下可用于执行任务的资源量是足够的而调度要在计算设备100处执行的任务。在资源分配模块106确定可用的资源量不足的情况下,资源分配模块106可以不调度任务,并且进而OS104可以不执行任务。在一些示例中,当由于可用的资源量不足而未调度(并且未执行)任务时,计算设备100可以经由UIC 102输出通知116。
例如,娱乐应用可以向资源分配模块106发送请求以供OS104执行自动下载电影的后台任务。资源分配模块106可以访问存储在资源成本储存库110中的数据结构并且确定资源成本是50GRU。资源分配模块106可以访问存储在资源可用性储存库112中的数据结构并且确定可用于执行该任务的资源量是25GRU。因此,资源分配模块106可以不调度自动下载电影的后台任务,因为50GRU的资源成本大于25GRU的可用的资源量。附加地,计算设备100可以输出通知116,该通知116传达自动下载电影的后台任务由于可用的资源量不足而未能调度和执行。
在其他示例中,资源分配模块106可以调度要在计算设备100处执行的任务,而不管可用于执行任务的资源量是否足够。然而,OS104可以仅响应于资源分配模块106确定在给定与执行任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,才基于调度来执行任务。当由于可用的资源量不足而未执行任务时,计算设备100可以经由UIC 102输出通知116。
在资源分配模块106拒绝(或者在一些示例中,推迟)应用对OS 104执行任务的请求之后,应用可以向资源分配模块106发送后续请求。在一些示例中,在应用发送后续请求之前,资源分配模块106可以增加可用于应用108中的每个应用的资源量。例如,响应于资源分配模块106确定计算设备100正在充电并且在应用发送后续请求之前,资源分配模块106可以以相应的速率增加可用于应用108中的每个应用的资源量,直到可用于应用的资源量等于或大于与由应用请求的任务相关联的资源成本(即,资源成本小于或等于可用的资源量)。因此,如果应用发送后续请求,则资源分配模块106可以调度任务,并且OS 104可以执行任务。
例如,继续资源分配模块106因为50GRU的资源成本大于25GRU的可用的资源量而拒绝调度自动下载电影的后台任务的上述示例,OS104可以确定计算设备100正在充电。响应于该确定,资源分配模块106可以增加可用于娱乐应用的资源量。在一些示例中,资源分配模块106可以将25GRU的可用的当前资源量重置为初始资源量,该初始资源量可以是100GRU。因此,如果娱乐应用向资源分配模块106发送用于自动下载电影的后续请求,则资源分配模块106可以调度任务并且OS104可以执行任务。
在一些示例中,资源分配模块106可以调度任务,但是推迟执行,直到有足够的资源可用为止。在这样的示例中,资源分配模块106可以存储请求,并且当与任务相关联的资源成本小于或等于可用于应用的资源量时,通过分配用于执行任务的资源量来响应该请求。例如,响应于资源分配模块106确定计算设备100正在充电,资源分配模块106可以以相应的速率增加可用于应用108中的每个应用的资源量,使得可用于应用的资源量最终等于或大于与由应用请求的被推迟任务相关联的资源成本(即,资源成本小于或等于可用的资源量)。响应于与被推迟任务相关联的资源成本小于或等于可用于应用的资源量,OS 104可以基于调度来执行被推迟任务。
本公开包括以下示例。
示例1:一种方法,包括:由在计算设备处执行的操作系统接收对操作系统执行与安装在计算设备处的应用相关联的任务的请求;由操作系统确定与执行任务相关联的资源成本;由操作系统并且基于应用来确定可用于执行任务的资源量;由操作系统调度要在计算设备处执行的任务;以及响应于确定在给定与执行任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,由操作系统并且基于调度来执行任务。
示例2:如示例1所述的方法,其中,调度要在计算设备处执行的任务是响应于确定在给定与执行任务相关联的资源成本的情况下可用于执行任务的资源量是足够的。
示例3:如示例1和2中任一项所述的方法,进一步包括:由操作系统确定可用于执行任务的总资源量;以及由操作系统并且基于总资源量,确定可用于来自安装在计算设备处的多个应用中的每个应用的相应初始资源量,其中,确定可用于执行任务的资源量是基于可用于与任务相关联的应用的相应资源量和由应用先前使用的资源量。
示例4:如示例3所述的方法,进一步包括:由操作系统确定计算设备正在充电;以及响应于确定计算设备正在充电,由操作系统将可用于来自多个应用中的每个应用的相应当前资源量重置为可用于来自多个应用中的每个应用的相应初始资源量。
示例5:如示例3和4中任一项所述的方法,其中,确定可用于执行任务的总资源量是基于计算设备的电池的容量和计算设备的电池的电量水平中的一个或多个,以及其中,确定与执行任务相关联的资源成本至少部分地基于执行任务所需的能量的量。
示例6:如示例1至5中任一项所述的方法,其中,确定可用于执行任务的资源量是基于任务的优先级,任务的优先级指示应用的历史使用率或任务的重要性中的一个或多个。
示例7:如示例1至6中任一项所述的方法,其中,确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的包括:确定与执行任务相关联的资源成本小于或等于可用于执行任务的资源量。
示例8:如示例1至7中任一项所述的方法,其中,确定与任务相关联的资源成本包括:由操作系统确定计算设备的状态;响应于确定计算设备的状态是正在充电,由操作系统确定与任务相关联的资源成本是第一量;响应于确定计算设备不在充电,由操作系统确定与任务相关联的资源成本是第二量;以及响应于确定计算设备是节电的,由操作系统确定与任务相关联的资源成本是第三量,其中,第一量不同于第二量和第三量。
示例9:如示例1至8中任一项所述的方法,其中,确定与任务相关联的资源成本包括:由操作系统确定任务是前台任务还是后台任务;响应于确定任务是前台任务,由操作系统确定与任务相关联的资源成本是第一量;以及响应于确定任务是后台任务,由操作系统确定与任务相关联的资源成本是第二量,其中,第一量不同于第二量。
示例10:如示例1至9中任一项所述的方法,其中,确定与执行任务相关联的资源成本进一步包括:由操作系统确定任务是否是响应于用户输入而发起的;响应于确定任务是响应于用户输入而发起的,由操作系统确定与任务相关联的资源成本是第一量;以及响应于确定任务不是响应于用户输入而发起的,由操作系统确定与任务相关联的资源成本是第二量,其中,第一量不同于第二量。
示例11:如示例1至10中任一项所述的方法,其中,确定可用于执行任务的资源量至少部分地基于应用发生故障的频率或终止应用的执行的用户输入中的一个或多个。
示例12:一种计算设备,包括一个或多个处理器;存储器,所述存储器存储操作系统和指令,所述指令在由一个或多个处理器执行时使一个或多个处理器:接收对操作系统执行与安装在计算设备处的应用相关联的任务的请求;确定与执行任务相关联的资源成本;基于应用来确定可用于执行任务的资源量;调度要在计算设备处执行的任务;以及响应于确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,基于调度来执行任务。
示例13:如示例12所述的计算设备,其中,指令使一个或多个处理器:响应于确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,调度任务以在计算设备处执行。
示例14:如示例12和13中任一项所述的计算设备,其中,指令在由一个或多个处理器执行时进一步使一个或多个处理器:确定可用于执行任务的总资源量;以及基于总资源量,确定可用于来自安装在计算设备处的多个应用中的每个应用的相应初始资源量,其中,指令使一个或多个处理器基于可用于与任务相关联的应用的相应资源量和由应用先前使用的资源量来确定可用于执行任务的资源量。
示例15:如示例14所述的计算设备,其中,指令在由一个或多个处理器执行时进一步使所述一个或多个处理器:确定计算设备正在充电;以及响应于确定计算设备正在充电,将可用于多个应用中的每个应用的相应当前资源量重置为可用于多个应用中的每个应用的相应初始资源量。
示例16:如示例14和15中任一项所述的计算设备,其中,指令使所述一个或多个处理器基于计算设备的电池的容量和计算设备的电池的电量水平中的一个或多个来确定可用于执行任务的总资源量,并且其中,指令使一个或多个处理器至少部分地基于执行任务所需的能量的量来确定与执行任务相关联的资源成本。
示例17:如示例12至16中任一项所述的计算设备,其中,指令使一个或多个处理器基于任务的优先级来确定可用于执行任务的资源量,任务的优先级指示应用的历史使用率或任务的重要性中的一个或多个。
示例18:如示例12至17中的任一项所述的计算设备,其中,指令在由一个或多个处理器执行时进一步使一个或多个处理器:由操作系统确定计算设备的状态;响应于确定计算设备的状态是正在充电,确定与任务相关联的资源成本是第一量;响应于确定计算设备不在充电,确定与任务相关联的资源成本是第二量;以及响应于确定计算设备是节电的,确定与任务相关联的资源成本是第三量,其中,第一量不同于第二量和第三量。
示例19:一种编码有指令的非暂时性计算机可读存储介质,指令在由计算设备的一个或多个处理器执行时使一个或多个处理器:接收对计算设备的操作系统执行与安装在计算设备处的应用相关联的任务的请求;确定与执行任务相关联的资源成本;基于应用来确定可用于执行任务的资源量;调度任务以在计算设备处执行;以及响应于确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,基于调度来执行任务。
示例20:如示例19所述的非暂时性计算机可读存储介质,其中,指令使所述一个或多个处理器:响应于确定在给定与任务相关联的资源成本的情况下可用于执行任务的资源量是足够的,调度任务以在计算设备处执行。
示例21:一种计算设备,包括用于执行示例1至11所述的方法的任意组合的装置。
示例22:一种编码有指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时使一个或多个处理器执行示例1至11所述的方法的任意组合。
作为实例而非限制,此类计算机可读存储介质能够包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置、或其它磁性存储装置、闪存、或能够用于存储以指令或数据结构形式的所需程序代码并且能够由计算机访问的任何其它存储介质。此外,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或无线技术(诸如红外线、无线电及微波)从网站、服务器或其它远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外线、无线电及微波)被包括在介质的定义中。然而,应当理解到,计算机可读存储介质及多种介质及数据存储介质不包括连接、载波、信号或其它暂时性介质,而是实际上针对非暂时性有形存储介质。如本文中所使用,磁盘及光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字通用光盘(DVD)、软盘及蓝光光盘,其中,磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述的组合也应当被包括在计算机可读介质的范围内。
指令可以由一个或多个处理器(诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路)执行。因此,如本文中所使用的术语“处理器”可以指前述结构或适合于实施本文中所描述的技术的任何其它结构中的任何一个。另外,在一些方面,本文描述的功能性可以在专用硬件和/或软件模块内提供。而且,技术能够完全以一个或多个电路或逻辑元件实现。
本公开的技术可以在多种设备或装置(包括无线手持机、集成电路(IC)或IC组(例如,芯片组))中实现。在本公开中描述各种组件、模块或单元是为了强调被配置为执行所公开的技术的设备的功能方面,但未必需要由不同硬件单元实现。相反,如上所述,各种单元可以组合在硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合适当的软件和/或固件来提供。
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
Claims (13)
1.一种方法,包括:
由在计算设备处执行的操作系统接收对所述操作系统执行与安装在所述计算设备处的应用相关联的任务的请求;
由所述操作系统确定与执行所述任务相关联的资源成本;
由所述操作系统并且基于所述应用来确定可用于执行所述任务的资源量;
由所述操作系统调度要在所述计算设备处执行的所述任务;以及
响应于确定在给定与执行所述任务相关联的所述资源成本的情况下可用于执行所述任务的所述资源量是足够的,由所述操作系统并且基于所述调度来执行所述任务。
2.根据权利要求1所述的方法,其中,调度要在所述计算设备处执行的所述任务是响应于确定在给定与执行所述任务相关联的所述资源成本的情况下可用于执行所述任务的所述资源量是足够的。
3.根据权利要求1或2所述的方法,进一步包括:
由所述操作系统确定可用于执行任务的总资源量;以及
由所述操作系统并且基于所述总资源量,确定可用于来自安装在所述计算设备处的多个应用中的每个应用的相应初始资源量,
其中,确定可用于执行所述任务的所述资源量是基于可用于与所述任务相关联的所述应用的相应资源量和由所述应用先前使用的资源量。
4.根据权利要求3所述的方法,进一步包括:
由所述操作系统确定所述计算设备正在充电;以及
响应于确定所述计算设备正在充电,由所述操作系统将可用于来自所述多个应用中的每个应用的相应当前资源量重置为可用于来自所述多个应用中的每个应用的所述相应初始资源量。
5.根据权利要求3或4所述的方法,
其中,确定可用于执行任务的所述总资源量是基于所述计算设备的电池的容量和所述计算设备的所述电池的电量水平中的一个或多个,以及
其中,确定与执行所述任务相关联的所述资源成本至少部分地基于执行所述任务所需的能量的量。
6.根据权利要求1至5中任一项所述的方法,其中,确定可用于执行所述任务的所述资源量是基于所述任务的优先级,所述任务的所述优先级指示所述应用的历史使用率或所述任务的重要性中的一个或多个。
7.根据权利要求1至6中任一项所述的方法,其中,确定在给定与所述任务相关联的所述资源成本的情况下可用于执行所述任务的所述资源量是足够的包括:确定与执行所述任务相关联的所述资源成本小于或等于可用于执行所述任务的所述资源量。
8.根据权利要求1至7中任一项所述的方法,其中,确定与所述任务相关联的所述资源成本包括:
由所述操作系统确定所述计算设备的状态;
响应于确定所述计算设备的所述状态是正在充电,由所述操作系统确定与所述任务相关联的所述资源成本是第一量;
响应于确定所述计算设备不在充电,由所述操作系统确定与所述任务相关联的所述资源成本是第二量;以及
响应于确定所述计算设备是节电的,由所述操作系统确定与所述任务相关联的所述资源成本是第三量,其中,所述第一量不同于所述第二量和所述第三量。
9.根据权利要求1至8中任一项所述的方法,其中,确定与所述任务相关联的所述资源成本包括:
由所述操作系统确定所述任务是前台任务还是后台任务;
响应于确定所述任务是所述前台任务,由所述操作系统确定与所述任务相关联的所述资源成本是第一量;以及
响应于确定所述任务是所述后台任务,由所述操作系统确定与所述任务相关联的所述资源成本是第二量,其中,所述第一量不同于所述第二量。
10.根据权利要求1至9中任一项所述的方法,其中,确定与执行所述任务相关联的所述资源成本进一步包括:
由所述操作系统确定所述任务是否是响应于用户输入而发起的;
响应于确定所述任务是响应于所述用户输入而发起的,由所述操作系统确定与所述任务相关联的所述资源成本是第一量;以及
响应于确定所述任务不是响应于所述用户输入而发起的,由所述操作系统确定与所述任务相关联的所述资源成本是第二量,其中,所述第一量不同于所述第二量。
11.根据权利要求1至10中任一项所述的方法,其中,确定可用于执行所述任务的所述资源量至少部分地基于所述应用发生故障的频率或终止所述应用的执行的用户输入中的一个或多个。
12.一种计算设备,包括用于执行根据示例1至11所述的方法的任意组合的装置。
13.一种编码有指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行根据示例1至11所述的方法的任意组合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/448,737 | 2021-09-24 | ||
US17/448,737 US20230100163A1 (en) | 2021-09-24 | 2021-09-24 | Allocating computing device resources |
PCT/US2022/075578 WO2023049609A1 (en) | 2021-09-24 | 2022-08-29 | Allocating computing device resources |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117999543A true CN117999543A (zh) | 2024-05-07 |
Family
ID=83457050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280064659.6A Pending CN117999543A (zh) | 2021-09-24 | 2022-08-29 | 分配计算设备资源 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230100163A1 (zh) |
CN (1) | CN117999543A (zh) |
WO (1) | WO2023049609A1 (zh) |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125701A1 (en) * | 2003-12-03 | 2005-06-09 | International Business Machines Corporation | Method and system for energy management via energy-aware process scheduling |
US20110154353A1 (en) * | 2009-12-22 | 2011-06-23 | Bmc Software, Inc. | Demand-Driven Workload Scheduling Optimization on Shared Computing Resources |
US10552774B2 (en) * | 2013-02-11 | 2020-02-04 | Amazon Technologies, Inc. | Cost-minimizing task scheduler |
US10360064B1 (en) * | 2013-08-19 | 2019-07-23 | Amazon Technologies, Inc. | Task scheduling, execution and monitoring |
US9444695B2 (en) * | 2014-01-30 | 2016-09-13 | Xerox Corporation | Methods and systems for scheduling a task |
US9678797B2 (en) * | 2014-03-10 | 2017-06-13 | Microsoft Technology Licensing, Llc | Dynamic resource management for multi-process applications |
GB2525917B (en) * | 2014-05-09 | 2021-08-11 | Arm Ip Ltd | Energy-based scheduling of operations to be executed by a data processing apparatus |
US9471383B2 (en) * | 2014-07-11 | 2016-10-18 | Tata Consultancy Services Limited | Task allocation in a computing environment |
US10833940B2 (en) * | 2015-03-09 | 2020-11-10 | Vapor IO Inc. | Autonomous distributed workload and infrastructure scheduling |
US9524193B1 (en) * | 2015-09-09 | 2016-12-20 | Ca, Inc. | Transparent virtualized operating system |
CN110941320A (zh) * | 2018-09-25 | 2020-03-31 | 华为技术有限公司 | 一种基于用户习惯的电量控制方法及终端 |
US10956211B2 (en) * | 2019-02-25 | 2021-03-23 | GM Global Technology Operations LLC | Method and apparatus of allocating automotive computing tasks to networked devices with heterogeneous capabilities |
US20220083383A1 (en) * | 2021-01-08 | 2022-03-17 | Intel Corporation | Computing system resource usage accounting and usage limit enforcement |
-
2021
- 2021-09-24 US US17/448,737 patent/US20230100163A1/en active Pending
-
2022
- 2022-08-29 WO PCT/US2022/075578 patent/WO2023049609A1/en active Application Filing
- 2022-08-29 CN CN202280064659.6A patent/CN117999543A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230100163A1 (en) | 2023-03-30 |
WO2023049609A1 (en) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113110941B (zh) | 使用应用容器管理代码和依赖性数据的传递 | |
US10496235B2 (en) | Power efficient application notification system | |
EP2893444B1 (en) | Quota-based resource management | |
WO2018082570A1 (zh) | I/o请求的调度方法及装置 | |
US9489236B2 (en) | Application prioritization | |
US20210389973A1 (en) | Electronic device and method for operating the same | |
US9760413B2 (en) | Power efficient brokered communication supporting notification blocking | |
US20140289411A1 (en) | Decentralized operating system | |
US10536322B2 (en) | Resource management for services | |
CN110300328B (zh) | 一种视频播放控制方法、装置及可读存储介质 | |
WO2018036505A1 (zh) | 一种终端后台应用程序的管理方法及装置 | |
US20210208935A1 (en) | Method for Scheduling Multi-Core Processor, Terminal, and Storage Medium | |
EP4123446A1 (en) | Thread management method and apparatus | |
CN107408073B (zh) | 使用存储器压缩来减少存储器提交开销 | |
CN110020383B (zh) | 一种页面数据请求处理方法及装置 | |
WO2017131907A2 (en) | Systems and methods for providing power efficiency via memory latency control | |
US20230100163A1 (en) | Allocating computing device resources | |
CN108958829B (zh) | 预加载的资源控制方法、装置、存储介质及终端 | |
US10545562B2 (en) | Electronic device and method for operating the same | |
CN113892084A (zh) | 调度任务的存储器高效动态推迟 | |
US20230342200A1 (en) | System and method for resource management in dynamic systems | |
WO2020133455A1 (zh) | 应用程序的管理方法、装置、存储介质及电子设备 | |
CN115878915A (zh) | 页面访问方法、装置、存储介质以及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |