技术领域
[0001] 本文公开的主题总体上涉及用于生成关于计算系统性能的报告的方法、系统和机器可读存储介质。
相关背景技术
[0002] 用于监视和管理计算机设备的管理平台通常从被管理设备,以在被管理设备处发生的事件的通知的形式多次收集数据,例如,设备启动、关闭、崩溃、具有网络连接问题、检测到应用被安装或启动、具有新用户登录、具有配置改变等。典型的计算设备可以报告一至五十种不同类型的事件或更多的事件。
[0003] 通常,管理平台基于接收到的事件创建报告,并且每日事件的数目可以在亿的量级。因此,通常需要长时间来使用管理平台针对所有设备和所有客户端生成报告。有时,用户可能想要获得关于特定设备的状态信息,但是可用信息仅覆盖先前发生的事件,例如之前的一天,因为报告是在前一晚以批处理模式生成的。用户想要获得实时信息,但是出于多种原因可能难以生成该实时信息,诸如设备尚未报告在一天期间发生的所有事件、生成报告的计算资源的量很大等。
[0004] 此外,一些报告需要分析多种类型的事件,并且可能事件的组合可以迅速指数地增长。因此,针对所有类型的组合生成报告在计算资源的使用上过于昂贵。
[0005] 因此,能够生成关于计算机设备性能的实时报告的系统将非常有用,尤其是在具有大量设备的平台中。
具体实施方式
[0015] 示例方法、系统和计算机程序涉及实时报告生成。示例仅代表可能的变化。除非另有明确说明,否则组件和功能是可选的,并且可以组合或细分,并且操作可以顺序地变化或组合或细分。在以下描述中,出于解释的目的,阐述了许多特定细节以提供对示例实施例的透彻理解。然而,对于本领域技术人员显而易见的是,可以在没有这些特定细节的情况下实践本主题。
[0016] 在一个方面,管理平台被配置用于提供包括实时信息的实时报告。为了提供实时报告,开发一种用于从被管理设备取回实时信息,然后将来自先前计算的基线报告的信息与来自被管理设备的新取回信息组合的技术。
[0017] 另外,考虑到在报告中组合多个参数的大量可能性,系统允许用户配置用于生成实时报告的预定数目的事件类型。因此,系统的每个用户能够选择与其操作更相关的那些事件类型。通过限制事件类型的数量,管理平台能够减少可能的实时报告的数目,并且能够针对支持所有客户所需的足够量的计算资源进行计划。
[0018] 另外,一些事件类型可能影响多个报告的结果。管理平台能够利用针对一个报告中的一个事件计算的聚合信息,并且使用该信息来简化利用相同事件类型的其他报告的生成。所呈现的实施例通过获得实时数据以在系统中执行诊断来提高数据准确性,因此更快地诊断问题,并且提高计算环境的性能。
[0019] 一个一般方面包括一种方法,该方法包括用于基于由收集器计算设备收集的数据,针对在预定时间段内从至少一个设备接收的第一事件类型的事件生成基线报告的操作。此外,该方法包括用于从用户接收呈现具有实时信息的经更新的报告的请求的操作。实时信息包括关于在预定时间段期间和之后的第一事件类型的事件的信息。该方法还包含用于访问标识哪些事件类型针对用户的实时报告被启用的配置数据,且用于基于配置数据确定经更新的报告是否对于用户是实时可访问的操作。当经更新的报告是实时可用时,向至少一个设备发送针对第一事件类型的未报告事件的事件更新请求。此外,该方法包括用于响应于事件更新请求而接收第一事件类型的新事件,并且用于通过聚合来自基线报告的数据和接收到的第一事件类型的新事件来生成经更新的报告的操作,经更新的报告包括比基线报告更新的数据。此外,该方法包括使经更新的报告呈现在用户界面上。
[0020] 图1是根据一些示例实施例的用于呈现性能报告的用户界面(UI)102。如本文所使用的,报告是包含关于包括至少一个计算设备的特定场景的信息的声明。该信息可以基于在至少一个被管理设备中发生的一个或多个事件,并且该信息还可以包括基于从在至少一个被管理设备中发生的事件中提取的数据的计算(例如,评分)。
[0021] UI 102是由微软端点管理器(MEM)TM生成的样本报告,但是下面描述的实施例可以应用于任何管理平台。MEM是基于云的解决方案,其被设计为解决与在企业中部署、管理和固定设备相关联的挑战。这包括服务器、PC和移动设备。IT管理员能够针对用于访问组织的应用和和数据的个人设备创建策略。MEM包括微软Intune,微软Intune是用于移动设备管理和移动应用管理的工具。Intune是基于云的解决方案,其允许管理员配置和固定iOS、Android、MacOS和Windows设备,并且可以用于管理被管理设备中的应用的部署。
[0022] Intune提供了关于设备合规性、设备健康和设备趋势的报告。此外,用户可以为特定类型的数据创建定制报告。报告类型被分类为四个区域:操作、组织、历史和专家。
[0023] 操作报告提供关于被管理设备的操作的信息。组织报告提供基础设施的总体视图的更广泛的摘要,诸如设备管理状态。历史报告提供一段时间内的模式和趋势。此外,专家报告允许使用特定事件数据来创建定制报告。
[0024] 图1所示的报告针对启动性能,并提供关于启动时间(boot time)的信息,即设备启动所花费的时间量。区域104提供用于从可用报告中选择的菜单。此外,区域106提供针对所选报告的细节。在这种情况下,针对启动设备提供启动评分。该示例示出了76的评分,其优于50的基线评分。呈现三个不同的度量:启动性能、应用可靠性和来自任何地方的工作。针对每个度量,提供透视评分。
[0025] 此外,区域108提供用于配置基线的附加信息、用于报告的过滤器以及用于用户的附加见解和推荐。
[0026] 另一个样本报告可以指示若干被管理设备正在缓慢运行,因为它们具有硬盘驱动器而不是SSD。报告可以提供这样的见解:推荐通过将设备从硬盘驱动器改变为SSD,生产率将提高10%。
[0027] 管理平台提供可以针对每个设备进行配置的切片标记。切片标记是应用于一个或多个设备以将设备分组为一个可切片集合(简称为切片)的标识符或代码。然后针对每个切片生成报告,以获得与切片中的设备相关联的性能度量。
[0028] 许多客户想要实时按切片获得这些报告,但是切片的数目对于系统可能太大以至于不能在适当的时间创建所有报告。计算设备子集的准则是与计算针对报告的度量和见解所需的成本直接相关的重要度量。切片标准与计算成本之间的相关性是指数的,因为切片标准的不同组合呈指数增长。假设每个设备最多100个切片标记,并且如果系统要处理这100
100个切片标记的所有可能组合,则其将导致2 或1,267,650,600,228,229,401,496,703,
205,376(大约一百万的九次方(nonillion))切片。
[0029] 如果切片方法扩展到其他维度,例如OS版本、设备制造商、应用版本、应用作者,则问题变得更加复杂。随着可能值的基数随着更多维度增加,切片的数目呈指数增长。为了说明这种指数增长,让我们假设系统在具有像磁盘类型和制造商一样的两个维度的数据集上计算切片报告。磁盘类型的基数为两个(例如,SSD和HDD),这将导致总共4个(22)个切片。假设制造商参数的基数为10,则其将导致210组合或二十亿切片。组合盘类型和制造商将导致针对每个客户22·210或80亿个切片。如在该示例中看到的,切片报告的计算成本非常大,因此组织通常选择基于期望的支出以具有固定的循环调度(例如,每天一次、每周一次、每月一次)的批处理过程来计算这些报告的集合。
[0030] 所呈现的实施例允许创建实时可切片的报告,其平衡计算成本与切片维度的数目。
[0031] 图2是根据一些示例实施例的用于生成端点见解的示例性系统架构。端点管理器220管理与管理平台相关联的操作,诸如从客户端设备204收集事件,提供用于与系统交互的UI 102(例如,配置管理选项、访问报告、添加自定义事件、添加自定义切片)、生成报告TM
等。一些实施例是参考利用Windows 操作系统的客户端设备来描述的,但是相同的原理可以是用于任何其他类型的设备的利用,诸如Apple、Android、Linux等。
[0032] 在正常操作期间,客户端设备处的事件代理206经由接收事件的事件收集器21 0向端点管理器220发送事件数据。事件收集器210将接收到的事件存储在事件中枢(HUB)212中。事件代理206的一个示例是Intune管理扩展代理,其是安装在计算机设备上用于收集事件的程序。另一种类型的代理是来自微软的客户端配置管理器(CCM)。
[0033] 在某些时刻,事件中枢212中的事件然后被传送到存储所有客户端设备的事件的事件数据库218。事件代理206可以在任何时间发送事件,可以缓冲事件以一起发送多个事件,可以在事件发生之后立即发送事件,或者在调度的时间窗口上发送事件。在一些实施例中,事件代理206在事件发生之后或在预定时间段内发送事件。例如,可以每小时或每晚捆绑发送事件。
[0034] 端点分析模块222分析事件数据并生成报告和见解。端点接口服务器224向用户202提供用UI 102以用于与管理平台交互。前端服务器226可以用于提供管理工具,管理工具提供UI 102。
[0035] 客户端设备204中的实时事件代理208被配置为发送事件,但是实时事件代理208还被配置为接收对未报告事件的更新的请求。例如,当请求实时报告时,端点管理器220向实时事件代理208发送请求,并且实时事件代理208将检查排队等待传输的所有事件,然后发送所有排队的事件。这样,端点管理器220能够调用端点分析模块222以生成具有最新数据的报告。
[0036] 优先级事件收集器214与实时事件代理208交互以收集事件,该事件随后被存储在优先级事件中枢216中,并且最终被传送到事件数据库218。
[0037] 所收集的事件的一些属性包括范围标记、OS版本、制造商等。可以经由两个不同的通道来下载事件,其中第一信道定期地发送事件,并且该第一通道被表征为慢速信道。第二通道是用于收集实时事件的按需通道,并且第二通道被称为快速通道。
[0038] 当生成实时报告时,端点分析模块222可以访问来自事件数据库218、事件中枢21 2和优先级事件中枢216的数据以生成报告。
[0039] 图3示出了根据一些示例实施例的用于基于事件数据的实时收集来生成实时报告的过程。在操作401,用户访问UI 102上的现有报告。该报告称为基线报告,并且其是先前以批处理模式生成的。例如,基线报告是利用针对先前前两天的所有信息生成的。因此,报告不覆盖自午夜以来发生的事件。用户在UI 102上请求生成具有来自被管理设备的最新数据的实时报告。端点接口服务器224将请求路由到端点分析模块222。
[0040] 在操作402处,端点分析模块222生成向设备的请求,该设备与针对用于实时度量和见解所需的最新事件的集合的请求相关联。在一些示例文档中,请求针对尚未被客户端设备204报告的所有事件。在其他示例实施例中,时间段可以包括在请求中,并且客户端设备204将下载落入时间段内的所有未报告的事件。例如,如果基线报告是针对在午夜之前所有事件创建的,则请求可以包括午夜小时的时间戳,因此在午夜之后发生的所有事件以高优先级被报告。
[0041] 在操作403处,优先级事件收集器将请求发送到客户端设备204处的实时事件代理208以用于最新事件集合的实时上传。实时事件代理208在客户端设备处收集信息,并且在操作404处,将所请求的事件下载到优先级事件收集器214。如果客户端设备204没有与请求相关的新信息,并且发回确认,则通知没有新数据要报告。所下载的事件被存储在优先级事件中心216处。在一些实施例中,在操作405处,所下载的事件被存储在事件数据库218中。
[0042] 在操作406处,端点分析模块222从优先级事件中枢216或事件数据库218读取高优先级实时事件数据,并且执行先前利用新下载的信息创建的基线报告的聚合。下面参考图4提供关于聚合过程的更多细节。在执行聚合之后,在操作407处,在UI 102上呈现经更新的实时报告。
[0043] 图4是根据一些示例实施例的用于生成实时报告的方法400的流程图。虽然顺序地呈现和描述了该流程图中的各种操作,但是普通技术人员将理解,一些或所有操作可以以不同的顺序执行、组合或省略、或并行执行。
[0044] 实施例通过将增量(delta)聚合与批量聚合组合并且通过跨少量作业划分聚合工作负载来优化报告生成成本。
[0045] 所呈现的解决方案基于数据聚合(也称为增量聚合)将批处理与实时报告组合。增量聚合是将新接收到的信息(例如,增量数据)与先前报告组合(例如,聚合)以生成实时报告的过程,实时报告反映直到当前时间所收集的事件。当需要事件时,按需从设备收集可报告的事件。
[0046] 在操作401处,接收针对包含由被管理设备收集的最新数据的实时报告的请求。在操作402处,从事件数据库取回当前事件数据,该事件数据库还包括已经被请求利用实时信息进行更新的基线报告。
[0047] 实时报告利用来自基线报告的基线数据,并且还使用来自被管理设备的按需下载以包括最新信息的数据。在操作402处,向与所期望的实时报告相关联的客户端设备发送请求,用以上传尚未下载到管理平台的实时事件。
[0048] 在操作404处,从一个或多个被管理客户端设备接收到实时事件,并且在操作405处将这些事件存储在事件数据库中。在一些示例实施例中,事件可以被存储在临时事件中枢中以在事件最终被存储在事件数据库中之前生成实时报告。
[0049] 在操作406处,将基线报告与新事件数据聚合以生成实时报告。可以基于基线报告数据和可能已经执行的其他中间聚合来执行聚合。因此,聚合可以构建在其他先前聚合之上。
[0050] 在计算用于报告的聚合数据时,可以由客户基于客户标识符(ID)来划分聚合工作。这种划分策略减少了作业的数目,优化了盘IO(输入/输出)操作,并且减少了用于服务的计算费用。
[0051] 所计算的聚合被存储在存储器中,因此聚合的数据可以被再用于其他报告。例如,如果所请求的报告基于启动时间事件,则所聚合的数据将基于启动时间事件(例如,启动时间评分、平均启动时间评分)生成一个或多个度量。然后可以生成使用启动时间事件的其他报告,而不必从数据库获得事件数据。这种可重用性可以通过归一化聚集模式以便于若干相关报告的重用来实现。
[0052] 对于需要多于一个源事件信息并且需要实时报告的聚合,聚合与缓慢计算的批聚合合并以更新当前度量和见解。然后,当接收到其他事件时,这些度量被更新,因此聚合保持当前。
[0053] 在一个示例中,生成针对启动评分的报告,并且用户想要利用当前未报告的信息来更新基线启动评分报告。基于设备启动耗费的时间量,基于启动事件将启动评分分配给设备。在该示例中,对于18到120秒之间的启动时间范围,启动评分在0‑100之间变化。
[0054] 设备启动评分被计算为来自过去30天的所有启动事件的平均值。客户启动评分被计算为属于该客户的所有设备的平均值。
[0055] 此外,每当报告聚合运行时,生成针对所有客户的启动评分。通常,针对呼叫客户来自过去30天的他们的所有设备的的启动事件被认为计算启动评分。管理平台可以管理大量设备,并且针对启动评分报告考虑的事件的体积可以是数千万事件的量级。将所有这些事件加载到存储器中并计算设备启动评分和针对所有客户的租户启动评分在计算上非常昂贵。
[0056] 增量聚合通过考虑在上次聚合计算之后到达系统的新事件来简化计算过程。例如,批处理生成已经计算设备启动评分和客户启动评分并将评分存储在存储器(例如,事件数据库或另一数据库)中。
[0057] 当同一作业运行下一天,而不是再次查看所有数据时,作业标识在前一天的作业运行之后到达系统中的新事件,并且重新计算启动评分。一个示例实施例,利用以下等式来计算客户启动评分:
[0058] CBSt = (CBSt‑1.#CDt‑1 + DBCt.#CDNE)/CDt (1)
[0059] 在等式(1)中,CBSt是当前时间的客户启动评分,CBSt‑1是来自昨天(t‑1)的客户启动评分,#CDt‑1是昨天(t‑1)客户端设备的数目,DBCt是自从昨天以来的针对新事件的设备启动评分,#CDNE是自从昨天以来具有启动事件的设备的数目,并且CDt是当前设备的总数目。
[0060] 图5是根据一些示例实施例的用于在创建实时报告时进行数据管理的方法500的流程图。在操作502处,接收针对实时报告的请求。
[0061] 方法500从操作502流向操作504以请求实时事件数据。此外,在操作506处,进行检查以确定来自先前运行(例如,先前批处理、先前聚合的报告)的报告数据是否可用。如果报告数据可用,则方法500流向操作508,并且如果报告数据不可用,则方法500流向操作510。
[0062] 在操作510处,基于新的事件数据计算新的报告。另外,如果在事件数据库中存在尚未被报告捕获的数据,则数据库中存储的数据也被用于进行针对新的报告的计算。
[0063] 在操作508处,执行聚合以基于先前的报告数据(例如,基线报告)和新的事件数据来计算新报告。需要注意的是,可能存在多个报告中常见的一些事件。单独计算与每个事件相关联的数据(除非报告需要事件数据的组合),并且所计算的事件度量可以用于多种类型的报告。这样,可以以较少的计算资源来计算使用共享事件信息的报告。
[0064] 在一些示例实施例中,管理平台分析由用户提交的请求并且预测可能被请求的一个或多个报告。基于该预测,管理平台主动地对更新所预测的报告起作用,即使它需要从客户端设备发送针对更新的事件信息的请求。例如,设备具有10个启动事件、一些崩溃事件以及相关的应用使用或应用崩溃数据。一个报告被称为设备时间线,其示出在事件发生时的序列。这些事件的序列可以从多个源提取。如果用户正在调查与崩溃相关联的报告,则管理平台检测到用户将可能选择设备时间线报告。因此,管理平台开始从相关联的客户端设备请求经更新的信息以准备执行数据聚合来生成针对设备时间线的实时报告。
[0065] 在操作512处,所计算的报告被存储在存储器中,并且在操作514处,在UI上呈现报告。
[0066] 在一些示例实施例中,管理平台可配置为当发现问题时采取自动动作。例如,如果虚拟被管理设备由于缺乏存储器而经常崩溃或运行某些应用出现问题,则管理平台将自动增加用于虚拟设备的存储器量。类似地,如果虚拟设备用尽盘空间,则管理平台将增加可用于虚拟设备的虚拟盘存储装置的数量。
[0067] 图6是根据一些示例实施例的用于确定哪些切片被配置用于优先的实时报告的表。如果所有客户具有按照任何属性或属性组合进行切片报告的能力,则系统的复杂性将几乎无法管理。这就是为什么在一些示例实施例中,每个客户具有针对高优先级报告选择哪些切片(例如,标签)要选择的能力,该高优先级报告是包括从被管理设备获得实时数据的报告。
[0068] 管理平台允许每个客户选择针对优先级报告哪个切片被启用。一种方法包括按客户和切片创建表602以确定哪个是优先的切片。每行对应于不同的客户,并且第一列用于客户ID。剩余的列用于不同的切片。然后,对应的单元值指示切片是否被优先(例如,1)或不被优先(例如,0)。
[0069] 当用户请求优先级报告时,检查表602以确定报告所需的切片是否可用于按需实时报告,即高优先级事件。然后可以从客户端设备按需下载被配置用于实时报告的针对高优先级切片的那些事件。
[0070] 其他示例实施例可以利用用于由客户配置切片的其他数据结构,诸如索引、散列表、客户允许切片的列表等。
[0071] 解决方案被设计成使得可以利用管理平台可以访问的任何元数据属性来执行切片。示例场景是“基于设备健康的自动化部署环”。针对这种用例的每个部署环可以被认为是一组经切片的设备,并且因此给定的应用或驱动器可以基于先前部署环中的设备的健康而自动部署到下一个大环。
[0072] 在一些示例实施例中,每个客户允许的切片的数目可基于客户账户来配置,诸如每月收入、设备分钟数等。通过限制系统中可用的切片的数目,管理平台能够限制针对所有可用的数据切片生成见解所需的计算资源的量。
[0073] 在一些示例实施例中,向客户提供UI,用于选择可用于超优先级报告的切片。客户能够添加、删除或改变配置的切片的数目。
[0074] 图7是根据一些示例实施例的用于实时报告生成的方法700的流程图。计算机实现的方法700用于故障排除和提高计算机性能。虽然顺序地呈现和描述了该流程图中的各种操作,但是普通技术人员将理解,一些或所有操作可以以不同的顺序执行、组合或省略、或并行执行。
[0075] 操作702用于基于由收集器计算设备收集的数据,针对在预定时间段内从至少一个设备接收到的第一事件类型的事件生成基线报告。
[0076] 方法700从操作702流向操作704,用于从用户接收呈现具有实时信息的经更新的报告的请求。实时信息包括关于在预定时间段期间和之后的第一事件类型的事件的信息。方法700从操作704流向操作706以访问标识哪些事件类型针对用户的实时报告被启用的配置数据。
[0077] 从操作706,方法700流向操作708,其中,基于配置数据,做出关于经更新的报告是否对于用户是实时可访问的确定。
[0078] 从操作708,方法700流向操作710,其中,当经更新的报告是实时可用时,向至少一个设备发送针对第一事件类型的未报告事件的事件更新请求。
[0079] 方法700从操作710流向操作712,用于响应于事件更新请求而接收第一事件类型的新事件。
[0080] 方法700从操作712流向操作714,用于通过聚合来自基线报告的数据和接收到的第一事件类型的新事件来生成经更新的报告,经更新的报告包括比基线报告更新的数据。
[0081] 方法700从操作714流向操作716以使经更新的报告呈现在用户界面上。
[0082] 在一个示例中,聚合数据包括基于先前计算的统计值和在针对事件类型的新事件中接收到的信息来计算与事件类型相关联的当前统计值。
[0083] 在一个示例中,方法700还包括基于经更新的报告中的信息来改变至少一个设备的配置。
[0084] 在一个示例中,方法700还包括在用户界面中提供用于配置事件类型的选项,该事件类型被启用以用于实时访问。
[0085] 在一个示例中,方法700还包括标识基于关于第一事件类型的信息的相关报告,以及基于被执行以生成经更新的报告的计算来更新相关报告。
[0086] 在一个示例中,至少一个设备中的第一代理被配置用于将事件下载到端点管理器,其中至少一个设备中的第二代理被配置用于接收事件更新请求以提供实时事件数据。
[0087] 在一个示例中,基线报告以批量模式被定期计算。
[0088] 在一个示例中,用户界面包括请求实时信息以更新基线报告的选项。
[0089] 在一个示例中,配置数据按照客户标识符和切片类型存储在表中。
[0090] 在一个示例中,报告是包含关于包括至少一个计算设备的特定场景的信息的声明,该信息基于在至少一个计算设备处发生的一个或多个事件。
[0091] 鉴于以上公开内容,下面阐述各种示例。应注意,隔离或组合所采取的实例的一或多个特征应视为在本申请的公开内。
[0092] 另一总体方面是一种包括存储器的系统,所述存储器包括指令和一个或多个计算机处理器。指令在由一个或多个计算机处理器执行时使一个或多个计算机处理器执行操作,操作包括:基于由收集器计算设备收集的数据,针对在预定时间段内从至少一个设备接收到的第一事件类型的事件生成基线报告;从用户接收呈现具有实时信息的经更新的报告的请求,实时信息包括关于在所述预定时间段期间和之后的第一事件类型的事件的信息;访问标识哪些事件类型针对用户的实时报告被启用的配置数据基于配置数据,确定经更新的报告是否对于是用户实时可访问的;当经更新的报告是实时可用时,向至少一个设备发送针对第一事件类型的未报告的事件的事件更新请求;响应于事件更新请求而接收第一事件类型的新事件;通过聚合来自基线报告的数据和接收到的第一事件类型的新事件来生成经更新的报告,经更新的报告包括比基线报告更新的数据;以及使经更新的报告呈现在用户界面上。
[0093] 在又一个总体方面中,一种机器可读存储介质(例如,非暂态存储介质)包括指令,指令在由机器执行时使机器执行操作,操作包括:基于由收集器计算设备收集的数据,针对在预定时间段内从至少一个设备接收到的第一事件类型的事件的数据来生成基线报告;从用户接收呈现具有实时信息的经更新的报告的请求,实时信息包括关于在所述预定时间段期间和之后的所述第一事件类型的事件的信息;访问配置标识哪些事件类型针对用户的实时报告被启用的数据;基于配置数据,确定更新的报告是否能够针对用户是实时可访问得;当经更新的报告是实时可用时,向至少一个设备发送针对第一事件类型的未报告的事件的事件更新请求;响应于事件更新请求而接收第一事件类型的新事件;通过聚合来自基线报告的数据和接收到第一事件类型的新事件来生成经更新的报告,经更新的报告包括比基线报告更新的数据;以及使经更新的报告呈现在用户界面上。
[0094] 图8是示出可以在其上实现或控制本文描述的一个或多个示例过程实施例的机器800的示例的框图。在替代实施例中,机器800可以作为独立设备操作,或者可以连接(例如,联网)到其他机器。在联网部署中,机器800可以在在服务器机器、客户端机器或服务器‑客户端网络环境中两者的容量中操作。在示例中,机器800可以充当对等(P2P)(或其他分布式)网络环境中的对等机器。此外,虽然仅示出了单个机器800,但是术语“机器”还应当被视为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的任何一种或多种方法(诸如经由云计算、软件即服务(SaaS)或其他计算机集群配置)的机器的任何集合。
[0095] 如本文所述,示例可以包括或可以由逻辑、多个组件或机构操作。电路系统是在包括硬件(例如,简单电路、门、逻辑)的有形实体中实现的电路的集合。电路系统成员可以随时间和底层硬件可变性而灵活。电路系统包括可单独或组合地在操作时执行指定操作的成员。在示例中,电路系统的硬件可以被极大地设计为执行特定操作(例如,硬连线)。在示例中,电路系统的硬件可以包括可变地连接的物理组件(例如,执行单元、晶体管、简单电路),其包括物理地修改(例如,磁性地、电气地、通过不变的有质量粒子的可移动放置)以对特定操作的指令进行编码的计算机可读介质。在连接物理组件时,硬件组件的底层电特性被改变(例如,从绝缘体到导体,反之亦然)。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接在硬件中创建电路系统的成员,以在操作时执行特定操作的部分。因此,当装置操作时,计算机可读介质通信地耦合到电路系统的其它组件。在示例中,可以在多于一个电路系统的多于一个成员中使用任何物理组件。例如,在操作下,执行单元可以在一个时间点被用在第一电路系统的第一电路中,并且在不同的时间被第一电路系统中的第二电路或第二电路系统中的第三电路复用。
[0096] 机器(例如,计算机系统)800可以包括硬件处理器802(例如,中央处理单元(CPU)、硬件处理器核心或其任何组合)、图形处理单元(GPU)803、主存储器804和静态存储器806,其中的一些或全部可以经由互连(例如,总线)808彼此通信。机器800还可以包括显示设备810、字母数字输入设备812(例如,键盘)和用户界面(UI)导航设备814(例如,鼠标)。在示例中,显示设备810、字母数字输入设备812和UI导航设备814可以是触摸屏显示器。机器800可以另外包括大容量存储设备(例如,驱动单元)816、信号生成设备818(例如,扬声器)、网络接口设备820和一个或多个传感器821,诸如全球定位系统(GPS)传感器、罗盘、加速度计或另一传感器。机器800可以包括输出控制器828,诸如串行(例如,通用串行总线(USB))、并行或其他有线或无线(例如,红外(IR)、近场通信(NFC))连接,以与一个或多个外围设备(例如,打印机、读卡器)通信或控制一个或多个外围设备。
[0097] 大容量存储设备816可以包括机器可读介质822,其上存储了体现或由本文描述的技术或功能中的任何一个或多个使用的一组或多组数据结构或指令824(例如,软件)。指令824还可以在由机器800执行期间完全或至少部分地驻留在主存储器804内、静态存储器806内、硬件处理器802内或GPU 803内。在示例中,硬件处理器802、GPU 803、主存储器804、静态存储器806或大容量存储设备816中的一个或任何组合可以构成机器可读介质。
[0098] 虽然机器可读介质822被示为单个介质,但是术语“机器可读介质”可以包括被配置为存储一个或多个指令824的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“机器可读介质”可以包括能够存储、编码或携带指令824以供机器800执行并且使机器800执行本公开的技术中的任何一个或多个的任何介质,或者能够存储、编码或携带由此类指令824使用或与此类指令824相关联的数据结构的任何介质。非限制性机器可读介质示例可以包括固态存储器以及光学和磁介质。在示例中,聚合机器可读介质包括具有多个粒子的机器可读介质822,所述多个粒子具有不变(例如,静止)质量。因此,总线机器可读介质不是暂时性传播信号。总线机器可读介质的具体示例可以包括非易失性存储器,诸如半导体存储器设备(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和闪存设备;磁盘,诸如内部硬盘和可移动盘;磁光盘;以及CD‑ROM和DVD‑ROM盘。
[0099] 还可以经由网络接口设备820使用传输介质在通信网络826上发送或接收指令824。
[0100] 贯穿本说明书,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管一个或多个方法的单独操作被示出和描述为单独的操作,但是单独操作中的一个或多个可以同时执行,并且不需要以所示顺序执行操作。在示例配置中呈现为单独组件的结构和功能可以被实现为组合结构或组件。类似地,呈现为单个组件的结构和功能可以被实现为单独的组件。这些和其他变化、修改、添加和改进落入本文的主题的范围内。
[0101] 本文所示的实施例被足够详细地描述以使本领域技术人员能够实践所公开的教导。可以使用和导出其他实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和改变。因此,具体实施方式不应被认为是限制性的,并且各种实施例的范围仅由所附权利要求以及这些权利要求所享有的等同物的全部范围限定。
[0102] 另外,如本公开中所使用的,形式“A、B或C中的至少一个”、“A、B和C中的至少一个”等的短语应当被解释为从包括“A、B和C”的组中选择至少一个。除非另有明确说明,否则在本公开中,这种措辞方式并不意味着“A、B中的至少一个和C中的至少一个”中的“至少一个”。如本公开中所使用的,示例“A、B或C中的至少一个”将覆盖以下选择中的任何选择:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}和{A,B,C}。
[0103] 此外,可以为本文描述的资源、操作或结构提供多个实例作为单个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定操作。设想了其他功能分配,并且可以落入本公开的各种实施例的范围内。通常,作为示例配置中的单独资源呈现的结构和功能可以被实现为组合结构或资源。类似地,呈现为单个资源的结构和功能可以被实现为单独的资源。这些和其他变化、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图被认为是说明性的而非限制性的。