CN109074286B - 对使用系统资源的应用的控制 - Google Patents

对使用系统资源的应用的控制 Download PDF

Info

Publication number
CN109074286B
CN109074286B CN201780027204.6A CN201780027204A CN109074286B CN 109074286 B CN109074286 B CN 109074286B CN 201780027204 A CN201780027204 A CN 201780027204A CN 109074286 B CN109074286 B CN 109074286B
Authority
CN
China
Prior art keywords
resource
usage
computer
applications
indication
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
CN201780027204.6A
Other languages
English (en)
Other versions
CN109074286A (zh
Inventor
R·A·勒那
P·N·谢缇
R·M·萨默尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN109074286A publication Critical patent/CN109074286A/zh
Application granted granted Critical
Publication of CN109074286B publication Critical patent/CN109074286B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • 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/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping

Abstract

通过对使用系统资源的应用进行控制来节省计算机系统上的系统资源。这可以通过以下操作来实现:监测对由多个应用对系统资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则将使用该系统资源的所述应用捆绑成资源组;以及在一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对该系统资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。

Description

对使用系统资源的应用的控制
背景技术
在计算机系统上运行的多个应用共享对某些系统资源(例如但不限于,中央处理单元(CPU)时间、存储器(特别是但不限于随机存取存储器(RAM))、输入/输出(I/O)总线操作、甚至其他应用程序或过程)的需求。如果太多应用(即使行为良好)竞争共享系统资源,或者如果应用行为不当并且尝试消耗共享系统资源的过多部分,则可能会出现问题。
例如,公司可以提供允许消费者访问流行应用的云服务,例如但不限于电子邮件应用、文字处理应用、金融电子表格应用、游戏、绘图程序等。每次消费者访问应用时,可以在虚拟机上打开该应用的新实例,其中,许多虚拟机在由该公司操作的服务器上运行,并且其中,在一个或多个服务器场上通常存在大量这样的服务器。
如果只有一个或两个消费者正在访问应用(例如,电子邮件应用),则运行虚拟机(其正在运行电子邮件应用的实例)的服务器将不会承受负担,至少不会承受那些实例的负担。然而,如果一千个、二千个、五千个等等消费者同时访问电子邮件应用,则所涉及的服务器可能没有足够的资源来容纳这些众多的虚拟机、和/或电子邮件程序的实例,在这种情况下,系统可能处于“遇险”状态,例如,通过感知的系统性能表现出来,例如,速度将受到影响,并且在极端情况下,可能发生错误,例如,由于应用的实例没有及时响应远程系统而导致的超时错误。
此外,由于特定地理区域中的消费者具有大致相似的时间表(例如,类似的工作时间,类似的晚上在家时间),因此当大量消费者同时在线时将存在高峰使用时间(例如,晚上时间),以及当很少有消费者上线时将存在其他时间(例如,午夜和黎明之间)。具体取决于一天中的时间、一周中的天、月份等,正在使用的应用的实例的数量可能会有很大差异。
另外,云服务通常对应用采用持续部署和安装更新,以便快速向消费者发布可用的新功能,通常不会改变系统资源的容量。如果更新行为不当并且尝试消耗共享资源的过多部分,则可能发生系统遇险,即系统性能可能受损并且可能发生错误。
此外,随着计算机变得更快,可以利用内在的特定的新处理器能力和速度以及存储器速度(资源)来编写与应用相关联的应用、过程和更新,但这样的应用和过程实际上可以在不具有那些增强的资源的旧系统上安装和运行。因此,这样的应用和过程可以尝试消耗共享资源的过多部分,尤其是在旧系统上,但不限于此。
这样的过多的系统资源消耗可能耗尽系统资源,并严重减慢其他应用或过程(包括系统过程),甚至到故障和级联故障发生的程度。这可能导致数据的丢失或损坏,甚至可以防止系统错误记录,从而造成难以或无法确定故障原因。
发明内容
本文中描述了用于通过对使用那些系统资源的应用进行控制来节省系统资源的技术。例如,一种计算机实现的方法包括:监测对由多个应用对系统资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则:将使用该资源的所述应用捆绑成资源组;以及在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对该资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。
还提供了一种装置,所述装置包括多个资源、处理器以及具有存储在其上的计算机可执行指令的至少一个计算机可读存储介质。所述计算机可执行指令当由所述处理器执行时,使所述装置:运行多个应用;监测对由所述多个应用对所述多个资源中的资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则:将使用该资源的所述应用捆绑成资源组;以及在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对该资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。
还提供了一种具有存储在其上的计算机可执行指令的计算机可读存储介质。所述计算机可执行指令当由处理器执行时,使所述处理器:运行多个应用;监测对由所述多个应用对所述多个资源中的资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则:将使用该资源的所述应用捆绑成资源组;以及在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对该资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。
提供本发明内容以便以简化的形式对下面在具体实施方式中进一步描述的设计构思的选择进行介绍。本发明内容并不旨在标识要求保护的发明主题的关键特征或重要特征,也不旨在表示本发明内容用于限制要求保护的发明主题的范围。此外,要求保护的发明主题不局限于解决本公开内容的任何部分中指出的任何或所有缺点的实施方式。
附图说明
图1是其中控制各种应用对系统的系统资源的消耗的示例性操作环境的图。
图2是根据本文中公开的一种实施方式示出说明了用于控制资源消耗的过程的方面的例程的流图。
图3是根据本文中公开的另一种实施方式示出说明了用于控制资源消耗的过程的方面的例程的流图。
图4是示出能够实现本文中呈现的技术的方面的计算系统的说明性计算机硬件和软件架构的计算机架构图。
图5示出了在其中可以执行本文中描述的软件组件的说明性分布式计算环境的方面。
图6示出了能够执行本文中描述的各种软件组件的计算设备的说明性计算设备架构。
具体实施方式
如本文中所公开的,允许在共享资源环境中运行的应用消耗它们所需的系统资源,直到由于过度使用一个或多个资源而确定系统处于遇险状态为止。也就是说,直到系统处于遇险状态并且存在提供差的性能甚至遭受错误或故障的风险为止。如果确定系统处于遇险状态,则消耗过度使用资源的应用被对待(捆绑)为受制于组策略使用上限(即,紧急或遇险资源使用限制或上限)的单个组件或过程。包括计算机资源和机器资源的术语“系统资源”在本文中有时被简称为“资源”以简化表达。
资源组中的应用可以继续针对资源做出请求,但作为一个组的应用和资源组中的每个应用都将受制于该遇险资源使用限制。因此约束了过度使用资源对系统性能的不利影响,并且客户不会遭遇服务中断。一旦系统已经恢复,即受影响的资源未被过度使用,则应用将被解除捆绑(从资源组中释放)。然后,允许被释放的应用恢复对资源进行单独请求,并且这些请求不再受制于组资源使用上限。
图1是其中控制各种应用对系统102的系统资源的消耗的示例性操作环境100的图。示出了多个应用或过程105A-105N(如上下文可能要求,统称为应用105,或单独被称为应用105)。应用105使用(消耗)一个或多个资源,例如CPU 115A、存储器115B、I/O总线115C或其他共享资源115N(如上下文可能要求,统称为资源115,或单独被称为资源115)。
如特定操作环境的期望,系统资源可以是硬件资源、软件资源或二者。作为示例而非限制,硬件资源包括CPU、RAM、存储设备、监测器、I/O总线以及诸如图4和图6中所示的其他硬件。作为示例而非限制,软件资源包括过程、虚拟机、库、数据库、应用(例如但不限于,用于对象的三维旋转的过程),以及其他软件(例如,图5和图6中所示的软件)。各种资源115的操作由多个使用监测器来监测,例如CPU使用监测器120A、存储器使用监测器120B和I/O总线监测器120C,或其他资源使用监测器120N(如上下文可能要求,统称为监测器120,或单独被称为监测器120)。在一种实施方式中,这些监测器120通过使用MicrosoftTMWindowsTM内核应用编程接口(API)来实现,以查询资源利用率,例如存储器和CPU。在该实施方式中,针对应用的每个实例进行单独的查询。
监测器120还可以由在CPU 115A上运行的其他过程实现,可以是硬件设备,或者可以是在不同CPU上运行的软件,其可以是或可以不是共享资源,例如资源115N。特定监测器120的输出可以是绝对值,例如,上一个时间段中的X项CPU操作,或上一个时间段中的Y兆字节存储器,或者可以是相对值,例如,使用了CPU时间的1%,存储器的2%等。
资源控制器125接收来自各种监测器120的输出,对它们求和,以确定资源的总负载,并将总和与门限(“遇险门限”)进行比较以确定系统是否处于遇险状态,即,一个或多个资源具有很少的可用性或没有可用性。任何资源115的遇险门限可以是固定的或者可以是用户可选择的。而且,在一个环境中操作的计算机系统的遇险门限可能与在另一个环境中操作的计算机系统的遇险门限非常不同。例如,运行具有已知资源消耗历史的预先确定数量的应用的计算机系统可以具有高遇险水平设置,这是因为系统通常在窄范围的资源消耗中操作。然而,另一个计算机系统(例如,服务游戏应用的计算机系统)可以根据游戏的当前流行度、一天中的时间、某天是否是假日等而遭受资源使用的极端情况,因此可能具有低遇险水平设置,以适应资源消耗的快速增长。
此外,即使资源类型是相同或相似的类型,但一个资源的遇险门限也可以不同于另一个资源的遇险门限。例如,由于例如它们的速度和容量,两个单独的存储器资源可以各自具有不同的遇险门限。当资源控制器125确定系统组件或资源的使用超过该特定资源的遇险门限时,则资源控制器125将使用该资源的应用创建捆绑到资源组中。
在一种实施方式中,对使用系统资源的应用以及那些系统资源的保留的控制(管理)是通过在达到或超过遇险水平门限时将那些应用放入资源组中来实现的。例如,可以将电子邮件程序的所有实例放入资源组中。然后,在资源组上放置使用上限。因此,如同是调用受影响资源115的单个应用或过程的那样来对待资源组中的所有应用。然后,资源控制器125向节流器110提供关于以下各项的指示:哪些资源遭受制于使用限制、该使用限制是什么以及共同受制于该使用限制的应用105。然后,节流器115控制资源组中的应用105对指定资源115的访问。术语“用户”是指对系统和/或各种应用中的一个或多个应用拥有所有权或控制权的一个或多个人。
例如,假设CPU 115A的使用门限是90%,并且应用105A和105B现在已经消耗了95%的CPU可用性。CPU使用监测器120B将该使用情况报告给资源控制器125。然后,资源控制器125至少将应用105A和105B放入资源组中,并将该资源组的CPU使用限制设置为某个较小的值,例如60%。(资源控制器125还可以将具有相似类型或具有相似配置属性的所有应用置于该资源组中。)该较小的值可以是预先确定的、可以是用户可设置的,或者可以通过某个其他过程来确定。资源控制器125向节流器110报告资源组中的应用程序105、所涉及的资源115以及针对该资源的新使用限制。
然后,节流器110通过将CPU 115A的可用性限制到资源组并因此限制到资源组中的那些应用105A、105B来实现该信息。例如,节流器110可以推迟对来自那些应用105A、105B的针对CPU 115A的请求进行响应,可能仅允许那些应用105A、105B提交,例如200项CPU操作,然后被迫等待,同时允许其他应用提交例如120项CPU操作,然后应用105A、105B可以提交另外200项CPU操作,被迫再次等待,等等。因此,其他应用和操作(例如但不限于,系统过程、记录事件和/或错误日志的数据等)可以及时发生。
资源控制器125监测该资源(以及其他资源)的使用。如果资源使用保持低于门限值(因为可能被任何期望的滞后值修改),则从资源组释放应用(即,解除捆绑,例如从资源组中所述过多的超量使用尚未发生应用)。资源控制器125向节流器110通知该动作,然后应用105A和105B可以具有对CPU 115A的不受限制的访问,受制于任何分配的硬上限资源使用限制和/或软上限资源使用限制。
如果CPU使用随后再次高于门限,则再次对当前使用CPU 115A的应用进行捆绑,即将其再次置于资源组中。当前使用CPU 115A的应用很可能与之前导致过度使用的应用相同,但不一定如此。例如,应用105B可能已经终止,并且应用105C-105G(未示出)可能已经开始,因此应用105A和105C-105G将被置于资源组中。资源控制器125将向节流器110通知该动作,并且节流器110将开始控制资源组中的那些应用对CPU 115A的访问。然后,一旦CPU使用已经下降到可接受的水平,则资源控制器125将对那些应用解除捆绑,即从资源组中释放那些应用。资源控制器125还将向节流器110通知相同的内容。
如果该过程(检测过度资源消耗、捆绑、等待、解除捆绑)在预先确定的时间段内重复超过预先确定的次数(例如但不限于,一天(24小时时段)中N次),则该过程没有对资源消耗产生期望的长期影响,因此采取如下所述的指定的动作。针对其他资源(例如但不限于,存储器115B、I/O总线115C和共享资源115N)执行类似的监测和控制。
为了便于说明和解释,应用105A-105N、节流器110、监测器120A-120N和资源控制器155被示为单独的组件。然而,实际上,这些组件优选地但不是必须地实现为在CPU 115A上运行的软件模块或过程。而且,应当领会,应用105的每个实例或者甚至应用105的多个实例可以在不同的虚拟机(为了便于说明而未示出)上运行,并且在每个CPU 115A上可以运行多个虚拟机。
图2是根据本文中公开的一种实施方式示出说明了用于控制资源消耗的过程的方面的例程200的流图。应当领会,本文中针对图2和图3以及其他附图描述的逻辑操作可以被实现为(1)计算系统上运行的一系列计算机实现的动作或程序模块和/或(2)计算系统内的互连的机器逻辑电路或电路模块。
本文中公开的技术的特定实施方式是取决于计算系统的性能和其他要求的选择问题。因此,本文中描述的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些状态、操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑单元及其任意组合来实现。还应当领会,可以执行比图中所示并且在本文中描述的操作更多或更少的操作。这些操作也可以以与本文中描述的顺序不同的来顺序执行。
在开始205时,计算系统启动,执行典型的启动和管理过程,并且开始运行应用和/或接受来自消费者的用于运行应用的请求。然后,例程200监测210对系统资源的使用(消耗)。监测过程优选地监测在预先确定的时间段上对资源的使用。该时间段可以是固定的或者可以是用户可选择的,例如可由监督和负责计算机系统的操作的管理人员选择的。可以使用较短的时间段,但是如果监测时段太短,则可能针对对系统的操作没有任何显著影响的瞬态事件采取动作。也可以使用较长的时间段,但是如果监测时段太长,则来自一个或多个资源匮乏的应用的累积影响可能导致系统缓慢和/或崩溃。
在决策215处,例程200测试资源使用是否已经超过资源使用门限(例如但不限于,95%)。该使用门限可以是固定的或者可以是用户可选择的,例如可由监督和负责计算机系统操作的管理人员选择的。门限太低可能导致不当地采取动作。门限太高可能导致由于消耗所有可用资源的事件而造成的系统缓慢和/或崩溃,这完全阻止了任何其他方对资源进行任何访问。
如果在决策215处确定使用不大于门限,则例程200进行到210以继续监测对系统资源的使用。如果在决策215处确定使用大于门限,则例程200将使用该资源的应用分配220给针对该特定资源标识的资源组。然后,例程200将在指定的时间段内向该资源组分配225资源使用率。所分配的资源使用率可以是预先确定的值、根据资源类型确定的预先确定的值、根据应用类型确定的预先确定的值,或者甚至是根据那些应用的当前使用率确定的值。例如,如果那些应用对该资源的当前使用率为40%,则分配的资源使用率可以是小于当前资源使用率的任何值,例如35%、30%、20%、10%或者甚至更少。
资源使用率和指定的时间段可以是固定的,可以是可变的,或者可以是用户可选择的,例如可由监督和负责计算机系统操作的管理人员选择的。如果分配的资源使用率太低,则分配给资源模块的应用可能执行缓慢或者可能失败。相反,如果分配的资源使用率太高,则可能无法获得所期望的资源减少。如果指定的时间段太短,则一旦应用被释放,资源使用率可能会快速返回到其先前的水平或者不可接受的水平。如果指定的时间段太长,则分配给资源模块的应用可能会执行缓慢。
而且,每次将应用分配给资源组时,都可以更改资源使用率和指定的时间段。例如,每次超出指定的资源使用率并将应用分配给该资源的资源组时,可以减少该资源组的分配的资源使用,和/或可以增加应用停留在资源组中的指定的时间段。增加或减少可以是线性的或非线性的,并且可以被约束在一定限制内,和/或资源使用率和指定的时间段可以被约束在一定限制内。
然后,在指定的时段之后,在决策230处,例程200测试是否存在过多的超量,即,使用是否已经大于门限超过预先确定的次数,例如但不限于五次。次数可以是固定的或者可以是用户可选择的,例如可由监督和负责计算机系统操作的管理人员选择的。如果次数太低,则可能不必要地采取下文描述的指定的动作。如果次数太高,则经历系统缓慢和/或崩溃的次数可以是不可接受的。
如果在决策230处过多的超量发生,则例程200执行235指定的动作,然后继续监测210对系统资源的使用。作为示例而非限制,指定的动作可以是:增加应用在资源组中的时间量;将应用在资源组中的时间量重新设置为起始值或默认值;将CPU对资源组中指定的应用的可用性限制为比以前更低的使用率;将资源使用率重置为起始值或默认值;增加应用被分配给资源组的时间;将应用被分配给资源组中的时间重新设置为起始值或默认值;设置关于直到在指定的时间或事件(例如,第二天上午12:01、系统重置、手动重置等)之后应用才被再次放入该资源组中的标志位;向拥有或控制受影响的应用的一个或多个人员通知过多的资源消耗已经发生等。如果在决策230处过多的超量尚未发生,则例程200从资源组释放(解除捆绑)240应用,然后继续监测210对系统资源的使用。
在一种配置中,CPU 115A实现Windows操作系统,例如但不限于Windows Server2012,更优选地,Windows Server 2012R2。当CPU 115A开始操作(例如启动)时,它创建一个或多个工作对象供以后使用。这些工作对象用于实现资源组。最初,这些工作对象是空的。稍后,如本文中所述,一个或多个应用105可以被放置(捆绑)成工作对象,或者从工作对象所述过多的超量使用尚未发生(解除捆绑、释放)。工作对象可以重复使用。例如,工作对象可以用于捆绑第一资源的第一应用组,即,工作对象用于第一资源组,随后从工作对象释放应用,此时工作对象是空的/未使用的,然后可以使用相同的工作对象再次捆绑资源的应用组,该应用组可以与先前的应用组相同,或者可以是不同的应用组,并且资源可能与先前的资源相同,或者可以是不同的资源。而且,在另一种配置中,对各种应用105的操作的调度,无论是放置在工作对象中还是从工作对象释放,都不是由节流器110执行的,而是由Windows调度器执行的。
作为示例,假设存在在系统上运行的若干应用的多个实例,例如电子邮件应用的多个实例、文字处理应用的多个实例、电子表格应用的多个实例等。如果CPU的遇险门限为90%,则当CPU使用率达到90%时,系统将根据类型(例如,电子邮件应用、文字处理应用、电子表格应用等)对各种应用进行组合,这可以例如通过检查与每个应用相关联的配置文件中的XML属性来完成。
系统将测量对这些应用中的每个应用的CPU使用,并对每个应用组的使用进行求和。例如,假设电子邮件程序组的CPU使用率总和为6%,文字处理组的CPU使用率总和为25%,电子表格应用的CPU使用率总和为16%等。系统将把电子邮件应用放入一个工作对象中,并为该工作对象设置限制(例如,1%)。因此,电子邮件应用现在将具有1%的集体最大限制(硬上限)。类似地,系统将把文字处理应用放入另一个工作对象中,并为该工作对象设置限制(例如,5%),并将电子表格应用放入又一个工作对象中,并为该工作对象设置限制(例如,3%)。因此,文字处理应用现在将具有5%的集体最大限制(硬上限),并且电子表格应用现在将具有3%的集体最大限制(硬上限)。因此,这些应用的CPU使用将从47%降低到9%,从而释放CPU资源用于其他用途,例如系统过程、维护和清除错误日志等。
在另一种实施方式中,每15秒检查一次CPU使用量(采样间隔),并且在两分钟时段(采样持续时间)内聚合该使用。聚合可以是CPU使用的总和、CPU使用的平均值、CPU使用的加权总和或加权平均值等。而且,两分钟时段可以是离散的两分钟(即,没有重叠),可以是重叠的两分钟时段,或者可以是滚动的两分钟时段。如果聚合的CPU使用超过遇险门限,则采取动作,例如但不限于上文的步骤220和225。
而且,在一种实施方式中,应用在工作对象(捆绑时段)中的指定的时间是1小时。另外,在另一种配置中,应用可以放入工作对象的次数是三次(捆绑限制)。优选地,这些值(采样间隔、采样持续时间、捆绑时段、捆绑限制)是用户可配置的。此外,这些值可以根据一天中的时间、一周中的天、月份、最近的历史等而变化。例如,捆绑时段可以在重使用时段期间更长,并且在较轻使用时段期间更短。
本文中描述的例程也可以与每个程序的传统硬上限和软上限资源限制一起使用。例如,假设一个应用具有硬上限,而另一个应用具有软上限,或者甚至没有上限。它们将被允许按照他们各自的上限操作,直到达到遇险门限为止。此时,它们将被放置到工作对象中,然后受制于它们由相应工作对象的上限修改的原始上限,直到它们从工作对象中释放。
例如,假设应用具有为20%的硬上限,并将其放入上限为14%的工作对象中。该应用将不再允许使用20%的资源,而是会受到14%的工作对象上限的约束,然而,由于该工作对象中的其他应用对资源的需求而可能进一步受限。如果将具有例如10%硬上限的应用放入具有为14%的硬上限的工作对象中,则该应用仍将被限制为10%,即使该工作对象中没有其他应用。
而且,在一种实施方式中,一旦将应用带入工作对象中,就可以将硬上限或软上限分配给应用。但是,在一种实施方式中,工作对象内的应用继承了工作对象的属性(上限)。
而且,在另一种配置中,针对MicrosoftTMWindowsTM操作系统,即使通过系统回收,也可以保留工作对象句柄。优选地,工作对象句柄独立于操作系统存储。然后,当系统回收时,将取回工作对象句柄,因此在回收之前处于工作对象中的应用仍然在该工作对象中。
不同的软件组件可以执行例程200的不同操作。例如,操作系统422可以执行启动操作205并实现应用105,监测器120可以执行监测操作210,资源控制器125可以执行操作215、220、225、230和240,节流器110可以协助执行操作225,并且资源控制器125和/或操作系统422可以执行操作235。
图3是根据本文中公开的另一种实施方式示出说明了用于控制资源消耗的过程的方面的例程300的流图。例程300类似于图2的例程200,但是某些操作的顺序不同。在操作305处,计算系统启动,执行典型的启动和管理过程,并且开始运行应用和/或接受来自消费者的用于运行应用的请求。然后,例程300监测310对系统资源的使用(消耗)。在决策315处,例程300测试资源使用是否已经超过资源使用门限。
如果在决策315处,使用不大于门限,则例程300前进以继续监测310对系统资源的使用。如果在决策315处,使用大于门限,则在决策320处,例程300测试是否存在过多的超量,即,使用是否已经大于门限超过预先确定的次数。如果在决策320处过多的超量已经发生,则例程300执行325指定的动作,并且例程300然后前进以继续监测310对系统资源的使用。
如果在决策320处过多的超量尚未发生,则例程300将使用该资源的应用序捆绑(分配)330到为该特定资源标识的资源组,并且例程300将在指定的时间段向该资源组分配给335资源使用率。可以如上文针对图2描述的来确定分配的资源使用率。一旦指定的时间段已经流逝,例程300就从资源组释放(解除捆绑)340应用,并且例程300然后继续监测310对系统资源的使用。
不同的软件组件可以执行例程300的不同操作,如上文针对图2所讨论的。
因此,在图2和图3的例程中,当对资源的使用超过使用门限时,通过例如在指定的时间段内将使用该资源的应用分配给具有指定的最大资源使用率的资源组来捆绑所述应用。因此,那些应用共同分享该指定的最大使用率,直到该时间段已经到期,在此期间其他过程具有对资源的更大访问权限。
应当领会,图2和图3的例程200和300分别通过以降低了计算机将变得缓慢、出错或失败的可能性的共同方式对待应用来改进计算机的操作。这些例程还通过释放资源来改进计算机的操作,以便其他应用程序可以使用该资源。此外,如果共同应用中的一者或多者在准备好请求使用第二资源之前需要使用第一资源,则通过限制该应用访问第一资源的能力,该应用将在其可以请求第二资源之前被延迟,从而释放第二资源以供其他应用使用。
尽管图2和图3讨论了对单个资源的监测,但是可以考虑并预期将监测多个资源,并且可以针对一个资源采取动作,而不依赖于针对另一个资源采取的动作。在一种实施方式中,如果应用已经被放入第一资源组中,则在将其从第一资源组释放之前,不能将其放入第二资源组。
系统过程和某些其他过程优选地免除该过程,特别是如果它们被包括在工作对象中将破坏计算系统的操作。也就是说,即使系统过程使用特定资源,并且为该特定资源创建了工作对象,系统过程也不会被分配给该工作对象,并且将不会受制于为该工作对象指定的最大使用率。即使在分配给工作对象的应用被阻止使用资源时,这也允许系统过程和某些其他过程使用资源。免除的系统过程和其他过程优选地由拥有或控制系统或其组件的操作的人员来指定。
图4是示出能够实现本文中呈现的技术的方面的计算系统400的说明性计算机硬件和软件架构的计算机架构图。所示的架构代表服务器计算机或适合于执行本文所呈现的软件组件的另一种类型的计算设备。
虽然通用计算机将具有这些组件中的一些组件(例如,CPU 402、存储器404、大容量存储设备412、输入/输出控制器414和网络接口单元418),并且可以能够执行某些基本计算机功能(例如,加法和减法),但通用计算机不能执行并且不执行本文中描述的各种过程和功能,因此不能实现所期望的系统资源保存。确切地说,必须通过添加本文中描述的专用编程来修改这样的通用计算机,所述专用编程将通用计算机变换成专用计算机。
本文中描述的软件组件,特别是但不限于监测器120、资源控制器125和节流器110,当被加载到CPU 402中并被执行时,将CPU 402和整个计算机400从通用计算系统变换成定制的专用计算系统以有助于本文中呈现的功能。这样的专用编程还通过防止过度使用系统资源导致系统操作缓慢和系统故障来改进计算机本身的操作和功能。这样的专用编程还通过将应用作为组而不是单独地控制来改进计算机本身的操作和功能,从而减少了用于应用管理和控制的开销。
在这方面,应当领会,计算机400可以用于实现能够执行本文中呈现的软件组件的计算设备。例如,并且非限制性的,计算机400可以用于实现能够执行Windows服务器操作系统和/或上述其他软件组件中的任何软件组件的计算设备。
计算机400包括中央处理单元402(CPU)、包括随机存取存储器406(“RAM”)和只读存储器(“ROM”)408的系统存储器404、以及将存储器404耦合至CPU 402的系统总线410。包含有助于在计算机400内的元件之间传输信息(例如,在启动期间)的基本例程的基本输入/输出系统通常被存储在ROM 408中。计算机400还包括用于存储操作系统422和一个或多个程序(包括但不限于应用105、监测器120、资源控制器125和节流器110等)的大容量存储设备412。大容量存储设备412还可以被配置为存储其他类型的程序和数据,例如默认值、设置、免除应用列表、受制于过程的应用列表等。
大容量存储设备412通过连接到总线410的大容量存储控制器(未示出)连接到CPU402。大容量存储设备412及其相关联的计算机可读存储介质为计算机400提供非易失性存储。尽管对本文中包含的计算机可读存储介质的描述提及了诸如硬盘驱动器或CD-ROM驱动器之类的大容量存储设备,但本领域技术人员应当领会,计算机可读存储介质可以是可以由计算机400访问以检索指令和/或数据的任何可用存储介质或媒介或通信介质或媒介。
通过举例而非限制的方式,计算机可读存储介质可以包括用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的以任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读存储介质包括但不限于:RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术、CD-ROM、数字多功能光盘(“DVD”)、HD-DVD、蓝光或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或者可以用于存储期望的信息且可以由计算机400存取的任何有形介质。
本文中使用的术语计算机可读存储介质和计算机可读存储媒介仅包括由具有司法管辖权的法院解释或界定的35U.S.C§101的含义内的法定主题。例如,这些术语不包括传播的波本身或信号本身,这些术语也不包括使得权利要求在35U.S.C§101下无效的解释。
通信介质不包括计算机可读存储介质,但确实包括计算机可读指令、数据结构、程序模块或调制的数据信号中的其他数据(例如,载波或其他传输机制),并且包括递送介质(例如但不限于,与之相关联的发射机、接收机、线路、光纤线路等)。术语“调制的数据信号”意指其一个或多个特性以用于对信号中的信息进行编码的方式来设置或改变的信号。通过举例而非限制的方式,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及与其相关联的递送介质,以及诸如声音、RF、红外线和其他无线介质之类的无线介质,以及与其相关联的递送介质。上述各项中任意项的组合也应当被包括在通信介质的范围内。
根据各种配置,计算机400可以使用通过网络(例如,网络416)到远程计算机的逻辑连接在联网环境中进行操作。计算机400可以通过连接到总线410的网络接口单元418连接到网络416。应当领会,网络接口单元418还可以用于连接其他类型的网络和远程计算机系统。在典型环境中,许多消费者将使用膝上型计算机、桌面式计算机、个人数字助理、“板型”或平板计算设备、智能手机、视频游戏控制台、其他类型的移动计算设备,以及几乎任何类型的个人计算设备(未示出)来通过网络416连接到计算机400,并请求访问和使用计算机400上可用的各种应用。
计算机400还可以包括用于接收和处理来自包括键盘、鼠标、触摸输入或电子触笔(图4中未示出)的多个其他设备的输入的输入/输出控制器414。类似地,I/O控制器414可以向显示屏幕、打印机或其他类型的输出设备(图4中也未示出)提供输出。因此,I/O控制器414提供用户输入,例如用于设置本文中讨论的不同的值,以及用于呈现选项、系统信息、资源使用以及用于查看的其他参数和用户的可能动作。用户还可以通过网络接口单元418来访问计算机400以执行这些用户动作。
CPU 402可以由任何数量的晶体管或其他分立电路元件构成,其可以单独地或共同地呈现任何数量的状态。更具体地,响应于包含在本文中公开的软件模块内的可执行指令,CPU 402可以充当有限状态机。这些计算机可执行指令可以通过指定CPU 402如何在状态之间转换来变换CPU 402,从而变换构成CPU 402的晶体管或其他分立硬件元件。
对本文中呈现的软件模块进行编码还可以变换本文中呈现的计算机可读介质的物理结构。物理结构的具体信息依赖于本说明书的不同实施方式中的各种因素。这样的因素的示例包括但不限于:用于实现计算机可读介质的技术、计算机可读介质被表征为主存储装置还是辅助存储装置等。例如,如果计算机可读介质被实现为基于半导体的存储器,则可以通过变换半导体存储器的物理状态来将本文中公开的软件编码在计算机可读介质上。例如,软件可以变换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。软件还可以变换这样的组件的物理状态,以便在其上存储数据。
作为另一个示例,本文中公开的计算机可读介质可以使用磁或光技术来实现。在这样的实施方式中,当在其中编码软件时,本文中呈现的软件可以变换磁或光介质的物理状态。这些变换可以包括改变给定磁介质内特定位置的磁特性。这些变换还可以包括改变给定光介质内特定位置的物理特征或特性,以改变那些位置的光学特性。在不脱离本说明书的范围和精神的情况下,物理介质的其他变换是可能的。
鉴于上述描述,应当领会,在计算机400中发生许多类型的物理变换,以便存储和执行本文中呈现的软件组件。还应当领会,图4所示的用于计算机400的架构或类似架构可以用于实现其他类型的计算设备,包括手持式计算机、嵌入式计算机系统、移动设备(例如,智能手机和平板电脑),以及本领域技术人员已知的其他类型的计算设备。还考虑计算机400可能不包括所示的所有组件,可以包括未明确示出的其他组件,或者可以使用与所示架构完全不同的架构。
图5示出了在其中可以执行本文中描述的软件组件的说明性分布式计算环境502的方面。因此,图5中示出的分布式计算环境502可以用于执行程序代码(例如,虚拟机、应用105和/或在系统102内操作的其他组件),所述程序代码能够提供本文中针对图1-图4描述的功能和/或本文中描述的任何其他软件组件。例如,并且非限制性的,分布式计算环境502可以用于实现本文中描述的由系统102提供的功能。
根据各种实施方式,分布式计算环境502在网络503上操作,与网络503通信或者作为网络503的一部分,例如但不限于网络416。一个或多个客户端设备506A-506N(下文统称和/或一般被为“客户端506”)可以经由网络503和/或其他连接(图5中未示出)与分布式计算环境502通信。客户可以通过使用例如这样的客户端设备506来使用系统102的各个方面、特征、系统资源、应用等。
在所示的配置中,客户端506包括:计算设备506A(例如,膝上型计算机、桌面式计算机或其他计算设备);“板型”或平板计算设备(“平板计算设备”)506B;移动计算设备506C(例如,移动电话、智能电话或其他移动计算设备);服务器计算机506D;和/或其他设备506N。应当理解,任何数量的客户端506都可以与分布式计算环境502通信。本文中参考图4和图6示出和描述了用于客户端506的两个示例性计算架构。图4和图6中所示的架构也可用于实现上述系统102。在这方面,应当理解,示出的客户端506和本文中示出和描述的计算架构是说明性的,并且不应当被解释为以任何方式受到限制。
在示出的配置中,分布式计算环境502包括应用服务器504、数据存储装置510和一个或多个网络接口512。根据各种实施方式,应用服务器504的功能可以由作为网络503的一部分或与网络503通信而执行的一个或多个服务器计算机提供。应用服务器504可以托管各种服务,例如上述虚拟机和应用105、门户和/或其他资源。在示出的配置中,应用服务器504托管用于托管应用105和/或网络服务的一个或多个虚拟机514,例如在系统102内操作的组件,或者其他类型的应用和/或服务。应当理解,该配置是说明性的,并且不应当被解释为以任何方式进行限制。应用服务器504还可以托管或提供对一个或多个网络门户、链接页面、网站和/或其他信息(“网络门户”)516的访问。
根据各种实施方式,应用服务器504还包括一个或多个邮箱服务518和一个或多个消息传送服务520。邮箱服务518可以包括电子邮件(“email”)服务,例如但不限于由应用105提供的服务。邮箱服务518还可以包括各种个人信息管理(“PIM”)服务,包括但不限于日历服务、联系人管理服务、协作服务和/或其他服务。消息传送服务520可以包括但不限于即时消息传递(“IM”)服务、聊天服务、论坛服务和/或其他通信服务,例如但不限于由应用105提供的服务。
应用服务器504还可以包括由应用105提供的一个或多个社交网络服务522。社交网络服务522可以提供各种类型的社交网络服务,包括但不限于:用于共享或发布状态更新、即时消息、链接、照片、视频和/或其他信息的服务,用于对文章、产品、博客或其他资源进行评论或显示对其的兴趣的服务,和/或其他服务。在一些配置中,社交网络服务522由FACEBOOK社交网络服务、LINKEDIN专业网络服务、MYSPACE社交网络服务、FOURSQUARE地理网络服务、YAMMER办公室同事网络服务等提供或者包括上述各项服务。在其他配置中,社交网络服务522由可能被称为“社交网络提供商”的其他服务、站点和/或提供商来提供。例如,一些网站允许用户在各种活动和/或上下文(例如,阅读发布的文章、评论商品或服务、发布、协作、游戏等)期间经由电子邮件、聊天服务和/或其他方式彼此进行交互。其他服务是可能的并且是考虑到的。
社交网络服务522还可以包括评论、博客和/或微博服务。这样的服务的示例包括但不限于YELP评论服务、KUDZU评论服务、OFFICETALK企业微博服务、TWITTER消息传送服务、GOOGLE BUZZ服务和/或其他服务。应当领会,上述服务列表并非是穷举的,并且为了简洁起见,本文未提及许多附加和/或替代的社交网络服务522。如此,上述配置是说明性的,并且不应当被解释为以任何方式受到限制。
还如图5所示,应用服务器504还可以托管其他服务、应用105和/或门户(“其他服务”)524,和/或其他提供其他资源。其他服务524可以包括但不限于本文中描述的任何其他硬件和/或软件组件。因此可以领会,分布式计算环境502可以提供本文中公开的技术与各种邮箱、消息传送、博客、社交网络、生产力和/或其他类型的服务或资源的集成。
如上所述,分布式计算环境502可以包括数据存储装置510。根据各种实施方式,数据存储装置510的功能由在网络503上操作或与网络503通信的一个或多个数据库提供。数据存储装置510的功能还可以由被配置为托管用于分布式计算环境502的数据的一个或多个服务器计算机提供。数据存储装置510可以包括、托管或提供一个或多个真实或虚拟数据存储设备526A-526N(下文统称和/或统称为“数据存储设备526”)。数据存储设备526被配置为托管由应用服务器504、应用105和/或其他数据使用或创建的数据。
分布式计算环境502可以与网络接口512通信或者由网络接口512访问。网络接口512可以包括各种类型的网络硬件和软件,以用于支持两个或更多个计算设备(包括但不限于客户端506和应用服务器504)之间的通信。应当领会,网络接口512还可以用于连接到其他类型的网络和/或计算机系统。
应当理解,本文中描述的分布式计算环境502可以利用可以被配置为执行本文中公开的软件组件的任何方面的任何数量的系统资源和/或其他分布式计算功能来实现本文中描述的软件元素的任何方面。根据本文中公开的技术的各种实施方式,分布式计算环境502将本文中描述的一些或全部软件功能作为服务向客户端506提供。应当理解,客户端506还可以包括真实或虚拟机,包括但不限于服务器计算机、网络服务器、个人计算机、移动计算设备、智能电话和/或其他设备。如此,本文中公开的技术的各种实施方式可以使得被配置为访问分布式计算环境502的任何设备能够使用本文中描述的功能。
图6示出了能够执行本文中描述的各种软件组件的计算设备的说明性计算设备架构600。计算设备架构600适用于部分由于形状因子、无线连接和/或电池供电操作而有助于移动计算的计算设备。在一些配置中,计算设备包括但不限于智能移动电话、平板设备、板型设备、便携式视频游戏设备等。
计算设备架构600还适用于图5中所示的客户端506中的任何客户端。此外,计算设备架构600的各方面适用于传统桌面式计算机、便携式计算机(例如,膝上型计算机、笔记本电脑、超便携式计算机和上网本)、服务器计算机和其他计算机系统,例如本文中参考图5描述的计算机系统。例如,下文中公开的单点触摸和多点触摸方面可以应用于使用触摸屏或某种其他触摸使能设备(例如,触摸使能的跟踪板或触摸使能的鼠标)的桌面式计算机。计算设备架构600还可以用于实现系统102和/或其他类型的计算设备,以用于实现或消费本文中描述的功能。
图6中示出的计算设备架构600包括处理器602、存储器组件604、网络连接组件606、传感器组件608、输入/输出组件610和电源组件612。在示出的配置中,处理器602与存储器组件604、网络连接组件606、传感器组件608,输入/输出(“I/O”)组件610和电源组件612通信。尽管在图6中示出的各个组件之间没有示出连接,但组件可以被电连接以便交互并执行设备功能。在一些配置中,组件被布置为经由一个或多个总线(未示出)进行通信。
处理器602包括一个或多个CPU核,其被配置为控制系统资源、过程数据、执行一个或多个应用程序105的计算机可执行指令,以及与计算设备架构600的其他组件通信,以便执行本文中描述的功能的方面。处理器602可以用于执行本文中呈现的软件组件的方面,并且特别是,至少部分地使用触摸使能输入的方面。
在一些配置中,处理器602包括图形处理单元(“GPU”),其被配置为加速由CPU执行的操作,这些操作包括但不限于通过执行通用科学和工程计算应用以及图形密集型计算应用(例如,高分辨率视频(例如,720P、1080P、4K和更高)、视频游戏、3D建模应用等)来执行的操作。在一些配置中,处理器602被配置为与离散GPU(未示出)通信。在任何情况下,CPU和GPU可以根据协处理CPU/GPU计算模型来配置,其中,应用的顺序部分在CPU上执行并且计算密集部分由GPU加速。
在一些配置中,处理器602是或者被包括在片上系统(“SoC”)以及下文描述的一个或多个其他组件中。例如,SoC可以包括处理器602、GPU、网络连接组件606中的一个或多个组件、以及传感器组件608中的一个或多个组件。在一些配置中,处理器602部分地使用层叠封装(“PoP”)集成电路封装技术来制造。此外,处理器602可以是单核或多核处理器。
处理器602可以根据ARM架构创建,所述ARM架构可从英国剑桥的ARM HOLDINGS获得许可。替代地,处理器602可以根据x86架构来创建,所述x86架构例如可从加利福尼亚州山景城的英特尔公司和其他公司获得。在一些配置中,处理器602是可从加利福尼亚州圣地亚哥的QUALCOMM获得的SNAPDRAGON SoC,可从加利福尼亚州圣克拉拉的NVIDIA获得的TEGRA SoC,可从韩国首尔的SAMSUNG获得的HUMMINGBIRD SoC,可从德克萨斯州达拉斯的TEXAS INSTRUMENTS获得的开放多媒体应用平台(“OMAP”)SoC,上述任何SoC的定制版本,或专有SoC。
存储器组件604包括RAM 614、ROM 616、集成存储存储器(“集成存储装置”)618和可移动存储存储器(“可移动存储装置”)620。在一些配置中,RAM 614或其一部分、ROM 616或其一部分,和/或RAM 614和ROM 616的某种组合被集成在处理器602中。在一些配置中,ROM 616被配置为存储固件、操作系统或其一部分(例如,操作系统内核),和/或引导加载程序以便从集成存储器618或可移动存储器620加载操作系统内核。
集成存储装置618可以包括固态存储器、硬盘或固态存储器和硬盘的组合。集成存储装置618可以焊接或以其他方式连接到逻辑板,处理器602和本文中描述的其他组件也可以连接在逻辑板上。如此,集成存储装置618被集成到计算设备中。集成存储器618可以被配置为存储操作系统或其部分、应用程序、数据和本文中描述的其他软件组件。
可移动存储装置620可以包括固态存储器、硬盘或固态存储器和硬盘的组合。在一些配置中,提供可所述过多的超量使用尚未发生存储装置620来代替集成存储装置618。在其他配置中,可移动存储装置620被提供为附加的可选存储装置。在一些配置中,可移动存储装置620在逻辑上与集成存储装置618组合,使得总可用存储装置可用并且向用户示出为集成存储装置618和可移动存储装置620的总组合容量。
可移动存储器620被配置为插入可移动存储存储器插槽(未示出)或其他机制,通过所述机制插入并固定可移动存储装置620以有助于可移动存储装置620通过其可以与计算设备的其他组件(例如,处理器602)通信的连接。可移动存储装置620可以体现为各种存储卡格式,包括但不限于PC卡、压缩闪存卡、记忆棒、安全数字(“SD”)、迷你SD、微型SD、通用集成电路卡(“UICC”)(例如,订户识别模块(“SIM”)或通用SIM(“USIM”))、专有格式等。
一个或多个存储器组件604可以用于存储操作系统。根据各种配置,操作系统包括但不限于来自微软公司的WINDOWS MOBILE OS、WINDOWS PHONE OS或WINDOWS OS,来自加拿大安大略省滑铁卢市的RESEARCH IN MOTIONTM有限公司的BLACKBERRYTM OS,来自加利福尼亚州库比蒂诺市的APPLETM公司的IOS,来自加利福尼亚州山景城的GOOGLETM公司的ANDROIDTMOS。考虑了其他操作系统。
网络连接组件606包括无线广域网组件(“WWAN组件”)622,无线局域网组件(“WLAN组件”)624和无线个域网组件(“WPAN组件”)626。网络连接组件606有助于去往和来自网络628(例如但不限于网络416,其可以是WWAN、WLAN或WPAN)的通信。尽管示出了单个网络628,但是网络连接组件606可以有助于与多个网络的同时通信。例如,网络连接组件606可以有助于经由WWAN、WLAN或WPAN中的一者或多者与多个网络的同时通信。
网络628可以是WWAN,例如,经由WWAN组件622向使用计算设备架构600的计算设备提供语音和/或数据服务的使用一种或多种移动电信技术的移动电信网络。移动电信技术可以包括但不限于全球移动通信系统(“GSM”)、码分多址(“CDMA”)ONE、CDMA2000、通用移动电信系统(“UMTS”)、长期演进(“LTE”)和微波接入全球互通(“WiMAX”)。
此外,网络628可以使用各种信道接入方法(其可以被或可以不被上述标准),包括但不限于时分多址(“TDMA”)、频分多址(“FDMA”)、CDMA、宽带CDMA(“W-CDMA”)、正交频分复用(“OFDM”)、空分多址(“SDMA”)等。可以使用以下各项来提供数据通信:通用分组无线电服务(“GPRS”)、全球演进的增强数据速率(“EDGE”)、包括高速下行链路分组接入(“HSDPA”)的高速分组接入(“HSPA”)协议族、增强型上行链路(“EUL“)或以其他方式被称为高速上行链路分组接入(“HSUPA”)、演进型HSPA(“HSPA+”)、LTE以及各种其他当前和未来的无线数据接入标准。网络628可以被配置为:利用上述技术的任何组合来提供语音和/或数据通信。网络628可以被配置为或适于根据未来的技术来提供语音和/或数据通信。
在一些配置中,WWAN组件622被配置为向网络628提供双模多模连接。例如,WWAN组件622可以被配置为:提供到网络628的连接,其中,网络628经由GSM和UMTS技术或者经由技术的某种其他组合来提供服务。替代地,可以使用多个WWAN组件622来执行这样的功能,和/或提供附加功能以支持其他不兼容的技术(即,不能由单个WWAN组件所支持)。WWAN组件622可以有助于与多个网络(例如,UMTS网络和LTE网络)的类似连接。
网络628可以是根据一个或多个电气和电子工程师协会(“IEEE”)104.11标准(例如,IEEE 104.11a、104.11b、104.11g、104.11n和/或未来的104.11标准(在本文中统称为WI-FI))操作的WLAN。还考虑了草案104.11标准。在一些配置中,使用一个或多个无线WI-FI接入点来实现WLAN。在一些配置中,无线WI-FI接入点中的一者或多者是具有到充当WI-FI热点的WWAN的连接的另一个计算设备。WLAN组件624被配置为经由WI-FI接入点连接到网络628。可以经由各种加密技术来保护这样的连接,所述加密技术包括但不限于WI-FI保护访问(“WPA”)、WPA2、有线等效保密(“WEP”)等。
网络628可以是根据红外数据协会(“IrDA”)、蓝牙、无线通用串行总线(“USB”)、Z-Wave、ZIGBEE或某种其他短距离无线技术操作的WPAN。在一些配置中,WPAN组件626被配置为:有助于经由WPAN与其他设备(例如,外围设备、计算机或其他计算设备)的通信。
传感器组件608包括磁力计630、环境光传感器632、接近度传感器634、加速度计636、陀螺仪638和全球定位系统传感器(“GPS传感器”)640。考虑其他传感器(例如但不限于,温度传感器或冲击检测传感器)也可以并入计算设备架构600中。
磁力计630被配置为测量磁场的强度和方向。在一些配置中,磁力计630向存储在存储器组件604中的一者内的罗盘应用程序提供测量结果,以便向用户提供包括基本方向北、南、东和西的参考系中的准确方向。可以向包括罗盘组件的导航应用程序提供类似的测量结果。考虑了由磁力计630获得的测量结果的其他用途。
环境光传感器632被配置为测量环境光。在一些配置中,环境光传感器632向存储在存储器组件604中的一者内的应用程序提供测量结果,以便自动调节(下面描述的)显示器的亮度以补偿低光和强光环境。可以考虑由环境光传感器632获得的测量结果的其他用途。
接近度传感器634被配置为:在没有直接接触的情况下检测计算设备附近的对象或物体的存在。在一些配置中,接近度传感器634检测用户身体(例如,用户面部)的存在,并将该信息提供给存储在存储器组件604中的一者内的应用程序,所述应用程序使用接近度信息来启用或禁用计算设备的一些功能。例如,电话应用程序可以响应于接收到接近度信息而自动禁用(下面描述的)触摸屏,从而使得用户面部在呼叫期间不会无意中结束呼叫或启用/禁用电话应用程序内的其他功能。考虑了由接近度传感器634检测的接近度的其他用途。
加速度计636被配置为测量正确的加速度。在一些配置中,来自加速度计636的输出被应用程序用作输入机制以控制应用程序的一些功能。在一些配置中,将来自加速度计636的输出提供给应用程序,用于在横向和纵向模式之间进行切换、计算坐标加速度或检测跌倒。考虑了加速度计636的其他用途。
陀螺仪638被配置为测量和保持方向。在一些配置中,来自陀螺仪638的输出被应用程序用作输入机制以控制应用程序的一些功能。例如,陀螺仪638可以用于准确识别视频游戏应用或某种其他应用的3D环境内的移动。在一些配置中,应用程序使用来自陀螺仪638和加速度计636的输出来增强对一些功能的控制。考虑了陀螺仪638的其他用途。
GPS传感器640被配置为从GPS卫星接收信号以用于计算位置。由GPS传感器640计算的位置可以由需要或受益于位置信息的任何应用程序使用。例如,由GPS传感器640计算的位置可以与导航应用程序一起使用,以提供从该位置到目的地的方向或从目的地到该位置的方向。此外,GPS传感器640可以用于向基于外部位置的服务(例如,E611服务)提供位置信息。GPS传感器640可以使用网络连接组件606中的一者或多者来获得经由WI-FI、WIMAX和/或蜂窝三角测量技术生成的位置信息,以帮助GPS传感器640获得定位。GPS传感器640还可以用于辅助GPS(“A-GPS”)系统中。
I/O组件610包括显示器642、触摸屏644、数据I/O接口组件(“数据I/O”)646、音频I/O接口组件(“音频I/O”)648、视频I/O接口组件(“视频I/O”)650以及摄像头652。在一些配置中,对显示器642和触摸屏644进行了组合。在一些配置中,对数据I/O组件646、音频I/O组件648和视频I/O组件650中的两者或更多者进行了组合。I/O组件610可以包括被配置为支持下文描述的各种接口的分立处理器,或者可以包括内置于处理器602的处理功能。
显示器642是被配置为以视觉形式呈现信息的输出设备。具体而言,显示器642可以呈现图形用户界面(“GUI”)元素、文本、图像、视频、通知、虚拟按钮、虚拟键盘、消息传送数据、互联网内容、设备状态、时间、日期、日历数据、偏好、地图信息、位置信息以及能够以视觉形式呈现的任何其他信息。在一些配置中,显示器642是使用任何有源或无源矩阵技术和任何背光技术(如果使用的话)的液晶显示器(“LCD”)。在一些配置中,显示器642是有机发光二极管(“OLED”)显示器。考虑了其他显示器类型。
触摸屏644是被配置为检测触摸的存在和位置的输入设备。触摸屏644可以是电阻式触摸屏、电容式触摸屏、表面声波触摸屏、红外触摸屏、光学成像触摸屏、色散信号触摸屏、声学脉冲识别触摸屏,或者可以使用任何其他触摸屏技术。在一些配置中,触摸屏644被结合在显示器642的顶部作为透明层,以使得用户能够使用一个或多个触摸来与在显示器642上呈现的对象或其他信息进行交互。在其他配置中,触摸屏644是结合在不包括显示器642的计算设备的表面上的触摸板。例如,计算设备可以具有结合在显示器642顶部的触摸屏和与显示器642相对的表面上的触摸板。
在一些配置中,触摸屏644是单点触摸触摸屏。在其他配置中,触摸屏644是多点触摸触摸屏。在一些配置中,触摸屏644被配置为检测离散触摸、单点触摸手势和/或多点触摸手势。为方便起见,这些在本文中被统称为“手势”。现在将描述若干手势。应当理解,这些手势是说明性的,并不旨在限制所附权利要求的范围。此外,所描述的手势、附加手势和/或替代手势可以在软件中实现以便与触摸屏644一起使用。如此,开发人员可以创建特定于特定应用程序的手势。
在一些配置中,触摸屏644支持轻击手势,其中,用户在显示器642上呈现的项目上轻击触摸屏644一次。轻击手势可以出于各种原因使用,包括但不限于打开或启动用户轻击的任何内容,例如表示协作创作应用110的图形图标。在一些配置中,触摸屏644支持双击手势,其中,用户在显示器642上呈现的项目上轻击触摸屏644两次。双击手势可以出于各种原因使用,包括但不限于分阶段放大或缩小。在一些配置中,触摸屏644支持轻击并保持手势,其中,用户轻击触摸屏644并至少保持接触持续预先定义的时间。轻击并保持手势可以出于各种原因使用,包括但不限于打开特定于上下文的菜单。
在一些配置中,触摸屏644支持平移手势,其中,用户将手指置于触摸屏644上并在触摸屏644上移动手指的同时保持与触摸屏644的接触。平移手势可以出于各种原因使用,包括但不限于以受控速率移动屏幕、图像或菜单。还考虑了多个手指平移手势。在一些配置中,触摸屏644支持轻弹手势,其中,用户在用户想要屏幕移动的方向上滑动手指。轻弹手势可以出于各种原因使用,包括但不限于水平或垂直滚动通过菜单或页面。在一些配置中,触摸屏644支持捏合及伸展手势,其中,用户利用触摸屏644上的两个手指(例如,拇指和食指)进行捏合动作或者将两个手指移动分开。可以出于各种原因使用捏合及伸展手势,包括但不限于逐渐地放大或缩小网站、地图或图片。
尽管已经参考使用一个或多个手指来执行上述手势来呈现所述手势,但是诸如脚趾的其他附肢或诸如触笔的物体可以用于与触摸屏644进行交互。如此,上述手势应当被理解为是说明性的,不应当被解释为以任何方式进行限制。
数据I/O接口组件646被配置为有助于向计算设备输入数据以及从计算设备输出数据。在一些配置中,数据I/O接口组件646包括连接器,所述连接器被配置为在计算设备和计算机系统之间提供有线连接,例如,用于同步操作的目的。连接器可以是专有连接器或标准化连接器,例如USB、微型USB、迷你USB、USB-C等。在一些配置中,连接器是用于将计算设备与另一个设备(例如,扩展坞、音频设备(例如,数字音乐播放器)或视频设备)对接的对接连接器。
音频I/O接口组件648被配置为向计算设备提供音频输入和/或输出能力。在一些配置中,音频I/O接口组件646包括被配置用于收集音频信号的麦克风。在一些配置中,音频I/O接口组件648包括耳机插孔,其被配置用于为耳机或其他外部扬声器提供连接。在一些配置中,音频接口组件648包括用于输出音频信号的扬声器。在一些配置中,音频I/O接口组件648包括光学音频电缆输出。
视频I/O接口组件650被配置为向计算设备提供视频输入和/或输出能力。在一些配置中,视频I/O接口组件650包括视频连接器,其被配置为从另一个设备(例如,诸如DVD或蓝光播放器之类的视频媒体播放器)接收视频作为输入,或者将视频作为输出发送到另一个设备(例如,监测器、电视机或某个其他外部显示器)。在一些配置中,视频I/O接口组件650包括高分辨率多媒体接口(“HDMI”)、迷你HDMI、微型HDMI、显示端口或用于输入/输出视频内容的专有连接器。在一些配置中,视频I/O接口组件650或其部分与音频I/O接口组件648或其部分组合。
摄像头652可以被配置为捕捉静止图像和/或视频。摄像头652可以使用电荷耦合器件(“CCD”)或互补金属氧化物半导体(“CMOS”)图像传感器来捕捉图像。在一些配置中,摄像头652包括闪光灯以帮助在低光线环境下拍摄照片。摄像头652的设置可以实现为硬件或软件按钮。
尽管未示出,但一个或多个硬件按钮也可以包括在计算设备架构600中。硬件按钮可用于控制计算设备的一些操作方面。硬件按钮可以是专用按钮或多用途按钮。硬件按钮可以是机械按钮或基于传感器的。
示出的电源组件612包括一个或多个电池654,其可以连接到电池量表656。电池654可以是可充电的或一次性的。可再充电电池类型包括但不限于锂聚合物、锂离子、镍镉和镍金属氢化物。电池654中的每一者可以由一个或多个单元制成。
电池量表656可以被配置为测量电池参数,例如电流、电压和温度。在一些配置中,电池量表656被配置为测量电池的放电速率、温度、年龄和其他因素的影响,以预测在一定百分比误差内的剩余寿命。在一些配置中,电池量表656向应用程序提供测量结果,所述应用程序被配置为使用所述测量结果向用户呈现有用的电源管理数据。电源管理数据可包括以下各项中的一项或多项:所使用的电池百分比、电池剩余百分比、电池状况、剩余时间、剩余容量(例如,以瓦时为单位)、电流消耗以及电压。
电源组件612还可以包括电源连接器(未示出),其可以与前述I/O组件610中的一者或多者进行组合。电源组件612可以经由电源I/O组件与外部电源系统或充电设备对接。还可以使用其他配置。
鉴于以上所述,本文中提供的公开内容还涵盖以下条款中阐述的发明主题:
条款1:一种对使用系统资源的应用进行控制的计算机实现的方法,所述方法包括:监测对由多个应用对系统资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则:将使用所述系统资源的所述应用捆绑成资源组;以及在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对所述系统资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。
条款2:根据条款1所述的计算机实现的方法,其中,所述系统资源包括硬件资源。
条款3:根据条款1-2所述的计算机实现的方法,其中,所述系统资源包括软件资源。
条款4:根据条款1-3所述的计算机实现的方法,并且还包括:在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及如果所述过多的超量使用尚未发生,则从所述资源组中移除所述应用。
条款5:根据条款1-4所述的计算机实现的方法,其中,监测对使用的指示包括:在第二时间段上监测对所述系统资源的使用。
条款6:根据条款1-5所述的计算机实现的方法,其中,监测对使用的指示包括:通过针对预先确定的次数以预先确定的间隔对所述系统资源的使用进行采样来获得对所述系统资源的使用的多个采样;以及对所述采样进行聚合。
条款7:根据条款1-6所述的计算机实现的方法,并且还包括:在启动时创建多个工作对象,并且其中,资源组是工作对象。
条款8:根据条款1-7所述的计算机实现的方法,并且还包括:在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及如果所述过多的超量使用已经发生,则采取指定的动作。
条款9:根据条款1-8所述的计算机实现的方法,其中,采取所述指定的动作包括:设置关于直到在指定的时间之后或在指定的事件已经发生之后应用才被再次放入该资源组中的标志位。
条款10:根据条款1-9所述的计算机实现的方法,其中,采取所述指定的动作包括:增加所述应用在所述资源组中的时间量。
条款11:根据条款1-10所述的计算机实现的方法,其中,采取所述指定的动作包括:向至少一个人通知:过多资源消耗已经发生。
条款12:根据条款1-11所述的计算机实现的方法,其中,采取所述指定的动作包括:减少向所述资源组分配的所述使用率。
条款13:根据条款1-12所述的计算机实现的方法,其中,监测对系统资源的使用的指示包括:调用内核应用编程接口来查询资源利用。
条款14:根据条款1-13所述的计算机实现的方法,其中,所分配的资源使用率低于所述预先确定的使用门限。
条款15:一种对使用系统资源的应用进行控制的计算机实现的方法,所述方法包括:监测对由多个应用对系统资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则确定对所述系统资源的过多的超量使用是否已经发生;如果对所述系统资源的所述过多的超量使用尚未发生,则:将使用该资源的所述应用捆绑成资源组;以及在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对该资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。
条款16:根据条款15所述的计算机实现的方法,其中,所述系统资源包括硬件资源。
条款17:根据条款15-16所述的计算机实现的方法,其中,所述系统资源包括软件资源。
条款18:根据条款15-17所述的计算机实现的方法,其中,如果对所述系统资源的所述过多的超量使用已经发生,则还包括采取指定的动作。
条款19:根据条款15-18所述的计算机实现的方法,其中,监测对使用的指示包括:通过针对预先确定的次数以预先确定的间隔对所述系统资源的使用进行采样来获得对所述系统资源的使用的多个采样;以及对所述采样进行聚合。
条款20:根据条款15-19所述的计算机实现的方法,并且还包括:在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及如果所述过多的超量使用已经发生,则采取指定的动作。
条款21:根据条款15-20所述的计算机实现的方法,其中,监测对使用的指示包括:在第二时间段上监测对所述系统资源的使用。
条款22:根据条款15-21所述的计算机实现的方法,并且还包括:在启动时创建多个工作对象,并且其中,资源组是工作对象。
条款23:根据条款15-22所述的计算机实现的方法,其中,采取所述指定的动作包括:设置关于直到在指定的时间之后或在指定的事件已经发生之后应用才被再次放入该资源组中的标志位。
条款24:根据条款15-23所述的计算机实现的方法,其中,采取所述指定的动作包括:增加所述应用在所述资源组中的时间量。
条款25:根据条款15-24所述的计算机实现的方法,其中,采取所述指定的动作包括:提供关于过多资源消耗已经发生的通知。
条款26:根据条款15-25所述的计算机实现的方法,其中,采取所述指定的动作包括:减少向所述资源组分配的所述使用率。
条款27:根据条款15-26所述的计算机实现的方法,其中,所分配的资源使用率低于所述预先确定的使用门限。
条款28:根据条款15-27所述的计算机实现的方法,其中,监测对系统资源的使用的指示包括:调用内核应用编程接口来查询资源利用。
条款29:一种装置,包括:多个系统资源;处理器;以及具有存储在其上的计算机可执行指令的至少一个计算机可读存储介质,所述指令当由所述处理器执行时,使所述装置:运行多个应用;监测对由所述多个应用对所述多个系统资源中的系统资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则:将使用所述系统资源的所述应用捆绑成资源组;以及在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对该系统资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。
条款30:根据条款29所述的装置,其中,所述系统资源包括硬件资源。
条款31:根据条款29-30所述的装置,其中,所述系统资源包括软件资源。
条款32:根据条款29-31所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置:在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及如果所述过多的超量使用尚未发生,则从所述资源组中移除所述应用。
条款33:根据条款29-32所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置:在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及如果所述过多的超量使用已经发生,则采取指定的动作。
条款34:根据条款29-33所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置:在第二时间段上监测对所述系统资源的使用。
条款35:根据条款29-34所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置通过执行指令进行以下操作来在第二时间段上监测对所述系统资源的使用:通过针对预先确定的次数以预先确定的间隔对所述系统资源的使用进行采样来获得对所述系统资源的使用的多个采样;以及对所述采样进行聚合。
条款36:根据条款29-35所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置通过执行指令进行以下操作来采取所述指定的动作:设置关于直到在指定的时间之后或直到在指定的事件已经发生之后应用才被再次放入该资源组中的标志位。
条款37:根据条款29-36所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置通过执行指令进行以下操作来采取所述指定的动作:增加所述应用在所述资源组中的时间量。
条款38:根据条款29-37所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置提供关于过多系统资源消耗已经发生的通知。
条款39:根据条款29-38所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置在启动时创建多个工作对象,并且其中,资源组是工作对象。
条款40:根据条款29-39所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置:创建内核应用编程接口来查询系统资源利用;以及通过调用所述内核应用编程接口来监测对所述多个资源中的系统资源的使用的指示。
条款41:根据条款29-40所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置分配所述资源使用率以低于所述预先确定的使用门限。
条款42:一种具有存储在其上的计算机可执行指令的计算机可读存储介质,所述指令当由处理器执行时,使所述处理器:运行多个应用;监测对由所述多个应用对所述多个资源中的系统资源的使用的指示;确定所述对使用的指示是否超过预先确定的使用门限;如果所述对使用的指示超过所述预先确定的使用门限,则:将使用所述系统资源的所述应用捆绑成资源组;以及在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于的所述对该系统资源使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用。
条款43:根据条款42所述的计算机可读存储介质,其中,所述系统资源包括硬件资源。
条款44:根据条款42-43所述的计算机可读存储介质,其中,所述系统资源包括软件资源。
条款45:根据条款42-44所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器:在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及如果所述过多的超量使用尚未发生,则从所述资源组中移除所述应用。
条款46:根据条款42-45所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器:在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及如果所述过多的超量使用已经发生,则采取指定的动作。
条款47:根据条款42-46所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器在第二时间段上监测对所述系统资源的使用。
条款48:根据条款42-47所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器:通过执行指令进行以下操作来在第二时间段上监测对所述系统资源的使用:通过针对预先确定的次数以预先确定的间隔对所述系统资源的使用进行采样来获得对所述系统资源的使用的多个采样;以及对所述采样进行聚合。
条款49:根据条款42-48所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器通过执行指令进行以下操作来在第二时间段上监测对所述系统资源的使用:通过执行指令进行以下操作来采取所述指定的动作:设置关于直到在指定的时间之后或在指定的事件已经发生之后应用才被再次放入该资源组中的标志位。
条款50:根据条款42-49所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器通过执行指令进行以下操作来采取所述指定的动作:增加所述应用在所述资源组中的时间量。
条款51:根据条款42-50所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器提供关于过多资源消耗已经发生的通知。
条款52:根据条款42-51所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器在启动时创建多个工作对象,并且其中,资源组是工作对象。
条款53:根据条款42-52所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器创建内核应用编程接口来查询系统资源利用;以及通过调用所述内核应用编程接口来监测对所述多个资源中的系统资源的使用的指示。
条款54:根据条款42-53所述的计算机可读存储介质,其中,存储在其上的所述计算机可执行指令当由处理器执行时,还使所述处理器分配所述资源使用率以低于所述预先确定的使用门限。
应当领会,本文中描述的各种软件组件可以使用或结合以下各项来实现:二进制可执行文件、动态链接库(DLL)、API、网络服务、脚本文件、解释程序代码、软件容器、目标文件、适合即时(“JIT”)编译的字节码,和/或可以由处理器执行以执行本文中针对图1-图4描述的操作的其他类型的程序代码。也可以使用本文中未具体提及的其他类型的软件组件。
本文中已经公开了用于对使用系统资源的应用进行控制并保存那些系统资源的技术。尽管已经用特定于计算机结构特征、方法和变换动作,具体计算机器和计算机可读介质的语言描述了本文中呈现的发明主题,但应当理解,以上描述仅以说明或示例的方式提供,并且不应当被解释为限制性的。确切地说,公开了特定特征、动作和介质作为实现权利要求的示例性形式,并且可以对本文中描述的实施方式进行各种修改和改变,同时仍然在权利要求的真实精神和范围内。此外,应当领会,上述发明主题可以实现为计算机控制的装置、计算机过程、计算系统,或者诸如计算机可读存储介质之类的制品。因此,所附权利要求书中定义的发明主题不必限于本文中描述的具体特征、动作或介质。

Claims (15)

1.一种对使用系统资源的应用进行控制的计算机实现的方法,所述方法包括:
监测对由多个应用对系统资源的使用的指示;
确定所述对使用的指示是否超过预先确定的使用门限;
如果所述对使用的指示超过所述预先确定的使用门限,则:
将使用所述系统资源的具有相同应用类型的所述应用捆绑成资源组;
在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对所述系统资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用;以及
向节流器发送所分配的资源使用率、对所述资源组中的应用的指示以及对受制于所分配的资源使用率的所述系统资源的指示,通过收集所述资源组中的应用对所述系统资源的节流访问,所述发送使得所述节流器基于所分配的资源使用率限制对所述系统资源的使用,如同是调用所述系统资源的单个应用那样来对待所述资源组中的所述应用。
2.根据权利要求1所述的计算机实现的方法,并且还包括:
在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及
如果所述过多的超量使用尚未发生,则从所述资源组中移除所述应用。
3.根据权利要求1所述的计算机实现的方法,其中,监测对使用的指示包括:通过针对预先确定的次数以预先确定的间隔对所述系统资源的使用进行采样来获得对所述系统资源的使用的多个采样,以及对所述采样进行聚合。
4.根据权利要求1所述的计算机实现的方法,并且还包括:
在所述第一时间段之后,确定对所述系统资源的所述过多的超量使用是否已经发生;以及
如果所述过多的超量使用已经发生,则采取指定的动作。
5.根据权利要求4所述的计算机实现的方法,其中,采取所述指定的动作包括:设置关于直到在指定的时间之后或直到在指定的事件已经发生之后应用才被再次放入该资源组中的标志位。
6.根据权利要求4所述的计算机实现的方法,其中,采取所述指定的动作包括:增加所述应用在所述资源组中的时间量。
7.一种对使用系统资源的应用进行控制的计算机实现的方法,所述方法包括:
监测对由多个应用对系统资源的使用的指示;
确定所述对使用的指示是否超过预先确定的使用门限;
如果所述对使用的指示超过所述预先确定的使用门限,则确定对所述系统资源的过多的超量使用是否已经发生;
如果对所述系统资源的所述过多的超量使用尚未发生,则:
将使用所述系统资源的具有相同应用类型的所述应用捆绑成资源组;
在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对所述系统资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用;以及
向节流器发送所分配的资源使用率、对所述资源组中的应用的指示以及对受制于所分配的资源使用率的所述系统资源的指示,通过收集所述资源组中的应用对所述系统资源的节流访问,所述发送使得所述节流器基于所分配的资源使用率限制对所述系统资源的使用,如同是调用所述系统资源的单个应用那样来对待所述资源组中的所述应用。
8.根据权利要求7所述的计算机实现的方法,其中,如果对所述系统资源的所述过多的超量使用尚未发生,则还包括采取指定的动作。
9.根据权利要求7所述的计算机实现的方法,其中,监测对使用的指示包括:通过针对预先确定的次数以预先确定的间隔对所述系统资源的使用进行采样来获得对所述系统资源的使用的多个采样,以及对所述采样进行聚合。
10.一种装置,包括:
多个系统资源;
处理器;以及
具有存储在其上的计算机可执行指令的至少一个计算机可读存储介质,所述指令当由所述处理器执行时,使所述装置:
运行多个应用;
监测对由所述多个应用对所述多个系统资源中的系统资源的使用的指示;
确定所述对使用的指示是否超过预先确定的使用门限;
如果所述对使用的指示超过所述预先确定的使用门限,则
将使用所述系统资源的具有相同应用类型的所述应用捆绑成资源组;
在第一时间段内向所述资源组分配资源使用率,所分配的资源使用率低于所述对所述系统资源的使用的指示,并且所分配的资源使用率共同应用于所述资源组中的所述应用;以及
向节流器发送所分配的资源使用率、对所述资源组中的应用的指示以及对受制于所分配的资源使用率的所述系统资源的指示,通过收集所述资源组中的应用对所述系统资源的节流访问,所述发送使得所述节流器基于所分配的资源使用率限制对所述系统资源的使用,如同是调用所述系统资源的单个应用那样来对待所述资源组中的所述应用。
11.根据权利要求10所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置:
在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及
如果所述过多的超量使用尚未发生,则从所述资源组中移除所述应用。
12.根据权利要求10所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置:
在所述第一时间段之后,确定对所述系统资源的过多的超量使用是否已经发生;以及
如果所述过多的超量使用已经发生,则采取指定的动作。
13.根据权利要求10所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置通过执行指令进行以下操作来在第二时间段上监测对所述系统资源的使用:
通过针对预先确定的次数以预先确定的间隔对所述系统资源的使用进行采样来获得对所述资源的使用的多个采样;以及
对所述采样进行聚合。
14.根据权利要求10所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置通过执行指令进行以下操作来采取所述指定的动作:设置关于直到在指定的时间之后或在指定的事件已经发生之后应用才被再次放入该资源组中的标志位。
15.根据权利要求10所述的装置,其中,所述至少一个计算机可读存储介质上的所述计算机可执行指令还使所述装置通过执行指令进行以下操作来采取所述指定的动作:增加所述应用在所述资源组中的时间量。
CN201780027204.6A 2016-05-03 2017-04-26 对使用系统资源的应用的控制 Active CN109074286B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/145,000 US10574554B2 (en) 2016-05-03 2016-05-03 Control of applications that use system resources
US15/145,000 2016-05-03
PCT/US2017/029545 WO2017192326A1 (en) 2016-05-03 2017-04-26 Control of applications that use system resources

Publications (2)

Publication Number Publication Date
CN109074286A CN109074286A (zh) 2018-12-21
CN109074286B true CN109074286B (zh) 2022-01-25

Family

ID=58708020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780027204.6A Active CN109074286B (zh) 2016-05-03 2017-04-26 对使用系统资源的应用的控制

Country Status (4)

Country Link
US (1) US10574554B2 (zh)
EP (1) EP3452907B1 (zh)
CN (1) CN109074286B (zh)
WO (1) WO2017192326A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10104199B2 (en) 2016-05-27 2018-10-16 Bank Of America Corporation Three-way communication link for information retrieval and notification
US10038644B2 (en) * 2016-05-27 2018-07-31 Bank Of America Corporation Communication system for resource usage monitoring
US10154101B2 (en) 2016-05-27 2018-12-11 Bank Of America Corporation System for resource usage monitoring
US10445208B2 (en) * 2017-06-23 2019-10-15 Microsoft Technology Licensing, Llc Tunable, efficient monitoring of capacity usage in distributed storage systems
US10721294B2 (en) 2017-07-12 2020-07-21 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for subscription-based resource throttling in a cloud environment
US10831368B2 (en) * 2017-12-14 2020-11-10 At&T Intellectual Property I, L.P. Local storage memory management for a mobile device
CN110121188B (zh) * 2018-02-07 2023-03-31 成都鼎桥通信技术有限公司 一种高负荷告警方法
US10931513B2 (en) * 2019-01-31 2021-02-23 Cisco Technology, Inc. Event-triggered distributed data collection in a distributed transaction monitoring system
US11874722B2 (en) * 2021-08-02 2024-01-16 Dell Products L.P. Applying modern standby configurations on a per-application basis
CN114780170B (zh) * 2022-04-11 2023-07-21 远景智能国际私人投资有限公司 容器资源的配置方法、装置、设备及存储介质
US11909646B2 (en) * 2022-06-23 2024-02-20 Microsoft Technology Licensing, Llc Controlling network throughput using application-level throttling

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1426861A2 (en) * 2002-12-03 2004-06-09 Sun Microsystems, Inc. Resource management system in user-space
CN102656564A (zh) * 2009-12-15 2012-09-05 国际商业机器公司 降低应用处理中的开销
US8732307B1 (en) * 2006-07-25 2014-05-20 Hewlett-Packard Development Company, L.P. Predictive control for resource entitlement

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7519725B2 (en) 2003-05-23 2009-04-14 International Business Machines Corporation System and method for utilizing informed throttling to guarantee quality of service to I/O streams
US7784054B2 (en) 2004-04-14 2010-08-24 Wm Software Inc. Systems and methods for CPU throttling utilizing processes
US7458066B2 (en) * 2005-02-28 2008-11-25 Hewlett-Packard Development Company, L.P. Computer system and method for transferring executables between partitions
US8341637B2 (en) * 2008-08-12 2012-12-25 International Business Machines Corporation Utilization management
US8930953B2 (en) * 2009-01-16 2015-01-06 International Business Machines Corporation Dynamic checking of hardware resources for virtual environments
US20110238857A1 (en) 2010-03-29 2011-09-29 Amazon Technologies, Inc. Committed processing rates for shared resources
US8190593B1 (en) 2010-04-14 2012-05-29 A9.Com, Inc. Dynamic request throttling
US20120260259A1 (en) 2011-04-06 2012-10-11 Microsoft Corporation Resource consumption with enhanced requirement-capability definitions
US8615589B1 (en) * 2011-06-27 2013-12-24 Amazon Technologies, Inc. Resource optimization recommendations
US9450873B2 (en) 2011-06-28 2016-09-20 Microsoft Technology Licensing, Llc Performance isolation for clouds
US8881164B2 (en) * 2011-10-18 2014-11-04 Hewlett-Packard Development Company, L.P. Computer process with utilization reduction
US8782224B2 (en) 2011-12-29 2014-07-15 Joyent, Inc. Systems and methods for time-based dynamic allocation of resource management
US10365950B2 (en) 2011-12-30 2019-07-30 Veritas Technologies Llc Resource throttling and automated policy management in a virtual machine environment
US8762525B2 (en) * 2012-03-08 2014-06-24 International Business Machines Corporation Managing risk in resource over-committed systems
US8707254B2 (en) 2012-04-06 2014-04-22 Microsoft Corporation Service level objective for cloud hosted applications
US8904204B2 (en) 2012-06-29 2014-12-02 International Business Machines Corporation Managing computing resources through aggregated core management
US9063795B2 (en) 2012-12-19 2015-06-23 International Business Machines Corporation Adaptive resource usage limits for workload management
US9311149B2 (en) 2012-12-21 2016-04-12 International Business Machines Corporation Processor provisioning by a middleware processing system
US9807014B2 (en) 2013-09-27 2017-10-31 International Business Machines Corporation Reactive throttling of heterogeneous migration sessions in a virtualized cloud environment
US9749208B2 (en) 2014-06-30 2017-08-29 Microsoft Technology Licensing, Llc Integrated global resource allocation and load balancing
US10389809B2 (en) * 2016-02-29 2019-08-20 Netapp, Inc. Systems and methods for resource management in a networked environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1426861A2 (en) * 2002-12-03 2004-06-09 Sun Microsystems, Inc. Resource management system in user-space
US8732307B1 (en) * 2006-07-25 2014-05-20 Hewlett-Packard Development Company, L.P. Predictive control for resource entitlement
CN102656564A (zh) * 2009-12-15 2012-09-05 国际商业机器公司 降低应用处理中的开销

Also Published As

Publication number Publication date
US20170324633A1 (en) 2017-11-09
US10574554B2 (en) 2020-02-25
CN109074286A (zh) 2018-12-21
EP3452907A1 (en) 2019-03-13
EP3452907B1 (en) 2022-09-21
WO2017192326A1 (en) 2017-11-09

Similar Documents

Publication Publication Date Title
CN109074286B (zh) 对使用系统资源的应用的控制
EP3449382B1 (en) Document collaboration discovery
CA2783223C (en) Global recently used files list
US20130124605A1 (en) Aggregating and presenting tasks
US11209805B2 (en) Machine learning system for adjusting operational characteristics of a computing system based upon HID activity
EP3350977A1 (en) Smart notifications
US20180025731A1 (en) Cascading Specialized Recognition Engines Based on a Recognition Policy
US11797481B2 (en) Locating files using a durable and universal file identifier
US11956239B2 (en) Identity misconfiguration detection for role-based access control
EP3311274B1 (en) Seamless transitions between applications and devices
US11032180B2 (en) Substituting window endpoints using a health monitor
WO2018022302A1 (en) Simplified configuration of computing devices for use with multiple network services
EP3718006B1 (en) Resumption of activities using activity data collected by an operating system
US10891385B2 (en) Encryption at rest for cloud-resourced virtual machines
US11599828B2 (en) Management and operation of loosely coupled internet of things devices
EP3353992A1 (en) Data autorouting framework for data formats conversion
US10884583B2 (en) Suppressing the collection of activity data by an operating system

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