CN117999541A - 基于资源消耗的动态策略调整 - Google Patents
基于资源消耗的动态策略调整 Download PDFInfo
- Publication number
- CN117999541A CN117999541A CN202280065096.2A CN202280065096A CN117999541A CN 117999541 A CN117999541 A CN 117999541A CN 202280065096 A CN202280065096 A CN 202280065096A CN 117999541 A CN117999541 A CN 117999541A
- Authority
- CN
- China
- Prior art keywords
- plug
- computing device
- task
- resource consumption
- data
- 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 254
- 230000008569 process Effects 0.000 claims abstract description 205
- 230000015654 memory Effects 0.000 claims abstract description 49
- 238000003860 storage Methods 0.000 claims abstract description 47
- 238000012544 monitoring process Methods 0.000 claims abstract description 21
- 238000012549 training Methods 0.000 claims description 50
- 238000010801 machine learning Methods 0.000 claims description 16
- 239000013598 vector Substances 0.000 claims description 10
- 238000011156 evaluation Methods 0.000 claims description 6
- 238000011867 re-evaluation Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 12
- 230000006399 behavior Effects 0.000 description 11
- 238000013179 statistical model Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 108010041420 microbial alkaline proteinase inhibitor Proteins 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000013486 operation strategy Methods 0.000 description 1
- 238000012015 optical character recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000000275 quality assurance Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000002618 waking 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种计算机存储介质,该计算机可读介质上存储有指令,该指令在由包括处理器和存储器的计算设备执行时,使计算设备:由运行在计算设备上的第一进程接收到来任务;由运行在计算设备上的第二进程加载与到来任务的类型相对应的插件;在第二进程中执行插件以处理到来任务;由与第一进程相关联的资源管理器监测插件的多个资源消耗度量;以及基于插件的资源消耗度量来控制第二进程。
Description
背景技术
许多软件应用和软件服务可由第一方开发者和第三方开发者通过插件应用编程接口(application programming interface,API)进行扩展。例如,网络浏览器插件或“扩展”向网络浏览器应用添加特征(诸如密码管理、网页存档和网页修改,以提高可访问性或添加功能),并且图像编辑插件可以向图像编辑应用添加特征(诸如附加的滤波器、元数据编辑器和其他特征)。
可扩展软件服务的一个示例是索引服务,索引服务解析与索引服务可访问(例如,在附接的存储设备上或可经由网络连接访问)的各种文档(例如,文件系统上的文件、电子邮件)相关联的元数据和内容数据,并且存储关于解析后的元数据和内容数据的信息(例如,在数据库中)。然后,所存储的信息使文档搜索软件(例如,桌面搜索软件)能够通过在数据库中执行查找,而不是在查询时搜索底层内容,从而以搜索结果列表快速地响应查询。索引服务的示例包括中的索引服务、/>MacOS和/>中的/>中的AppSearch以及Linux和其他类Unix系统中的Recoll和Tracker。特别地,插件通过在每个文件类型的基础上使用专门的插件而使索引服务能够处理各种各样的文件类型。当在计算机系统上安装新的软件应用(或“app”)时,也可以安装新的插件,以便索引服务可以索引新应用所存储的数据,使得如果相关的话,可以将该数据包括在响应于搜索查询的搜索结果当中。
正是考虑到这些因素和其他因素才进行举例。此外,尽管已经讨论了相对具体的问题,但是应当理解,示例不应限于解决在背景技术中认定的具体问题。
发明内容
提供本概述是为了以简化的形式介绍将在下面的详细描述部分中进一步描述的一系列概念。本概述不旨在认定所要求保护的主题的关键特征或必要特征,也不旨在帮助确定所要求保护的主题的范围。
如上所讨论的,出于各种原因,插件可能是软件应用的有用特征。然而,这些插件可能由于插件中包含的错误或恶意代码而无法按预期执行。例如,插件有时以非用户友好或不容易操作的方式表现,诸如消耗过多资源(例如,CPU时间、内存、能量以及诸如大容量存储装置或网络等设备上的输入/输出带宽),从而导致计算设备在用户尝试完成其他工作时挂起。相应地,为了帮助解决这些对计算性能的负面影响,本技术的示例可以监测插件以检测非预期的行为。基于检测到的行为,该技术可以暂停、重新调度、降低优先级或以其他方式控制对这种插件的运行。结果,通过阻止来自插件的负面影响或主动控制这种插件以降低或最小化这种行为不当插件对计算系统的(人类)用户的影响,计算性能得以提高并且计算资源得以以对计算系统产生总体改进的方式进行分配。
在一个示例中,本技术可以用于管理插件的运行,其中插件资源管理器(或中央资源管理器)可以单独地或组合地实施各种技术。在一些示例中,插件资源管理器向插件发送查询,其中插件API要求插件在指定的确认(“ACK”)超时时段内对查询进行响应或ACK。对查询的响应失败(或对查询的ACK失败)指示插件行为不当,而在一些示例中,插件资源管理器在检测到ACK超时时段内的多个这种ACK失败之后禁用插件。在一些示例中,插件资源管理器将插件彼此隔离,诸如通过基于插件的类型在不同的操作系统级进程中运行插件和/或通过在每个进程一个插件的基础上在单独的操作系统级进程中运行不同的插件来将插件彼此隔离。
插件资源管理器还可以或者替代地监测每个插件在运行期间所使用的资源消耗度量(例如,CPU、内存和输入/输出操作)。所收集的每个插件的遥测数据或度量可以在多个计算设备之间在插件的多次运行之间进行汇总。在一些示例中,遥测数据或度量用于确定插件的未来运行策略(例如,调度资源密集型插件在一天中用户不活动或计算设备不执行资源密集型任务(诸如运行计算机游戏)的特定时间运行)。
一个或多个方面的细节在下面的附图和描述中阐述。通过阅读以下详细描述和查看相关附图,其他特征和优点将显而易见。应当理解,以下详细描述仅是说明性的,并不限制所要求保护的本发明。
附图说明
并入本公开并构成本公开一部分的附图示出了本发明的各个方面。在附图中:
图1是在计算设备上的主机应用或服务进程中运行的插件资源管理器的示例示意框图。
图2A是描绘根据本公开的一个示例的用于监测插件和管理插件的运行的方法的流程图。
图2B是描绘根据本公开的一个示例的用于通过作为插件运行的一部分向插件请求确认(ACK)来监测插件的方法的流程图。
图3A是在计算设备上的主机应用或服务进程中运行的插件资源管理器的示例示意框图。
图3B是在计算设备上的主机应用或服务进程中运行的插件资源管理器的另一示例示意框图。
图3C是在计算设备上的主机应用或服务进程中运行的插件资源管理器的另一示例示意框图。
图4A是描绘根据本公开的一个示例的用于在运行期间监测插件的计算资源消耗度量的方法的流程图。
图4B是描绘根据本公开的一个示例的用于基于所收集的插件数据来训练用于预测插件的运行策略的模型的方法的流程图。
图4C是描绘根据本公开的一个示例的用于基于根据基于插件的历史行为而确定的插件执行策略来设置任务的优先级从而更新队列的方法的流程图。
图4D是描绘根据本公开的示例的用于控制插件进程的方法的流程图。
图5是示出可以实践本发明的各方面的计算设备的示例物理组件的框图。
图6A和图6B是可以实践本发明的各方面的移动计算设备的简化框图。
图7是其中可以实践本发明的各方面的分布式计算系统的简化框图。
具体实施方式
以下详细描述参考了附图。在可能的情况下,在附图和以下描述中使用相同的附图标记来指代相同或相似的元素。虽然可能描述了本发明的各方面,但是修改、改编和其他实施也是可能的。例如,可以对附图中示出的元素进行替换、添加或修改,并且可以通过对所公开的方法进行替换、重新排序或添加阶段来修改本文描述的方法。相应地,以下详细描述并不限制本发明,相反,本发明的适当范围由所附权利要求限定。示例可以采取硬件实施、或完全软件实施、或结合软件方面和硬件方面的实施的形式。因此,以下详细描述不应被视为限制性的。
本技术涉及用于管理插件、扩展等的运行的系统和方法,包括基于观察到的被管理软件的资源消耗来动态地调整策略。如上所述,许多软件应用和软件服务通过插件或扩展应用编程接口来提供可扩展性。这些插件或扩展提供了用于扩展软件应用或服务(诸如通过向网络浏览器添加特征、向图像编辑应用添加图像处理滤波器以及扩张可以由索引服务索引的数据对象的类型(例如,文件和其他文档)来扩展)的功能的模块化系统。
插件有时以非用户友好或不容易操作的方式表现,诸如消耗过多资源(例如,CPU时间、内存、能量以及诸如大容量存储装置或网络等设备上的输入/输出带宽),从而导致计算设备在用户尝试完成其他任务时挂起。插件进程本身也可能崩溃或挂起,从而中断运行其他插件或执行较高级任务的进程(例如,插件在尝试索引一个文档时挂起或崩溃可能阻止索引器继续索引其他项目)。此外,插件可能消耗系统资源,而对用户没有任何好处(例如,恶意软件被设计成挪用计算机系统资源,以诸如为操作该恶意软件的恶意行为者挖掘加密货币)。
相应地,为了帮助解决这些对计算性能的负面影响,本技术的示例可以监测插件以检测非预期的行为(诸如但不限于上述行为)。基于检测到的行为,该技术可以暂停、重新调度、降低优先级或以其他方式控制对这种插件的运行。结果,通过阻止来自插件的负面影响或主动控制这种插件以降低或最小化这种行为不当插件对计算系统的(人类)用户的影响,计算性能得以提高并且计算资源得以以对计算系统产生总体改进的方式进行分配。
虽然本技术的一些方面是在管理由用于对文档进行索引的索引服务所管理的插件的上下文中呈现的,但是本技术不限于此。特别地,本公开的示例还可以应用于在其他软件应用和软件服务(诸如由网络浏览器运行的网络浏览器插件、脚本和后台软件(例如,在例如JavaScript和/或WebAssembly中实施的网络浏览器服务工作者))、系统级服务等的上下文中监测和控制插件或其他软件扩展的运行。
运行在计算设备上的索引器服务在执行数据库更新的过程中可能遇到各种各样的文档,其中这些文档可以以第一方或第三方开发者(例如,除维护索引软件服务的实体之外的实体)所开发的各种专有格式来存储信息。文档可以是利用应用创建的独立工作,并且可以具有文件系统内的唯一文件名或数据存储内的其他唯一标识符,其中文档与指示文档的格式(或文件格式)的文档类型(例如,如由文件名中的扩展名和/或由文件中的概要或其他标题信息所指示的)相关联。这种文件格式的示例包括文字处理文档存储格式(例如,可移植文档格式(Portable Document Format,PDF)、DjVu、Word(DOCX)、开放文档格式(OpenDocument Format,ODF)、/>Pages等)、视频存储格式(例如,avi、mkv等)和档案文件格式(例如,7z、cab、rar、tar、zip等)。每种不同的文件格式或数据格式可能要求专门的解析器或其他机制从这些格式的文档中提取元数据和内容数据。然而,为每种可能的数据格式维护专门的解析器是一项有意义的且耗费资源的任务。
插件框架通过将数据提取委托给专门设计成处理特定类型文档的专门插件来缓解维护大量解析器的问题。相应地,索引器可以通过将元数据和内容的提取委托给用于该文档类型的对应插件而从索引进程中遇到的文件中索引元数据和内容,其中插件根据所定义的应用编程接口(API)向索引器返回数据。在索引服务的上下文中,这些插件可以称为属性处理程序(例如,实施IPropertyStore接口以从文档中提取属性或元数据)和滤波器处理程序(例如,实施IFilter接口以从文档中提取内容),而在或/>服务的上下文中,这些插件可以称为导入器。文件类型可以由其扩展名(例如,文件名的最后一部分,其前面通常有句点或圆点“.”)和/或其他类型标识符(例如,在对/>操作系统使用的文件系统的情况下为“统一类型标识符”)来标识。
这些用于从各种文件类型中提取数据的插件可以由对索引这些文档类型感兴趣的各方来开发。例如,第三方应用可以以专有数据格式来存储数据,并且第三方应用的开发者可以创建和维护用于解析该专有文件格式的索引器插件。第一方也可以为常用文件格式(例如,JPEG图像)提供插件。然而,如上所述,插件有时可能由于实施插件时的缺陷或错误、解析特定文档时的困难(例如,文档大、复杂和/或被损坏)或插件开发者的实际恶意意图(例如,作为插件交付的恶意软件)而行为不当。
这样,本技术的示例涉及用于监测插件的活动和管理插件的执行或运行以提高计算性能并降低或最小化行为不当插件对用户与计算系统进行交互时的体验的影响的系统和方法。在一些示例中,插件资源管理器通过在插件正在运行时向插件请求确认(ACK)(以检查插件是否挂起)以及通过测量和记录插件在运行时所消耗的计算资源等级(例如,CPU时间、内存用量、输入/输出带宽用量、所使用的线程数量)来监测插件的活动。在一些示例中,插件资源管理器通过终止未能响应的插件、禁用有问题或行为不当的插件以及基于历史资源用量和用户活动模式调度或设置插件上的优先级来管理插件的运行。例如,可以调度资源密集型插件在计算设备连接到外部电源且屏幕由于计算设备没有被人主动操作或使用而关闭的时间段期间运行。作为另一示例,生成计算设备的用户所频繁访问的数据的插件可以被优先化,以更频繁地运行和/或即使在计算设备处于负载下时也运行,因为该数据与用户直接相关(例如,主动索引用户正在频繁访问的文档)。
图1是根据本公开的示例的在计算设备上的主机应用或服务进程中运行的插件资源管理器的示意框图,其中插件资源管理器管理一个或多个工作者进程对一个或多个插件的运行。在图1所示的示例系统架构中,到来的任务或事件102由与应用或服务相关联的第一进程或父进程接收。如本文所使用的,术语“任务”可以指可以被添加到队列中且被委托给工作者进程或线程的计算工作的离散单元。任务的示例包括由日志系统接收的日志事件(例如,信息、警告和错误)以及由网络服务器接收的超文本传输协议(hypertext transferprotocol,HTTP)请求。在索引服务108运行在包括处理器和存储器的计算设备(例如,客户端设备)上的情况下,到来的任务或事件102可以是与存储在计算设备可访问的文件系统上的数据更改相关的文件系统更改事件(例如,当在操作系统上使用/>Windows NT文件系统(NT file system,NTFS)时来自更新序列号(Update Sequence Number,USN)日记或更改日记)),或者与计算设备可访问的位置(例如,远程网络位置,诸如网站)处的数据更改相关的更改事件。
任务调度器104将接收的任务102添加到队列106。队列106可以是优先级队列,其中任务调度器向任务102指派优先级值,并且基于所指派的优先级值来布置队列中的任务。任务调度器104可以由第一进程(例如,与应用或服务(诸如索引服务108)相关联的主进程)运行。然后,队列上的任务可以由被配置为处理特定类型任务的插件110(例如,处理程序)来处理。在索引器的情况下,每个任务102可以对应于特定的文档或文档部分,其中任务的类型对应于文档的文件类型或文档格式(例如,Microsoft文档,可移植文档格式文档,由例如/>消息应用编程接口(Messaging Application ProgrammingInterface,MAPI)呈现的或以诸如Maildir或mbox等格式存储在用户目录中的电子邮件文档)。
在图1所示的架构中,当处理特定任务102a时,将该任务提供给第二进程112(例如,第一进程的子进程),第二进程112运行被配置为处理该特定任务的插件110a。插件110a可以是多个插件110(例如,包括插件110B和110C,如图1所示)当中的一个插件,其中不同的插件被配置为执行不同类型的任务。例如,在索引器的情况下,任务可以是从PDF文件中提取内容,在这种情况下,第二进程运行被配置为读取PDF文件的插件A 110A以便从PDF文件中提取内容(例如,属性和文本)。其他插件(插件B 110B和插件C 110C)可以配置为从其他类型的文件(诸如文档(DOCX)和压缩档案(诸如ZIP文件)中提取数据。插件A 110A可以产生供应回第一进程的结果或返回值——例如,从与任务102a相关联的文档中提取的内容可以被返回给索引服务108以添加到索引器数据库114中。
如上所述,插件有时可能因消耗计算设备的过多计算资源、挂起或执行恶意操作而行为不当。这些可能包括彻头彻尾的恶意插件(例如,恶意软件)、可能崩溃或挂起的插件以及消耗过多资源的长时间运行的插件。因此,插件资源管理器120或更一般的资源管理器120可以被配置为监测和管理插件的运行。特别地,一些示例可以提供插件隔离特征,这有助于隔离(例如,沙盒化)、监测和控制这些插件的运行。
系统架构的上述描述仅仅旨在为解释本公开的示例提供上下文。然而,本公开的示例不限于此,并且还可以应用于其他上下文中以及不同的软件架构,而不脱离本公开的示例的精神和范围。
图2A是描绘根据本公开的一个示例的用于监测插件和管理插件的运行的方法200的流程图。更详细地,当处理任务时,在第一进程(例如,索引器进程108)中运行的主机应用或主机服务在操作202中确定用于该任务的插件是否已经被加载到插件进程112(例如,第二进程或子进程)中。如果否,则在操作204中,控制第二进程112加载用于处理该任务的插件。如果在操作220处,插件已经被加载,则方法200流向操作206。
在操作206中,插件资源管理器120开始监测插件进程112,包括收集与插件相关联的资源消耗度量。在操作208中,插件进程112运行插件以处理任务,同时插件资源管理器120监测其运行。在操作210中,插件资源管理器120基于运行插件的插件进程112的受监测的资源消耗度量来控制插件的运行,诸如通过限制插件进程112被准许使用的CPU周期或内存、终止挂起的进程等来控制插件的运行,如下更详细描述的。
图2B是描绘根据本公开的一个示例的用于通过作为插件运行的一部分向插件请求ACK来监测插件的资源消耗度量的方法250的流程图。更详细地,内部看门狗进程(例如,插件资源管理器120)监测一个或多个插件进程112的ACK,ACK可以经由进程间通信(inter-process communication,IPC)信道(诸如进程间信号)、套接字(例如,网络接口)、消息队列、管道(命名的或匿名的)、消息传递(例如,公共对象模型(Common Object Model,COM)等而传输到插件资源管理器120。在一些示例中,插件资源管理器120经由IPC机制主动向插件进程112请求ACK。在一些示例中,与插件相关联的API期望根据诸如向插件交付任务或向插件交付数据块等事件来发送ACK(例如,待处理的文件或数据流可以被划分成一个或多个数据块,并且可以期望ACK在向插件请求每个数据块之前和之后)。
在方法250的操作252中,事件经由IPC信道被发送到由插件进程112运行的插件110A。在各种示例中,事件可以对应于针对ACK的显式查询或隐式查询,隐式查询的形式为新交付给插件110A的任务102A、交付给插件110A的数据块、或者在插件110A请求新任务或数据块之前和/或之后。在操作254中,插件资源管理器120基于事件的时间戳(例如,自事件被发送到插件进程以来经过的时间量)来设置确认超时时段(或ACK超时时段,诸如两分钟)。在操作256中,插件资源管理器120确定在超时时段内是否从插件110A接收到ACK。如果在超时时段内接收到ACK,则认为该插件表现正常或在正常参数范围内,并且该过程结束或重复。如果插件资源管理器120在超时时段内没有接收到ACK,则在操作258中,插件资源管理器120更新或递增与插件相关联的行为不当计数器(例如,初始设置为0)(例如,将行为不当计数器的值增加1)。在一些示例中,行为不当计数器可以被初始设置为正数,并且可以朝向诸如0或其等价物之类的阈值递减。在操作260中,插件资源管理器120确定计数器是否已经达到行为不当事发的阈值或阈值数量(例如,阈值为3)。如果还没有达到或满足阈值,则方法250结束(或重复)将行为不当计数器更新为新值。如果已经满足阈值,则在操作262中,插件资源管理器120将插件标记或标示为行为不当插件,并且该过程结束。
在一些示例中,当在超时时段内没有接收到ACK时,该插件被终止(例如,运行该插件的插件进程被终止)。在一些示例中,在操作262中被标记为行为不当插件的插件不再运行(例如,被禁用或封锁),使得与行为不当插件相关联的任务或者被丢弃(并且不被处理),或者被推迟到行为不当或高消耗插件可以运行的低用量时间。例如,任务调度器104可以忽略或丢弃任务(例如,不指派任务),或者向将由行为不当插件处理的任务指派低优先级。在索引器的情况下,可以不再加载与特定文件类型相关联的行为不当插件,并且可以避免针对特定类型的数据项或文档进行内容或属性提取,但是仍然可以通过其他机制(例如,与元数据提取而不是提取文档内容相关联的其他非行为不当插件)来提取基本属性和元数据,并且仍然可以将这些基本属性和元数据添加到索引器数据库114。
在一些示例中,任务调度器104根据与行为不当插件相关联的策略来运行行为不当插件,诸如通过在计算资源更有可能可用的稍后时间运行行为不当插件,而不会对活动用户造成负面影响。例如,稍后时间可以是没有用户活动时、计算设备在屏幕关闭(例如,屏幕待机)的情况下插入外部电源时和/或在一天中的特定时间(例如,夜间)。稍后时间也可以基于要求行为不当插件进行处理的积压任务数量。例如,一旦积压任务数量超过阈值,行为不当插件就可以在队列中被赋予较高优先级。
在一些示例中,插件资源管理器120配置使用回退插件或回退处理程序来代替行为不当插件处理任务,不然这些任务将由行为不当插件处理。当与行为不当插件比较时,回退插件或回退处理程序可能具有减少的或有限的功能,诸如仅从文档而不是底层内容中提取元数据,或者将内容的提取限于文档中的文本串(例如,不对文档内存储的手稿或图像执行文本识别或光学字符识别,因为这些操作可能比提取文本串更复杂且计算量更大)。通过基于检测之前的行为不当来控制插件或扩展的运行,行为不当插件对计算设备的响应性的影响被降低或者以其他方式被最小化。
在图1所示的示例中,多个插件110(包括插件110A、插件110B和插件110C)被示为由同一插件进程112运行或执行。然而,本公开的示例不限于此,并且在一些示例中,插件通过在两个或更多个单独的进程中运行而彼此隔离,如下参考图4B和图4C所描述的。
图3A是在计算设备上的主机应用或服务进程中运行的插件资源管理器的示意框图。根据本公开的示例,插件资源管理器管理对一个或多个插件的运行,并且基于插件的插件类型将每个插件指派给对应的工作者进程或插件进程。图3A中相同的附图标记指代上面参考图1描述的相同组件,并且本文中将不再重复其描述。
在图3A所示的示例中,三个不同的插件进程112(插件进程A112A、插件进程B 112B和插件进程C 112C)用于运行五个不同的插件110(插件A 110A、插件B 110B、插件C 110C、插件D 110D和插件E 110E)。基于插件的插件类型或插件分类将它们指派给不同的插件进程112用于运行。在一些示例中,第一方插件由第一插件进程运行(例如,插件A 110A和插件B 110B由插件进程A 112A运行),其中认为这些插件是高质量的且不太可能行为不当,而可信的第三方插件(例如,已经过质量保证评估和测试的插件)可以由第二进程运行(例如,插件C 110C由插件进程B 112B运行)。未知或未测试的插件可以由第三插件进程运行(例如,插件D 110D和插件E 110E由插件进程C 112C运行),以便隔离行为不当概率可能较高的插件的影响。
作为另一示例,不同的插件可以基于插件所执行的功能来分离。作为一个示例,在Search中的索引器的上下文中,插件进程A 112A被配置为运行所有定制的属性处理程序(例如,实施IPropertyStore接口),插件进程B 112B被配置为运行所有定制的滤波器处理程序(例如,实施IFilter接口),并且插件进程C 112C被配置为运行所有其他处理程序(例如,特殊情况,诸如可以直接加载和运行滤波器处理程序的定制的协议处理程序)。
通过将不同类型的插件隔离在单独的进程中,导致运行插件的进程挂起的行为不当插件将降低对其他进程中的插件运行的影响。例如,如果插件D 110D崩溃或者导致插件进程C 112C挂起或崩溃,则由插件进程A 112A和插件进程B 112B运行的插件仍然可以运行,从而使将由插件A 110A、插件B 110B或插件C 110C处理的队列106上的任务102能够在插件D 110D所导致的插件进程C 112C的挂起或崩溃期间继续被处理。
插件资源管理器120可以通过经由插件资源管理器120与插件进程112之间的IPC等待来自正在运行的插件的ACK而以类似于上面关于图2B描述的方式监测图3A所示的插件的运行。这样,当插件未能在超时时段内利用ACK进行响应时,插件资源管理器120可以将这些插件标记或标示为行为不当插件。如上所述,在一些示例中,基于由任务调度器104实施的关于行为不当插件的运行的策略,被标记为行为不当插件的插件可以被禁用或被重新调度为在特定时间段运行。
图3B是在计算设备上的主机应用或服务进程中运行的插件资源管理器的示意框图。插件资源管理器管理对一个或多个插件的运行。根据本公开的示例,每个插件被指派给对应的单独的工作者进程或插件进程。图3B中相同的附图标记指代上文参考图1描述的相同组件,并且本文中将不再重复其描述。
图3B类似于图3A的示例,但是不同之处在于每个插件110在其自己的进程112中运行。例如,插件A 110A由专用插件进程1 112-1运行,插件B 110B由专用插件进程2 112-2运行,并且插件C 110C由专用插件进程3 112-3运行。虽然图3B示出了具有三个插件进程112的情况,但是本公开的示例不限于此,并且可以使用多于三个插件进程(或少于三个插件进程)来运行对应的插件。在一些情况下,系统中可用于处理不同类型的任务102的插件数量可能超过插件进程112的数量(例如,软件架构可以对插件进程112的数量设置上限,诸如总共最多10个插件进程)。在这种情况下,如果任务102要求使用当前未被插件进程112之一加载的插件,则现有插件进程之一可以被回收(例如,当前由现有插件进程加载的插件被卸载,并且新插件被加载到其位置)。
在本公开的一些示例中,在每个进程一个插件的基础上(例如,在给定时间在该进程中恰好加载一个插件)仅隔离一些插件类别。图3C是根据本公开的一个示例的在计算设备上的主机应用或服务进程中运行的插件资源管理器的示意框图,其中插件资源管理器管理对一个或多个插件的运行,其中一些类型的插件被指派给共享进程,并且一些类型的插件被指派给对应的单独的工作者进程或插件进程。在图3C所示的示例中,插件A 110A和插件B 110B是由共享插件进程A112A运行的第一插件类型(或第一处理程序类型),而插件C110C是不同于第一插件类型的第二插件类型(或第二处理程序类型)并且在第二共享插件进程112B(其可以与第二插件类型的其他插件共享,尽管图3C中未示出)中运行。插件D110D和插件E 110E是被区别对待的第三插件类型,因为第三插件类型的每个插件分别在其自己的插件进程(插件进程1 112-1和插件进程2 112-2)中运行,而不与其他插件共享进程。例如,第一插件类型可以对应于第一方插件,第二插件类型可以对应于经认证的第三方插件(例如,在受控环境中测试并且被认证为表现良好),并且第三插件类型可以对应于不可信的(例如,未经认证的)插件。作为另一示例,在Search的索引器的上下文中,第一插件类型可以对应于属性处理程序,第二插件类型可以对应于未知处理程序,并且第三插件类型可以对应于滤波器处理程序,使得属性处理程序由第一共享插件进程112A运行,未知处理程序由第二共享插件进程112B运行,并且每个滤波器处理程序由单独的插件进程(例如,插件进程1 112-1和插件进程2 112-2)运行。
本公开的示例的一些方面涉及用于收集关于插件在运行期间所消耗的计算资源的度量或遥测的系统和方法。这些收集的度量可以包括但不限于:运行所需的内存用量(例如,峰值内存用量和平均内存用量)、所花费的总CPU周期(例如,所消耗的实际CPU时间)、在用户模式和内核模式下花费的总持续时间、进程所使用的线程数量以及在特定运行期间使用插件处理的项目或任务数量。
当单个进程可能在多个线程中运行多个插件时,监测各个插件的资源消耗更具挑战性。特别地,操作系统通常在每个进程的基础上收集关于计算资源用量的度量或遥测(例如,CPU时间或周期、内存用量、输入/输出用量、线程计数等)。这样,当多个插件在同一共享进程中运行时,如果不采取更深入的检查和分析(例如,使用剖析器对进程进行剖析,剖析器可以周期性地对进程的状态和每次取样时进程正在运行的操作进行取样),可能难以将共享进程所消耗的资源归因于该共享进程所运行的特定插件,而采取更深入的检查和分析可能造成检查开销并对被检查的插件进程运行插件的性能造成负面影响。更具体地,在图1所示的布置中,对于插件资源管理器120来说,可能难以确定插件A 110A、插件B 110B和/或插件C 110C对插件进程112的总体资源消耗的相对贡献。
另一方面,当每个进程限于运行单个插件时(每个进程一个插件,诸如在如图3B所示的插件进程1 112-1、插件进程2 112-2和插件进程3 112-3的情况下,或者在如图3C所示的插件进程1 112-1和插件进程2 112-2的情况下),这种插件进程所消耗的所有资源都可以归因于其中运行的单个插件。这简化了在每个插件的基础上收集资源消耗度量(或插件“遥测”)的过程。
图4A是描绘根据本公开的示例的用于监测插件在运行期间的计算资源消耗度量的方法400的流程图。在索引器的示例上下文中,如上所述,到来的文件系统级文件更改事件对应于到来的任务102。索引器进程108基于任务的类型确定对应的插件来处理任务(例如,从电子邮件中提取内容与从PDF文档中提取内容与从Word文档中提取内容可以各自由不同的对应插件来处理),并且到来任务(incoming task)由任务调度器104调度,任务调度器104根据运行策略来设置任务的优先级等级,并且基于其指派的优先级将任务指派到队列106中的位置。运行策略可以基于计算设备的当前状态(或“运行窗口”)而生成不同的输出,诸如一些插件可能在“屏幕关闭、外部电源”窗口期间具有较高的优先级,而在“屏幕开启、电池电源”窗口或“屏幕开启、运行游戏应用”窗口期间具有较低的优先级。下面将更详细地描述运行策略。从队列的头部取出(例如“出列”或“出列”)用于处理或进程的下一任务,其中队列的头部对应于当前最高优先级的任务。
参考图4A,在操作402中,插件资源管理器102确定用于处理待处理任务(来自队列106的头部)的插件是否已经被加载到插件进程112中。如果否,则在操作404中,将适当的插件加载到插件进程中(例如,通过回收插件进程以卸载其当前插件并加载新插件)。如果插件已经被加载,则方法400流向操作406。
在操作406中,插件资源管理器120开始监测将处理任务的插件进程。在各种示例中,监测包括存储关于以下各项的度量:CPU用量(例如,CPU时间或周期)、内存用量、输入/输出设备带宽用量(例如,在每个设备的基础上,诸如本地存储带宽和网络带宽)、线程计数、所处理的项目数量(例如,如果在运行期间处理多于一个任务的话)、在用户模式和内核模式下花费的总持续时间等。例如,在类Unix和类BSD系统(诸如Linux、和/>)中,这些关于特定进程的资源用量的统计可以使用对sysctl或libproc的调用(诸如通过proc_pidinfo)来访问,和/或从与运行插件的进程的进程id(pid)相对应的子目录中的“proc”伪文件系统(通常安装在“/proc”)中读取,或者可以使用被配置为从proc伪文件系统中收集和打印信息的工具来读取。作为另一示例,在系统中,这些关于特定进程的资源用量的统计可以通过API(诸如通过psapi.h头部(进程状态API)可用的GetProcessMemoryInfo、通过processtthreadapi.h头部可用的GetProcessTimes函数以及通过realtimeapiset.h头部可用的QueryProcessCycleTime函数)来访问。在一些示例中,如下所述的对插件或处理程序的监测包括如上参考图2B描述的设置超时和从插件接收确认。所收集的度量还可以包括关于计算设备的其他信息,诸如处理器型号、核心数量、总体CPU用量、总安装内存、总体内存用量、交换内存用量、存储设备类型(例如,闪存、硬盘驱动器和接口类型(诸如PCIe与SATA与MMC))等。
在操作408中,插件进程112处理任务,诸如在用于索引器服务的插件的情况下处理来自文档的一个或多个数据块以提取元数据和/或内容。在操作410中,插件资源管理器120完成其对插件进程112的监测(例如,在插件进程已经完成任务或完成任务的某个部分之后,或者在某个指定间隔之后)。在操作412中,插件资源管理器120存储所收集的关于运行用于处理当前任务的插件的进程的资源消耗的度量,其中资源消耗度量与插件相关联地存储(例如,类标识符、库的名称和版本或者指定所运行的特定插件的其他标识符),并且该过程结束。因此,本技术能够在每个插件的基础上从特定的受监测计算设备上的插件运行中收集遥测。
本公开的示例的一些方面涉及训练控制插件的运行策略的统计模型或机器学习模型,其中基于根据诸如关于图4A描述的方法等方法而收集的插件运行度量来训练模型。模型的训练可以在计算设备(例如,运行插件的同一计算设备)上本地执行,可以由一个或多个服务器715运行(参见下面的图7),或其组合(例如,由一个或多个服务器715训练并且基于本地插件资源消耗度量或基于联合训练过程而本地重新训练的通用模型)。
图4B是描绘根据本公开的示例的用于基于所收集的插件资源消耗度量来训练用于预测插件的运行策略的模型的方法430的流程图。虽然本公开的一些示例涉及开发训练控制单个插件的运行的统计模型,但是本公开的示例不限于此,并且还可以应用于训练用于设置多个不同插件的运行策略的通用模型。为了方便起见,以下在运行于服务器上的模型训练系统的上下文中呈现本公开的示例,但是本公开的示例不限于此,并且图4B的操作及其等价物也可以在计算设备上本地执行。
在操作432中,模型训练系统720(参见例如图7)加载训练数据,训练数据包括从一个或多个计算设备收集的关于特定插件的运行的遥测数据。如上所述,遥测数据可以包括插件在运行期间的资源消耗度量(CPU、内存、输入/输出(I/O)、线程数量、所处理的项目数量)和关于计算设备中可用的物理计算资源的信息(例如,运行插件时的处理器速度、总安装内存、总CPU负载和内存负载等)。在一些示例中,训练数据还包括基于计算设备的用户活动的插件用量信息。用量行为包括例如用户利用特定插件或利用特定插件所生成的信息的频率。作为具体示例,PDF插件可以被配置为从PDF文档中提取内容,使得针对各种搜索项的查询将生成包括包含那些搜索项的PDF文档的搜索结果。与PDF插件相关联的用量信息包括用户执行这种搜索以搜索包含特定文本串的PDF文档的频率和/或PDF文档的总体用量模式(例如,用户是经常还是很少使用PDF文档)。
在一些示例中,训练数据中的每个样本根据与该样本的特定条件相对应的插件运行模式来标记。运行状态分类的示例包括:“运行”、“不运行”和“保守运行”。更详细地,训练数据的样本可以被分类为“运行”,以指示特定插件应当总是在样本的特定条件下运行(例如,因为运行插件对计算设备的总体性能的影响可忽略不计)。如果插件在特定样本期间行为不当(例如,未能向插件资源管理器发送确认、在运行期间挂起插件进程和/或计算系统、消耗过多资源等),则样本可以被分类为“不运行”。在插件进行有用的工作,但是其对计算设备的高资源需求指示适当的策略是在计算设备不活动时(例如,屏幕关闭并插入外部电源,诸如在夜间充电时)运行插件和/或在附加的资源约束(例如,将运行插件的插件进程限于CPU周期、内存用量、输入/输出带宽、温度和/或冷却风扇速度(如果适用的话)的特定上限)下运行插件的情况下,样本可以被分类为“保守运行”。在一些示例中,通过在运行特定插件时对插件进程112设置限制或约束(例如,不超过20%的CPU时间)来对这些特定插件应用资源消耗约束。在一些示例中,基于插件的插件执行策略而约束的插件进程被配置在每个进程一个插件的模型上,使得约束被严格地应用于特定的行为不当插件。运行状态分类的附加示例包括“立即运行”(例如,对于在前台运行的应用所需的数据)、“当更多资源可用时运行”和“当用户不在时运行”。可以基于插件的特定资源消耗特性和在运行插件时(例如,在运行插件之前)计算设备中可用的计算资源(例如,计算设备的负载)向各种样本指派运行状态分类或运行状态标签。基于计算设备中安装的硬件资源(例如,一个或多个处理器的型号和时钟速度、安装内存总量、将输入/输出设备连接到处理器的外围总线的最大带宽等),可用计算资源在不同计算设备之间可能有很大不同。结果,同一插件可以在与资源丰富的计算设备(例如,具有大量的已安装内存和带有许多核心的快速处理器)相关联的数据样本中被指派“运行”标签,并且可以在与具有较少计算资源的计算设备(例如,仅具有较少量的内存和带有较少核心的较慢处理器的资源受限的计算设备)相关联的数据样本中被指派“当用户不在时运行”或“当更多资源可用时运行”标签。
在一些示例中,训练数据中的每个样本被标记有与将会用于将任务插入或排序到优先级队列中的优先级值相对应的优先级值。例如,能够立即处理或运行的任务可以被指派高优先级(例如,因为它们对计算设备的总体性能几乎没有影响),而不应运行的任务可以具有与非常低的优先级值相对应的标签(例如,因为它们可能导致计算设备挂起、崩溃、颠簸或以其他方式对用户的体验造成负面影响)。在一些示例中,每个样本包括计算设备的当前状态或当前运行窗口,诸如计算设备上的当前负载或用户是否活动(以及玩游戏与使用网络浏览器)或用户是否不在(例如,屏幕关闭),并且与这些样本相关联的标签可以根据计算设备的与样本相关联的不同状态而不同。例如,当样本指示计算设备处于“用户活动”状态时,将由资源密集型插件处理的任务可以被标记有低优先级,而当样本中的数据指示用户离开计算设备(例如,屏幕关闭)时,同一任务可以被重新指派较高的优先级。
在一些示例中,标签是自动生成的,诸如基于在特定进程对插件的运行期间从计算设备收集的资源用量度量、关于插件在生成ACK时的响应性的信息和/或关于进程在插件的运行期间崩溃或挂起的信息而自动生成。
在操作434中,模型训练系统720基于带标记的训练数据来训练统计模型或机器学习模型,以预测与特定输入特征或包括多个输入特征的输入特征向量相对应的运行状态分类(例如,“运行”、“不运行”和“保守运行”)。可根据本公开的示例使用的统计模型类型和机器学习模型类型的示例包括但不限于:逻辑回归模型、支持向量机(support vectormachine,SVM)、神经网络(包括深度神经网络)等。模型的输入特征可以包括一组条件,在这些条件下插件资源管理器120可以确定是否或者何时运行特定插件(例如,诸如计算设备上可用的计算资源、计算设备的计算资源上的负载、任务的特性(诸如待处理文档的大小)、特定用户所收集的插件用量特性等条件)。在训练通用模型的示例中,输入特征还可以包括插件的特性,诸如与特定插件相关联的标识符(例如,名称和版本号)。操作434中模型的训练包括迭代地更新模型的参数以减少训练数据的标签与由模型预测或计算的标签之间的差异(或误差)。
在操作436中,模型训练系统720对照训练数据(诸如来自训练数据的样本验证集)评估经训练的模型的当前版本,其中用于在操作434中训练模型的训练数据部分不包括验证集。在操作438中,模型训练系统720确定训练是否完成,诸如基于模型的训练是否已经收敛(例如,在操作436中确定的模型性能已经平稳)或者是否已经达到训练迭代(或训练时期)的最大数量来确定训练是否完成。如果训练未完成,则模型训练系统720返回操作434以继续训练,诸如通过基于相同的训练数据或通过使用附加的训练数据以细化模型来继续训练。如果训练完成,则在操作440中,模型训练系统720部署经训练的模型,诸如通过敲定待交付给计算设备的插件资源管理器120的模型以使用该模型控制插件的运行来部署经训练的模型。
图4C是描绘根据本公开的示例的用于基于根据基于插件的历史行为而确定的插件执行策略来设置任务的优先级从而更新队列的方法450的流程图。在一些示例中,任务调度器104与插件资源管理器120进行通信以基于由插件资源管理器120管理的插件执行策略来设置任务的优先级,而在一些示例中,任务调度器104直接访问插件执行策略。为了方便起见,将在对任务的优先级指派由任务调度器104管理的示例的上下文中描述操作450,但是本公开的示例不限于此。
在操作452中,任务调度器104确定用于处理特定任务的插件。例如,在索引器的上下文中,任务可以是对存储在文件系统或数据存储中的新的文档或更改后的文档(例如,新的电子邮件或对文字处理文档的编辑)进行索引,在这种情况下,插件被配置为处理从文档中提取内容(例如,用以从电子邮件中提取元数据和/或内容的插件)。
在操作454中,任务调度器104评估与在操作452中确定的插件相关联的插件执行策略。对插件执行策略的评估包括将表示计算设备当前状态的特征向量供应给经训练的模型(例如,基于根据图4A的方法收集的度量或遥测、根据图4B描述的方法训练的经训练的统计模型或机器学习模型)。在一些示例中,经训练的模型生成任务的分类(例如,“运行”、“不运行”或“保守运行”),在这种情况下,任务调度器104基于分类为任务设置优先级。继续上述示例,任务调度器104可以在经训练的模型针对当前条件输出“运行”的情况下设置高优先级,而当经训练的模型输出“不运行”时设置非常低或负的优先级。在一些情况下,当经训练的模型返回“保守运行”时,任务调度器104也设置低或负的优先级,或者可以为这种任务设置适中或中等的优先级,同时还在处理任务时对运行插件的插件进程112设置附加的限制或配额。
在一些示例中,取决于计算设备的状态,经训练的模型为给定的插件返回不同的值。如上所述,经训练的模型的输入特征包括插件可以运行的条件,诸如计算设备上可用的计算资源以及这些计算资源上的当前负载以及计算设备的一个或多个用户对的插件用量模式。因此,如果计算设备负载很轻(例如,当前具有可用的CPU、内存和输入/输出带宽资源),则经训练的模型可以确定立即运行插件是可接受的,从而评估插件执行策略为“运行”或高优先级值,而如果计算设备负载重或受到压力(例如,当前具有高CPU用量、高内存用量和/或输入/输出通信信道饱和)或者如果计算设备正在禁用或延缓其他任务的性能模式下操作(例如,当计算设备正在运行游戏应用时),则经训练的模型可以确定插件不应运行,从而评估插件执行策略为“不运行”或低优先级值。此外,在一些示例中,输入特征包括计算设备的用户的插件用量模式,使得经训练的模型为生成频繁使用的数据的插件(例如,在索引器中对用户所频繁搜索的数据进行索引的插件)生成较高的优先级值(或与较高的优先级值相关联的分类),使得与这些插件相关联的任务被指派较高的优先级并被优先化。这样,资源受限的计算设备的有限资源首先被分配给更有可能对用户有用的工作,如基于先前的用户行为所预测的。
在操作456中,任务调度器104基于在操作454中计算的对插件执行策略的评估来设置任务的优先级。在操作458中,任务调度器104基于所设置的任务优先级来更新队列。例如,可以基于其指派的任务优先级将新的任务插入队列106中。作为另一示例,任务调度器104可以基于计算设备的状态变化(诸如从“电池电源”状态转换到“外部电源”状态)来为队列中的所有任务重新计算优先级,因为状态变化可能允许资源密集型插件运行(例如,当从电池供电移动到外部供电或者从“屏幕开启”移动到“屏幕关闭”时)或者可能意味着资源密集型插件不应运行(例如,当从外部电源移动到电池电源时或者当从“空闲”状态唤醒到“活动”状态时)。例如,在操作458之后,操作454至458可以在连续、间隔或基于事件的基础上进行重复。例如,可以在第二次计算设备的状态变化时重新评估插件执行策略。这样,由于计算设备的状态变化,要由所识别的插件处理的任务的优先级可以变化。对插件执行策略的重新评估可以每隔几秒、几分钟或某个其他的设置时间间隔执行一次。在其他示例中,对插件执行策略的重新评估可以基于计算设备的状态变化来触发。例如,如果计算状态指标(例如,CPU用量、屏幕状态)与首次评估插件执行策略时的值偏离了设定量,则可以重新评估插件执行策略,可以基于对策略的重新评估来更新任务的优先级,并且可以相应地更新队列。在一些情况下,在任务的处理或操纵期间可能发生状态变化,并且除了队列中的其他任务之外的正在处理的任务可以指派新的优先级。在一些示例中,当队列包含比正在处理的任务更高优先级的任务时,暂停或中断该任务并将其重新插入队列中,并且可以改为运行较高优先级的任务。
相应地,本公开的示例的各方面涉及收集关于插件运行的遥测以在每个插件的基础上开发插件执行策略(例如,经训练的统计模型),以及使用插件执行策略来确定允许插件运行或不允许插件运行的条件(例如,计算系统是在重负载下还是在轻负载下或者是活动的还是不活动的)。在本公开的一些示例中,策略将插件用量统计(例如,特定类型的文件是否被频繁搜索或使用)作为输入来确定是否以及何时应当运行插件(例如,频繁使用的数据类型可以被更经常地索引和被首先索引,而不频繁使用的数据类型可以被较不频繁地索引或被最后索引)。
这样,本公开的示例的各方面涉及对机器学习基于插件的历史资源消耗(来自所收集的遥测)、计算设备负载、历史用户活动(例如,用户的插件用量统计)和当前用量条件(例如,计算设备的当前状态或操作模式,诸如“电池供电”、“连接到外部电源”、“屏幕关闭”和“运行游戏应用”)来确定是否运行插件的应用。这些模型可以基于在许多用户和许多计算设备配置(例如,具有不同时钟速度和核心数量的不同处理器以及不同内存量)之间汇总的资源消耗度量来训练。相应地,用于任何给定插件的插件执行策略可以基于计算设备的能力和负载、当前用户的用量行为和/或当前用户的偏好等因素进行微调。
图4D是描绘根据本公开的示例的用于控制插件进程的方法460的流程图。在操作462处,接收到来任务。到来任务可以是本文讨论的任何类型的任务。到来任务可以由运行在计算设备上的第一进程接收。在操作464处,加载与在操作462中接收的任务或任务类型相对应的插件。插件可以由运行在计算设备上的第二进程加载,并且第二进程可以不同于第一进程。
在操作466处,运行所加载的插件以处理到来任务。所加载的插件可以在第二进程中运行。在操作468处,监测资源消耗度量。资源消耗度量可以由与接收到来任务的第一进程相关联的资源管理器进行监测。资源消耗度量可以指示第二进程通过运行所加载的插件而消耗的资源。受监测的资源消耗度量可以包括诸如运行所需的内存用量(例如,峰值内存用量和平均内存用量)、所花费的总CPU周期(例如,所消耗的实际CPU时间)、在用户模式和内核模式下花费的总持续时间、进程所使用的线程数量以及在特定运行期间使用插件处理的项目或任务数量等度量。如上所讨论的,受监测的资源消耗度量还可以包括对ACK的响应和相关联的数据(诸如超时的计数)。
在操作470处,接收或访问计算状态数据。计算状态数据可以由监测正在运行插件的进程的资源消耗度量的资源管理器接收或访问。计算状态数据指示计算设备的状态,并且可以包括本文讨论的任何类型的计算状态数据。例如,计算状态数据可以包括静态数据和动态数据。静态数据可以包括与不太可能频繁变化的计算设备配置相关的数据,诸如处理器型号、核心数量、总体CPU用量、总安装内存、总体内存用量、交换内存用量、存储设备类型(例如,闪存、硬盘驱动器和接口类型(诸如PCIe与SATA与MMC))等。动态计算状态数据包括与更有可能频繁变化的状态相关的数据,诸如屏幕状态(例如,开启或关闭)、用户活动、电源(例如,电池或有线)、正在运行的应用的数量和/或类型、CPU利用率、内存利用率、电源用量等。
在操作472处,基于资源消耗度量和/或计算状态数据来控制运行插件的进程(例如,第二进程)。例如,可以基于资源消耗度量和/或计算状态数据来调整分配给插件进程的计算资源。作为示例,可以基于资源消耗度量和/或计算状态数据来动态地调整插件进程的CPU限制。插件进程也可以暂停或终止插件进程。如上所讨论的,可以根据基于经训练的机器学习模型的动态策略来进行这种调整。作为另一示例,如果资源消耗数据指示插件已经被标记为行为不当插件(例如,行为不当计数超过阈值),则该插件可以被禁用并且插件进程终止。
虽然已经在具有用于运行插件以从各种类型的文档中提取数据的基础设施的索引器服务的上下文中描述了用于监测和控制或管理插件运行的本公开示例的各种示例,本公开的示例不限于此,并且可以应用于其他软件应用和软件服务的上下文中,其中监测和管理插件和扩展的运行以避免或减少不当插件和扩展对计算设备的总体性能的影响将是有用的。
图5-图7和相关联的描述提供了对可以实践本发明的示例的各种操作环境的讨论。然而,关于图5-图7所示出和讨论的设备和系统是出于示例和说明的目的,并不限制可以用于实践本文描述的本发明的各方面的大量计算设备配置。
图5是示出可以实践本公开的示例的计算设备500的物理组件(即,硬件)的框图。下面描述的计算设备组件可以适用于上述的运行主机应用或服务、插件资源管理器以及一个或多个插件或扩展的客户端设备。在基本配置中,计算设备500可以包括至少一个处理单元502和系统存储器504。取决于计算设备的配置和类型,系统存储器504可以包括但不限于易失性存储装置(例如,随机存取存储器)、非易失性存储装置(例如,只读存储器)、闪存或这些存储器的任何组合。系统存储器504可以包括操作系统505和一个或多个程序模块506,程序模块506适用于运行插件托管软件服务550或软件应用560,诸如索引器108、网络浏览器115、插件资源管理器120或另一应用130。例如,操作系统505可以适用于控制计算设备500的操作。此外,本发明的各方面可以结合其他操作系统或任何其他应用来实践,并且不限于任何特定的应用或系统。该基本配置在图5中由虚线508内的那些组件示出。计算设备500可以具有附加的特征或功能。例如,计算设备500还可以包括附加的数据存储设备(可移动的和/或不可移动的),诸如磁盘、光盘或磁带。这种附加的存储装置在图5中由可移动存储设备509和不可移动存储设备510示出。
如上所述,多个程序模块和数据文件可以被存储在系统存储器504中。当在处理单元502上运行时,程序模块506可以执行包括但不限于图2A-图2B和图4A-图4C所示方法的一个或多个阶段的过程。可根据本发明的示例使用的其他程序模块可以包括诸如电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用等应用。
此外,本发明的示例可以在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路中实施,或者在包含电子元件或微处理器的单个芯片上实施。例如,本发明的示例可以经由片上系统(system-on-a-chip,SOC)实践,其中图5所示的每个组件或许多组件可以被集成到单个集成电路上。这种SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元和各种应用功能,所有这些都被集成(或“烧录”)到芯片衬底上作为单个集成电路。当经由SOC进行操作时,本文描述的关于在基于先前捕获的插件性能(插件遥测)来处理任务和调度任务时监测插件性能(例如,资源消耗度量)的功能可以经由在单个集成电路(芯片)上与计算设备500的其他组件集成的专用逻辑进行操作。本公开的示例也可以使用能够执行逻辑运算(诸如AND、OR和NOT)的其他技术来实践,包括但不限于机械技术、光学技术、流体技术和量子技术。此外,本发明的各方面可以在通用计算机内或在任何其他电路或系统中实践。
计算设备500还可以具有一个或多个输入设备512,诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等。也可以包括诸如显示器、扬声器、打印机等(多个)输出设备514。前述设备是示例,也可以使用其他设备。计算设备500可以包括允许与其他计算设备518进行通信的一个或多个通信连接516。合适的通信连接516的示例包括但不限于RF发送器、接收器和/或收发器电路;通用串行总线(universal serial bus,USB)、并行和/或串行端口。
本文使用的术语“计算机可读介质”可以包括计算机存储介质。计算机存储介质可以包括以用于存储信息的任何方法或技术实施的易失性的和非易失性的、可移动的和不可移动的介质,诸如计算机可读指令、数据结构或程序模块。系统存储器504、可移动存储设备509和不可移动存储设备510都是计算机存储介质示例(即,记忆存储装置)。计算机存储介质可以包括RAM、ROM、电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘(digitalversatiledisk,DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备,或者可以用于存储信息并可以由计算设备500访问的任何其他制品。任何这样的计算机存储介质可以是计算设备500的一部分。计算机存储介质不包括载波或其他传播的数据信号。
通信介质可以由计算机可读指令、数据结构、程序模块或调制数据信号(诸如载波或其他传输机制)中的其他数据来体现,并且包括任何信息交付介质。术语“调制数据信号”可以描述具有以将信息编码在信号中的方式设置或更改的一个或多个特性的信号。作为示例而非限制,通信介质可以包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学介质、射频(radio frequency,RF)介质、红外介质和其他无线介质)。
图6A和图6B示出了可以实践本发明的各方面的移动计算设备600,例如移动电话、智能电话、平板个人计算机、膝上型计算机等。参考图6A,示出了用于实施这些方面的移动计算设备600的示例。在基本配置中,移动计算设备600是既具有输入元件又具有输出元件的手持计算机。移动计算设备600通常包括显示器605和一个或多个输入按钮610,输入按钮610允许用户将信息输入移动计算设备600中。移动计算设备600的显示器605也可以用作输入设备(例如,触摸屏显示器)。如果包括的话,可选辅助输入元件615允许进一步的用户输入。辅助输入元件615可以是旋转开关、按钮或任何其他类型的手动输入元件。在替代示例中,移动计算设备600可以包含更多或更少的输入元件。例如,在一些示例中,显示器605可以不是触摸屏。在替代示例中,移动计算设备600是便携式电话系统,诸如蜂窝电话。移动计算设备600还可以包括可选键盘635。可选键盘635可以是物理键盘或在触摸屏显示器上生成的“软”键盘。在各个方面,输出元件包括用于显示图形用户界面(graphical userinterface,GUI)的显示器605、视觉指示器620(例如,发光二极管)和/或音频换能器625(例如,扬声器)。在一些示例中,移动计算设备600包含用于向用户提供触觉反馈的振动换能器。在又一示例中,移动计算设备600包含用于向外部设备发送信号或从外部设备接收信号的输入端口和/或输出端口,诸如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,HDMI端口)。
图6B是示出移动计算设备的一个示例的架构的框图。也就是说,移动计算设备600可以包含系统(即,架构)602以实施一些示例。在一个示例中,系统602被实施为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传送客户端、游戏和媒体客户端/播放器)的“智能电话”。在一些示例中,系统602被集成为计算设备,诸如集成的个人数字助理(personal digital assistant,PDA)和无线电话。
一个或多个应用程序650和服务652可以被加载到存储器662中,并且在操作系统664上运行或与操作系统664相关联地运行。应用程序650的示例包括电话拨号器程序、电子邮件程序、个人信息管理(personal information management,PIM)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息传送程序等。服务652的示例包括文档索引器服务、软件更新服务等。系统602还包括存储器662内的非易失性存储区域668。非易失性存储区域668可以用于存储在系统602断电的情况下不应丢失的永久信息。应用程序650可以使用信息并将其存储在非易失性存储区域668中,诸如电子邮件应用所使用的电子邮件或其他消息等。同步应用(未示出)也驻留在系统602上,并且被编程为与驻留在主机计算机上的对应的同步应用进行交互,以保持存储在非易失性存储区域668中的信息与存储在主机计算机处的对应的信息同步。应当理解,其他应用可以被加载到存储器662中并且在移动计算设备600上运行。
系统602具有电源670,电源670可以被实施为一个或多个电池。电源670还可以包括外部电源,诸如对电池进行补充或充电的AC适配器或电动对接底座。
系统602还可以包括执行发送和接收射频通信的功能的无线电装置672。无线电装置672经由通信运营商或服务提供商促进系统602与“外部世界”之间的无线连接。来往于无线电装置672的传输在操作系统664的控制下进行。换句话说,由无线电装置672接收的通信可以经由操作系统664散播到应用程序150,反之亦然。
视觉指示器620可以用于提供视觉通知和/或音频接口674可以用于经由音频换能器625产生听觉通知。在所示的示例中,视觉指示器620是发光二极管(light emittingdiode,LED),而音频换能器625是扬声器。这些设备可以直接耦合到电源670,使得它们在被激活时在由通知机制规定的持续时间内保持开启,即使处理器660和其他组件可能为了节省电池电源而关闭。LED可以被编程为无限期地保持开启,直到用户采取行动来指示设备的通电状态。音频接口674用于向用户提供听觉信号和从用户接收听觉信号。例如,除了耦合到音频换能器625之外,音频接口674还可以耦合到麦克风以接收音频输入,诸如以促进电话交谈。系统602还可以包括视频接口676,视频接口676支持机载摄像头630记录静止图像、视频流等的操作。
实施系统602的移动计算设备600可以具有附加的特征或功能。例如,移动计算设备600还可以包括附加的数据存储设备(可移动的和/或不可移动的),诸如磁盘、光盘或磁带。这种附加的存储装置在图6B中由非易失性存储区域668示出。
如上所述,由移动计算设备600生成或捕获并经由系统602存储的数据/信息可以被本地存储在移动计算设备600上,或者数据可以被存储在任何数量的存储介质上,任何数量的该存储介质可以由该设备经由无线电装置672或经由移动计算设备600与关联于移动计算设备600的单独计算设备(例如,分布式计算网络(诸如互联网)中的服务器计算机)之间的有线连接来访问。应当理解,这种数据/信息可以经由移动计算设备600、经由无线电装置672或经由分布式计算网络来访问。类似地,根据公知的数据/信息传输和存储手段(包括电子邮件和协作数据/信息共享系统),这种数据/信息可以容易地在计算设备之间传输以供存储和使用。
图7示出了根据上述各种示例的用于训练用于实施运行策略的模型的系统的架构的一个示例。例如,从与插件(或服务和应用的其他扩展)相关联的计算设备705(包括通用计算设备705A(诸如个人计算机和服务器)、平板计算设备705B和移动计算设备705C(诸如智能电话))收集的遥测数据可以被存储在不同的通信信道或其他存储类型中,并且是根据与数据收集进程相关联的数据格式(例如,文件类型)来存储的。服务器715将与插件相关联的遥测数据存储在数据存储716(例如,数据库)中,并且策略模型训练器720基于接收的遥测数据来训练机器学习模型或统计模型(例如,如上关于图4C所描述的)。服务器715可以向客户端118/705提供经训练的模型(或基于计算设备705的类型的不同模型)。作为一个示例,服务器715可以是在互联网上或通过另一网络(例如,私有内联网)提供对经训练的模型的访问的网络服务器。举例来说,客户端计算设备118可以在个人计算机或服务器705A、平板计算设备705B和/或移动计算设备705C(例如,智能电话)或其他计算设备中实施和体现。
从前面的公开内容可以理解,该技术的一个方面涉及一种其上存储有指令的计算机存储介质,当由包括处理器和存储器的计算设备执行时,该指令使得计算设备:由运行在计算设备上的第一进程接收到来任务;由运行在计算设备上的第二进程加载与到来任务的类型相对应的插件;在第二进程中运行插件以处理到来任务;由与第一进程相关联的资源管理器监测插件的多个资源消耗度量;以及基于插件的资源消耗度量来控制第二进程。
用以监测多个资源消耗度量的指令可以包括当由计算设备执行时使得计算设备进行以下操作的指令:向第二进程发送事件;为来自插件的确认设置超时时段;确定在超时时段期间是否从插件接收到确认;以及当在超时时段内没有接收到确认时,递增与插件相关联的行为不当计数器。用以监测多个资源消耗度量的指令还可以包括当由计算设备执行时使得计算设备进行以下操作的指令:确定行为不当计数器是否满足阈值;以及当行为不当计数器已经满足阈值时,将插件标记为行为不当插件。
该指令还可以包括当由计算设备执行时使得计算设备基于被标记为行为不当插件而禁用行为不当插件的指令。用以监测多个资源消耗度量的指令可以包括当由计算设备执行时使得计算设备进行以下操作的指令:在由第二进程对插件的运行期间,监测与第二进程相关联的资源消耗度量;以及存储与插件相关联的资源消耗度量。
该指令还可以包括当由计算设备执行时使得计算设备进行以下操作的指令:基于计算设备的当前状态来评估与插件相关联的插件执行策略;基于插件执行策略来对到来任务设置任务优先级;以及基于任务优先级来更新包括多个任务和到来任务的队列。插件执行策略可以包括经训练的模型,经训练的模型是在训练数据上训练的,训练数据包括所收集的与插件相关联的资源消耗度量。所收集的与插件相关联的资源消耗度量可以包括从运行插件的多个不同计算设备收集的资源消耗度量。第二进程可以恰好加载一个插件。该指令还可以包括当由计算设备执行时使得计算设备进行以下操作的指令:确定第二插件的类型;以及在第二进程或第三进程中加载第二插件,其中可以响应于确定第二插件具有第一类型而在第二进程中加载第二插件,并且其中可以响应于确定第二插件具有第二类型而在第三进程中加载第二插件。
该技术的另一方面涉及一种用于控制一个或多个插件的操作的计算机实现的方法,该方法包括:确定用于到来任务的插件;通过向在与插件相关联的历史遥测数据上训练的机器学习模型供应特征向量来评估插件执行策略,其中特征向量包括所确定的插件的标识和计算状态数据;基于对插件执行策略的评估,为到来任务设置优先级;以及基于为到来任务设置的优先级来更新任务队列。
计算状态数据可以包括屏幕状态、电源状态或CPU用量等级中的至少一个。该计算机实现的方法还可以包括基于对插件执行策略的评估来控制用于运行所确定的插件的进程。该计算机实现的方法还可以包括:在更新任务队列之后,通过向机器学习模型供应更新后的特征向量来重新评估插件执行策略;基于对插件执行策略的重新评估,为到来任务设置更新后的优先级;以及基于更新后的优先级,更新任务队列。该计算机实现的方法还可以包括:加载关于对特定插件的运行的训练数据,训练数据包括从多个计算设备收集的关于对特定插件的运行的历史遥测数据;以及利用所加载的训练数据来训练机器学习模型。该计算机实现的方法还可以包括:监测与运行插件的进程相关联的资源消耗度量;以及基于受监测的资源消耗度量和计算状态数据来控制进程。
该技术的另一方面涉及一种系统,包括:处理器;以及存储指令的存储器,当由处理器运行时,该指令使得系统执行一组操作,包括:确定用于到来任务的插件;向在与插件相关联的历史遥测数据上训练的机器学习模型供应特征向量,其中特征向量包括所确定的插件的标识和计算状态数据;基于来自机器学习模型的输出,为到来任务设置优先级;以及基于为到来任务设置的优先级来更新任务队列。
该操作还可以包括:加载关于对特定插件的运行的训练数据,训练数据包括从多个计算设备收集的关于对特定插件的运行的历史遥测数据;以及利用所加载的训练数据来训练机器学习模型。插件可以是第三方插件。该系统还可以包括基于来自机器学习模型的输出来控制用于运行所确定的插件的进程。
例如,上面参考根据本发明的各方面的方法、系统和计算机程序产品的框图和/或操作说明描述了本发明的各方面。框中标注的功能/动作可以不按照任何流程图中所示的次序发生。例如,取决于所涉及的功能/动作,连续示出的两个框实际上可以基本上同时运行,或者这些框有时可以以相反的次序运行。此外,如本文和权利要求中所使用的,短语“元素A、元素B或元素C中的至少一个”旨在传达以下各项中的任何一个:元素A,元素B,元素C,元素A和B,元素A和C,元素B和C,以及元素A、B和C。
本申请中提供的一个或多个示例的描述和说明并不旨在以任何方式限制或限定本发明要求保护的范围。本申请中提供的方面、示例和细节被认为足以传达所有权并且使他人能够制造和使用所要求保护的本发明的最佳模式。所要求保护的本发明不应被解释为限于本申请中提供的任何方面、示例或细节。不管是组合地还是单独地示出和描述的,各种特征(既是结构上的,也是方法上的)旨在被选择性地包括或省略以产生具有特定的一组特征的示例。已经提供了本申请的描述和说明,本领域技术人员可以设想落入本申请中体现的总体发明构思的更宽方面的精神内的变化、修改和替代示例,而这些变化、修改和替代示例不脱离所要求保护的本发明的更宽范围。
Claims (15)
1.一种计算机存储介质,所述计算机存储介质上存储有指令,所述指令在由包括处理器和存储器的计算设备执行时,使所述计算设备:
由运行在所述计算设备上的第一进程接收到来任务;
由运行在所述计算设备上的第二进程加载与所述到来任务的类型相对应的插件;
在所述第二进程中执行所述插件以处理所述到来任务;
由与所述第一进程相关联的资源管理器监测所述插件的多个资源消耗度量;以及
基于所述插件的所述资源消耗度量来控制所述第二进程。
2.根据权利要求1所述的计算机存储介质,其中用以监测所述多个资源消耗度量的所述指令包括在由所述计算设备执行时使所述计算设备进行以下项的指令:
向所述第二进程发送事件;
设置针对来自所述插件的确认的超时时段;
确定在所述超时时段期间是否从所述插件接收到确认;以及
当在所述超时时段内没有接收到确认时,递增与所述插件相关联的行为不当计数器。
3.根据权利要求2所述的计算机存储介质,其中用以监测所述多个资源消耗度量的所述指令还包括在由所述计算设备执行时使所述计算设备进行以下项的指令:
确定所述行为不当计数器是否满足阈值;以及
当所述行为不当计数器已经满足所述阈值时,将所述插件标记为行为不当插件。
4.根据权利要求3所述的计算机存储介质,其中所述指令还包括在由所述计算设备执行时使所述计算设备基于被标记为行为不当插件而禁用所述行为不当插件的指令。
5.根据权利要求1所述的计算机存储介质,其中用以监测所述多个资源消耗度量的所述指令包括在由所述计算设备执行时使所述计算设备进行以下项的指令:
在由所述第二进程执行所述插件期间,监测与所述第二进程相关联的资源消耗度量;以及
与所述插件相关联地存储所述资源消耗度量。
6.根据权利要求1所述的计算机存储介质,其中所述指令还包括在由所述计算设备执行时使所述计算设备进行以下项的指令:
基于所述计算设备的当前状态来评估与所述插件相关联的插件执行策略;
基于所述插件执行策略来对所述到来任务设置任务优先级;以及
基于所述任务优先级来更新包括多个任务和所述到来任务的队列。
7.根据权利要求6所述的计算机存储介质,其中所述插件执行策略包括经训练的模型,所述经训练的模型在训练数据上被训练,所述训练数据包括所收集的与所述插件相关联的资源消耗度量。
8.根据权利要求7所述的计算机存储介质,其中所收集的与所述插件相关联的所述资源消耗度量包括从执行所述插件的多个不同计算设备收集的资源消耗度量。
9.根据权利要求1所述的计算机存储介质,其中所述第二进程恰好加载了一个插件。
10.根据权利要求1所述的计算机存储介质,其中所述指令还包括在由所述计算设备执行时使所述计算设备进行以下项的指令:
确定第二插件的类型;以及
在所述第二进程或第三进程中加载所述第二插件,
其中响应于确定所述第二插件具有第一类型,所述第二插件被加载在所述第二进程中,并且
其中响应于确定所述第二插件具有第二类型,所述第二插件被加载在所述第三进程中。
11.一种用于控制一个或多个插件的操作的计算机实现的方法,所述方法包括:
确定针对到来任务的插件;
通过向在与所述插件相关联的历史遥测数据上被训练的机器学习模型供应特征向量来评估插件执行策略,其中所述特征向量包括所确定的所述插件的标识和计算状态数据;
基于对所述插件执行策略的所述评估,设置针对所述到来任务的优先级;以及
基于针对所述到来任务的所设置的所述优先级来更新任务队列。
12.根据权利要求11所述的计算机实现的方法,其中所述计算状态数据包括屏幕状态、电源状态或CPU用量等级中的至少一项。
13.根据权利要求11所述的计算机实现的方法,还包括:基于对所述插件执行策略的所述评估来控制用于执行所确定的所述插件的进程。
14.根据权利要求11所述的计算机实现的方法,还包括:
在更新所述任务队列之后,通过向所述机器学习模型供应更新后的特征向量来重新评估所述插件执行策略;
基于对所述插件执行策略的所述重新评估,设置针对所述到来任务的更新后的优先级;以及
基于所述更新后的优先级,更新所述任务队列。
15.根据权利要求11所述的计算机实现的方法,还包括:
加载关于执行特定插件的训练数据,所述训练数据包括从多个计算设备被收集的关于执行所述特定插件的历史遥测数据;以及
利用所加载的所述训练数据来训练所述机器学习模型。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/492,311 | 2021-10-01 | ||
US17/492,311 US20230106369A1 (en) | 2021-10-01 | 2021-10-01 | Dynamic policy adjustment based on resource consumption |
PCT/US2022/038122 WO2023055469A1 (en) | 2021-10-01 | 2022-07-25 | Dynamic policy adjustment based on resource consumption |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117999541A true CN117999541A (zh) | 2024-05-07 |
Family
ID=82851867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280065096.2A Pending CN117999541A (zh) | 2021-10-01 | 2022-07-25 | 基于资源消耗的动态策略调整 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230106369A1 (zh) |
EP (1) | EP4409401A1 (zh) |
CN (1) | CN117999541A (zh) |
WO (1) | WO2023055469A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10891571B2 (en) * | 2018-08-23 | 2021-01-12 | Capital One Services, Llc | Task management platform |
US11994951B2 (en) * | 2022-02-23 | 2024-05-28 | Micron Technology, Inc. | Device reset alert mechanism |
US20240031387A1 (en) * | 2022-07-21 | 2024-01-25 | Rockwell Automation Technologies, Inc. | Programming environment security model |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10175739B2 (en) * | 2013-01-29 | 2019-01-08 | Avago Technologies International Sales Pte. Limited | Wearable device-aware supervised power management for mobile platforms |
US9645868B2 (en) * | 2015-06-25 | 2017-05-09 | Ca, Inc. | Methods of running applications on mobile devices including notifications/blocking responsive to resource consumption |
US10104152B2 (en) * | 2016-04-28 | 2018-10-16 | TeamMate Licensing B.V. | Inter-application communication and integration broker |
US10503545B2 (en) * | 2017-04-12 | 2019-12-10 | At&T Intellectual Property I, L.P. | Universal security agent |
US10908926B2 (en) * | 2017-09-09 | 2021-02-02 | Box, Inc. | Plug-in management wrappers |
-
2021
- 2021-10-01 US US17/492,311 patent/US20230106369A1/en active Pending
-
2022
- 2022-07-25 WO PCT/US2022/038122 patent/WO2023055469A1/en active Application Filing
- 2022-07-25 CN CN202280065096.2A patent/CN117999541A/zh active Pending
- 2022-07-25 EP EP22754249.5A patent/EP4409401A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4409401A1 (en) | 2024-08-07 |
US20230106369A1 (en) | 2023-04-06 |
WO2023055469A1 (en) | 2023-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10645022B2 (en) | Methods and systems providing a scalable process for anomaly identification and information technology infrastructure resource optimization | |
US20230106369A1 (en) | Dynamic policy adjustment based on resource consumption | |
Yadwadkar et al. | Wrangler: Predictable and faster jobs using fewer resources | |
CA2919839C (en) | Virtual computing instance migration | |
CN106716365B (zh) | 异构线程调度 | |
KR101949998B1 (ko) | 컴퓨팅 객체의 콘텍스트 히스토리 | |
US9396028B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
JP4768354B2 (ja) | ジョブ管理装置、ジョブ管理方法、ジョブ管理プログラム | |
US20180300067A1 (en) | Dynamic memory management techniques | |
US20120047509A1 (en) | Systems and Methods for Improving Performance of Computer Systems | |
US20190102237A1 (en) | Recommending applications based on call requests between applications | |
US8601484B2 (en) | System and method for managing resources and markers of a portable computing device | |
US11311722B2 (en) | Cross-platform workload processing | |
JP2012137973A (ja) | データを分類してアクセス制御を行う方法、並びにそのコンピュータ及びコンピュータ・プログラム | |
US20120066391A1 (en) | System and method for managing resources of a portable computing device | |
CN103744734A (zh) | 一种任务作业处理方法、装置及系统 | |
US8627327B2 (en) | Thread classification suspension | |
US10795886B1 (en) | Dynamic query routing system | |
US9098521B2 (en) | System and method for managing resources and threshsold events of a multicore portable computing device | |
CN115373835A (zh) | Flink集群的任务资源调整方法、装置及电子设备 | |
CN111831437B (zh) | 设备管理方法、装置、存储介质及电子设备 | |
CN111190753A (zh) | 分布式任务处理方法、装置、存储介质和计算机设备 | |
CN111831414A (zh) | 线程迁移方法、装置、存储介质及电子设备 | |
CN111813520A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
WO2020131389A1 (en) | Image classification pipeline |
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 |