首页> 中国专利> 使用延迟确定和CPU使用率确定的安全系统操作

使用延迟确定和CPU使用率确定的安全系统操作

摘要

复杂系统中的性能异常可能难以识别和诊断。在示例中,可以确定与一个或多个系统相关联的延迟。在另一示例中,可以确定与一个或多个系统相关联的CPU使用率。可以基于确定的延迟和/或CPU使用率来确定异常事件。在一些示例中,至少部分地基于确定事件,系统可以被控制在安全状态和/或被重新配置,以消除异常事件。

著录项

  • 公开/公告号CN113195331A

    专利类型发明专利

  • 公开/公告日2021-07-30

    原文格式PDF

  • 申请/专利权人 祖克斯有限公司;

    申请/专利号CN201980084468.4

  • 申请日2019-12-19

  • 分类号B60W60/00(20060101);G06F9/50(20060101);

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人刘瑜

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 12:02:28

说明书

相关申请

本PCT国际专利申请要求于2018年12月19日提交的美国专利申请号16/225,997和于2018年12月19日提交的美国专利申请号16/226,128的提交日的优先权,其全部内容通过引用并入本申请。

背景技术

诸如自动驾驶车辆的各种系统包括许多计算系统接收、生成并输出不同数据。例如,在自动驾驶车辆的情况下,此类数据对于在环境中安全导航而言是必要的。仅举几例来说,此类数据可包括:捕获有关环境的信息的传感器系统、根据传感器数据生成有关环境中对象的信息的感知系统以及使这些系统执行各种操作的控制系统(例如,使车辆遵循由规划系统生成的路线的控制系统)。这些系统中的每一个都需要自身的处理和功能。然而,在某些情况下,由于系统的互连性和/或复杂性,可能难以识别操作中的误差来源。例如,随着软件被更新和/或系统被更改,可能难以对增加的延迟和/或增大的CPU使用率的起因进行识别并排除故障。在一些示例中,这些缺陷可能导致一个或多个系统发生故障,这可能导致不安全的操作。

附图说明

参照附图进行详细描述。在附图中,附图标记的最左边的数字标识附图标记第一次出现的图。在不同图中使用相同的附图标记表示相似或相同的部件或特征。

图1示出了示例车辆,例如自动驾驶车辆,以及用于确认自动驾驶车辆的系统在安全参数内运行以及用于响应于确定影响系统的异常事件而使车辆转变到安全状态的示例组件,如本文所描述的。

图2A和图2B示出了示例图,该示例图分别包括针对系统中信息的测量延迟的聚合和测量延迟的分布,如本文所描述的。

图3示出了用于识别和跟踪自动驾驶车辆的多个系统中的堆栈功能的示例场景,如本文所描述的。

图4A和图4B示出了示例图,该示例图分别包括火焰图,该火焰图示出了跨两个相关系统的功能的CPU使用率以及测量的CPU使用率的分布,如本文所描述的。

图5描绘了用于实现延迟和CPU使用率技术的示例架构的框图,如本文所描述的。

图6是示出了用于响应于检测到延迟事件而转变到安全停止的示例方法的流程图,如本文所描述的。

图7是示出了用于生成针对系统的延迟数据的示例方法的流程图,如本文所描述的。

图8是示出了用于响应于检测到CPU使用率事件而转变到安全停止的示例方法的流程图,如本文所描述的。

图9是示出了用于确定针对系统的CPU使用率并且定义关于针对自动驾驶车辆的CPU使用率的安全操作过程的示例方法的流程图,如本文所描述的。

具体实施方式

本公开描述了用于确定针对复杂系统的延迟和资源使用并因此识别响应的方法、装置和系统。在本文所述的说明性示例中,此类响应可包括例如响应于检测到车辆处的异常事件而控制车辆。例如,自动驾驶车辆可能包括多个计算系统,而每个计算系统需要不同的数据输入并生成不同的数据输出,而且对于车辆的正确和安全操作而言通常是必要的。由于系统的互连性以及正在执行的功能和生成的数据的量,需要确保所有系统正常运行。

在一些情况下,可以通过从数据(或数据分组)实例接收标签信息来确定逐个系统(或逐个子系统)延迟。例如,在此处描述的实现中,系统可以用唯一标识符和时间戳信息来标记生成的数据。例如,时间戳信息可以包括以下各项中的一个或多个:接收到用于创建所生成数据的数据的时间、生成数据的时间和/或由系统输出数据的时间中的一个或多个时间。在所生成的数据用于生成新数据时,例如,当数据从系统传播到系统(或从子系统传播到子系统)时,唯一标识符可以进一步与该下游数据相关联。在一些示例中,本文描述的技术可以使用标签信息来确定系统延迟,例如,通过将关联于系统处接收到输入数据的时间戳信息与关联于用输入数据所生成的新数据的生成和/或输出的时间戳信息进行比较来确定系统延迟。

在一些示例中,可以将根据本文描述的技术确定的延迟与预期延迟范围或操作延迟范围进行比较。如果所确定的延迟在操作延迟范围内,则车辆可正常运行。然而,如果所确定的延迟在操作延迟范围之外,则本文描述的技术可以识别与延迟相关的事件。此外,在一些实施方式中,本文所描述的技术方案可响应于事件而将车辆控制在安全状态。例如,将车辆控制在安全状态下可包括:采取一种或多个行动来缓解延迟数据。例如,此类行动可包括:使车辆减速、发出警告和/或执行安全停止轨迹。

此处描述的技术还可用于确定预期延迟范围或操作延迟范围。例如,在一些实例中,可以确定在一时间段内一个或多个系统的延迟,并且这种数据可被表征,例如,作为分布。表示这种分布的函数可用于识别针对系统的操作延迟范围。在一些示例中,操作范围可以是包括所有所测量的延迟在统计学上的显著数量的范围。

在其他示例中,本文描述的技术可以确定针对自动驾驶车辆上的一个或多个系统的CPU使用率信息。例如,某些实施方式包括:生成表示在车辆上运行的所有处理的数据结构。这种数据结构可以是一个或多个前缀树,这些前缀树中每个节点表示功能,而分支表示处理中的功能。在一些示例中,本文描述的技术还可以生成将每个功能与唯一功能标识符相关联的符号表,以使前缀树中的节点包括唯一功能标识符中的一个。一些示例还可以使唯一节点ID与前缀树中的每个节点相关联。

在此描述的示例技术还可以对系统的操作进行采样,例如以确定在周期性采样时间处在CPU上操作的功能。在一些示例中,这种采样可针对每个样本识别与CPU上功能相关联的唯一节点ID。唯一节点ID还可以与对应于采样时间的时间戳相关联。例如,可以存储包括读出的唯一节点ID和时间戳的采样分组。这些采样分组可用于确定针对任何时间段的CPU使用率,这些采样分组包括但不限于与针对任何给定时间的任何功能相关联的堆栈轨迹。例如,通过取回与(由时间戳信息确定的)时间段相关联的数据分组,唯一节点ID可用于重新创建与CPU上功能相关联的堆栈轨迹。在一些示例中,这种时间段可以是包括上述延迟相关事件的时间范围。

CPU使用率信息也可以用于确定针对系统的预期CPU使用率。例如,可以在一时间段(例如,车辆的运行时间、窗口时间或操作时间)对根据刚刚描述的示例所确定的CPU使用率进行聚合。操作的CPU使用率范围可以是统计显著的数量的采样时间内系统操作的范围。在其他实例中,这里描述的示例可以实时或接近实时地确定CPU使用率并且将所确定的CPU使用率与阈值范围进行比较。在一些示例中,如果确定的CPU使用率在阈值范围之外,则可以确定基于CPU的事件。此外,在一些实施方式中,这里描述的技术可以响应于事件而将车辆控制在安全状态。例如,将车辆控制在安全状态可以包括采取一个或多个动作来缓解事件。例如,此类动作可包括使车辆减速、发出警告和/或执行安全停止轨迹。

在此描述的技术方案可以涉及利用数据,以使诸如自动驾驶车辆的车辆能够在绕过环境中的物体的同时在环境中导航。在此描述的技术方案可以利用关于数据和系统功能的信息来确保系统具有它们需要的数据并在当在环境中行驶时提供车辆的安全操作的参数内运行。此外,由于可提高系统功能的可靠性,所以本文所描述的技术方案比传统技术更快和/或更稳健。换而言之,本文所描述的技术方案提供了对现有导航技术的技术改进。同时,本文所描述的技术方案还可以通过例如更准确地提供到预定目的地的安全通路来提供更平稳的乘坐并且改进安全结果。

在本公开针对自动驾驶车辆的其他示例中,本文描述的技术方案可以在环境部署自动驾驶车辆之前对规划和/或测试系统功能进行辅助。例如,对于新的软件版本、新的系统部件或新的子系统部件或者其它变化而言,本文描述的技术方案可以用于比较性能参数。基于这种比较,这种技术方案可允许提高系统设计和/或性能。此外,在该示例中,关于新软件、组件等的数据可以用于确定针对使用该新软件、新系统组件等的车辆的安全操作的安全参数或范围。例如,可以对照所确定的参数来测量随后的性能。

虽然本公开在示例中使用自动驾驶车辆,但是本文描述的技术不限于在自动驾驶车辆中的应用。在一些实例中,本文描述的技术可用于确定和/或表征性能参数,例如,针对许多复杂系统中的任何一个的延迟和/或资源使用。此外,本文描述的技术方案可用于识别和/或减轻此类复杂系统中的异常功能,例如事件。在一些示例中,包括执行功能和/或传递消息的相关系统的任何复杂系统都可以受益于所描述的技术方案。作为非限制性示例,本文描述的技术方案可用于机载和/或地面交通工具,以及其他完全自主机器人系统或部分自主机器人系统。此外,非自动驾驶车辆也可以从这里描述的技术方案中受益,例如在缺乏可行数据的情况下的安全性。

图1-图9提供了与这里描述的技术方案相关联的其它细节。

图1示出了示例车辆102正在行驶通过的示例环境100。示例车辆102可以是无人驾驶车辆,例如被配置为根据美国国家公路交通安全管理局发布的5级分类操作的自动驾驶车辆。5级分类描述了一种能够在整个行程中执行所有对安全至关重要的功能的车辆,同时在任何时候都不希望驾驶员(或乘员)控制该车辆。在这样的示例中,因为车辆102可以被配置为控制包括所有停车功能的从行程开始到完成的所有功能,所以它可以不包括驾驶员和/或用于驱动车辆102的控制装置,例如方向盘、加速踏板和/或制动踏板。这是示例,并且这里描述的系统和方法可并入到具有复杂子系统和/或系统间通信的任何系统。作为非限制性示例,此类系统可包括地面、空中或水上交通工具,包括如下的范围:从需要一直由驾驶员手动控制的交通工具到部分或完全自主控制的交通工具。在一些示例中,这些技术可以在包括执行功能的一个或多个计算系统的任何系统中实现。从这里的描述可以意识到,本公开不限于车辆。

示例车辆102可以是任何配置的车辆,例如厢式货车、运动型多功能车、跨界车、卡车、公共车辆、农用车辆和/或工程车辆。车辆102可以由一个或多个内燃机、一个或多个电动机、氢动力、它们的任何组合和/或任何其他合适的动力源提供动力。尽管示例车辆102具有四个车轮,但本文所述的系统和方法可以并入到具有更少或更多数量的车轮、轮胎和/或履带的车辆。示例车辆102可以具有四轮转向并且可以在所有方向上大体上以相同的性能特征操作,例如,使得车辆102的第一端在沿第一方向行驶时是车辆102的前端,并且使得当沿相反方向行驶时第一端变成车辆102的后端。同理,车辆102的第二端在沿第二方向行驶时为车辆的前端,而使得在沿相反方向行驶时,第二端变为车辆102的后端。这些示例特征可促成更好的操控性,例如,在狭小的空间或拥挤的环境(如停车场和/或市区)促成更好的操控性。

示例车辆102可用于行驶通过环境100并收集数据。例如,车辆102可以包括一个或多个传感器系统,上述多个传感器系统包括第一传感器系统104a和第二传感器系统104b(这里统称为和/或与其他未标记的传感器系统一起称为传感器系统104)。例如,传感器系统104可以包括:LIDAR传感器、RADAR传感器、SONAR传感器、飞行时间传感器、图像传感器、音频传感器、红外传感器、位置传感器等或其任何组合。传感器系统104可以被设置为捕获,例如生成,与环境100相关联的传感器数据。在所示出的示例中,第一传感器系统104a可以生成第一传感器数据106,并且第二传感器系统104b可以生成第二传感器数据108。例如,第一传感器系统104a可以包括LiDAR传感器,在这种情况下第一传感器数据106可以包括点云,并且第二传感器系统104b可以包括相机,在这种情况下第二传感器数据108可以包括图像数据。这些示例仅用于进行说明,因为传感器系统104可以包括任何数量、类型和/或模态的传感器系统。

车辆102还可以包括一个或多个计算系统。例如,图1图示了第一计算系统110、第二计算系统112和第三计算系统114(在本文中统称为计算系统110、112、114并且包括未示出的其它计算系统)。尽管图中示出了这三个示例系统,但是车辆可以包括更多、更少和/或其他系统。虽然图1出于进行说明的目的示出了单个系统,但这样的计算系统可以包括在一个、两个、三个或更多个计算系统上运行的虚拟机、处理等。计算系统110、112、114的示例计算系统可以包括以下各项中的一个或多个:定位系统、感知系统、规划系统、系统控制器、发射器、地图系统等。上述系统和其他示例性系统(可以是组件和/或子系统)中的一些在本文中参照图5进一步详述,包括参照图5。在其他示例中,计算系统110、112、114还可以或替代性地包括例如经由有线连接或无线连接与车辆102通信的系统。计算系统110、112、114可以被配置为例如通过执行一个或多个功能来执行一个或多个处理,并且可以使用数据来执行那些功能。例如,如图1所示出的,第一计算系统110可以被配置为接收第一传感器数据106和第二传感器数据108并且生成包括数据116的输出。与之类似地,第二计算系统112可以被配置为接收第二传感器数据108并且生成包括数据118的输出。第三计算系统114可以被配置为接收由第一计算系统110生成的数据116及由第二计算系统112生成的数据118,并且被配置为生成包括数据120的输出。在一些示例中,数据120可以是用于控制车辆的操作的驱动控制数据,通常如图1所示。

同样如图1所示,在本公开的实施方式中,附加信息可以关联于与车辆102相关联的各种类型的数据。例如,可以在接收、生成和/或传输时用时间戳信息和/或唯一标识符中的一个或两个来标记系统中的数据。如图1所示,由第一传感器系统104a生成的数据106的实例可具有相关联的第一标签122a,上述第一标签包括第一时间戳信息(t

类似于数据106,由第二传感器系统104b生成的数据108也可以包括第二标签122b,该第二标签包括第二时间戳信息(t

图1还示出了当数据106、108通过自动驾驶车辆102的系统传播时如何附加和/或更新标签。例如,如图所示,标签122c、122d与由第一计算系统110生成的数据116相关联,标签122e与由第二计算系统112生成的数据118相关联,并且标签122f、122g、122h与由第三计算系统114生成的数据120相关联。例如,与数据116相关联的标签122c、122d可以包括:包括在相应标签122a、122b中的一些或全部信息,以及第三时间戳信息(t

在图1的示例中,来自标签122a的所有信息被示为保留在标签122c中,并且来自标签122b的所有信息被示为保留在标签122d中。然而,在其他实施方式中,一些数据可能不被复制或转移。作为非限制性示例,可以从标签122c、122d中省略时间戳信息124a、124b。在该示例中,可以通过标签122a、122b而不是通过标签122c、122d来访问被省略的时间戳信息124a、124b。此外,虽然标签124a、124b被示为包括相同的第三时间戳信息(t

除了第四时间戳信息(t

与之类似地,第三计算系统114可以更新新的时间戳或生成新的时间戳,例如以示出数据106、108通过车辆102的系统的传播或“流动”。例如,标签122f通常可以对应对于标签122c,标签122g通常可以对应于标签122d,并且标签122h通常可以对应于标签122e。然而,这些标签还包括第五时间戳信息(t

根据刚刚描述的架构,可以使用标签122来跟踪数据的每个实例。例如,可以按照顺序用标签122a、122c和122e对通过第一传感器系统104a生成至输出以作为控制数据120的数据106的某个实例进行跟踪。与之类似的,按照顺序,标签122b、标签122d和标签122g可以说明数据108的实例的第一流程,并且按照顺序,标签122b、122e标签和标签122h可以示出数据108的相同实例的第二流程。

如本文进一步详述的,本公开的技术可以使用关于诸如标签122的数据的信息,以确定、表征和/或调查车辆102的性能参数。例如,技术可以确定与车辆102的系统相关联的延迟。在一个示例中,可以使用第一时间戳信息124a来确定与第一传感器系统104a处的数据106的所示实例相关联的延迟。例如,与数据106相关联的延迟可以是第一传感器系统104a捕获数据106的时间与第一传感器系统104a输出数据分组128a的时间之间的差,这些时间可以包括在第一时间戳信息124a中。在实施方式中,第一传感器系统104a可以例如以预定频率,例如以第一传感器系统104a的帧速率,连续捕捉和输出包括数据106的新实例的新分组。包括数据106的每个分组可以具有相关联的第一唯一ID 126,例如,第一唯一ID可以是整数,并且可基于数据106的每个实例来确定独立延迟。

在另一个非限制性示例中,第一计算系统110的延迟可以通过研究与标签122c和标签122d中的一个或两个相关联的第三时间戳信息124c来计算。例如,与第一计算系统110相关联的延迟可以被计算为第一计算系统110发布数据116的时间与在第一计算系统110处接收数据106和/或数据108相关联的时间之间的差。例如,因为数据116包括标签122c和标签122d二者,所以可以研究这些标签以确定用于生成数据116的那些数据106、108的实例。使用关于那些实例的信息,例如在第一计算系统110处接收每个实例的时间,可以确定针对第一计算系统110的延迟。在一些示例中,第一计算系统110的延迟可以是在发布数据116的时间与在第一计算系统110处接收到用于生成数据116的数据106或数据108的任何实例的最早时间之间的差。

从上文应该显而易见的是,用于确定延迟的这种技术可以用于复杂的系统(例如,非线性系统),其中延迟无法通过测量总执行时间来确定。此外,如上文所示出和描述的,可以针对各个部件、部件的集合和/或作为整体的系统确定延迟(例如,从传感器输入到车辆102的车辆控制的延迟)。在一个示例中,因为整个车辆102中数据的各个实例都是被跟踪的,所以可以确定车辆在预定延迟内运行,即使在各个系统没有运行时也是如此。传统系统可视为多个单独的子系统,并且如果一个子系统以高于预期的延迟运行,则可以确定系统运行不正常。然而,像自动驾驶车辆这样的复杂系统可能会在一个子系统上发生延迟事件,但仍能正常运行。例如,考虑车辆接近非常繁忙的十字路口的例子。十字路口可能有在多个方向中等待过马路或正在过马路的大量行人、骑自行车的人、建筑物、停放和移动的车辆以及其他物体。在这些实例中,识别环境中物体的一个或多个车辆系统可能比大多数其他操作条件花费更长的时间。由于识别所有对象以确保安全旅行所需的处理时间增加,因此延迟可能高于该系统处的预期(或测试)。然而,本文描述的技术可以用于确定其他系统比正常系统更快地运行,并且因此,车辆的总体延迟可以在安全操作范围内。

在一些示例中,车辆102可包括诊断系统132,该诊断系统包括用于确定车辆的一个或多个系统的性能特征的功能。系统延迟是一种性能特征的示例。在一些示例中,例如,当性能特征在预期性能范围之外和/或高于/低于阈值时,诊断系统132可以确定异常事件。在一些实例中,诊断系统132还可以响应于确定异常事件来控制车辆102。在所示出的示例中,诊断系统132包括延迟确定组件134、延迟阈值组件136和安全状态组件138。

延迟确定组件134可以接收与由车辆102的一个或多个系统生成的数据相关联的标签122。虽然,为了清楚的原因,图1示出了延迟确定组件134仅接收第一标签信息122a和第三标签信息122c,但实际上,延迟确定组件134可以接收车辆102处的所有标签信息,包括但不限于第二标签信息122b、第四标签信息122d和第五标签信息122e。在其他实施例中,延迟确定组件134还可以或替代性地接收,例如,包括数据分组128的其他信息。在示例实施例中,延迟确定组件134可以确定与一个或多个计算系统相关联的延迟。举例而言,通常,如上文所讨论的,延迟确定组件134可以使用标签122d来确定第二计算系统112的延迟。在至少一些示例中,延迟确定组件134可以对收集的标签执行统计分析。作为非限制性示例,可以在限定的时间窗口(例如,2秒-或者基于车辆的功能,例如车辆的速度所确定的)对标签122进行聚合并针对计算系统110、112、114和/或其组合中的任一个或多个确定分布的统计特性(平均值、方差/标准偏差、最小值、最大值等)。因此,由延迟确定组件确定的延迟可以是瞬时延迟,例如,与数据的单个实例相关联,或与许多实例的聚合相关联。对于后者而言,可以使用统计分析来确定所确定的延迟。

延迟阈值组件136可以包括关于针对车辆102的系统的每个系统的延迟阈值的信息。例如,延迟阈值组件136可以确定由延迟确定组件134确定的延迟是否落入阈值范围或预期延迟范围内。当多个系统中一个系统的延迟位于预期范围之外时,延迟阈值组件136可以确定异常性能事件。如本文进一步描述的,延迟阈值组件136还可以被配置为确定针对车辆102的系统中的一个或多个系统的延迟阈值或范围。例如,延迟阈值组件136可以接收指示针对一个或多个系统的实际延迟数据的历史数据(其中可能包括统计数据),并基于历史延迟来确定可接受的操作范围。

安全状态组件138可以从延迟阈值组件136接收事件信息,例如,当延迟阈值组件136检测到异常事件时接收事件信息,并且响应于该事件开始一个或多个操作。在所示的示例中,安全状态组件138可以通过发布安全状态控制140来控制车辆102。例如,安全状态控制140可以控制车辆102执行安全停止操纵。示例性可安全停止操纵可以包括控制车辆102遵循轨迹142,例如,车辆102可以沿着该轨迹安全地导航到路边。一旦处于路边,车辆102可被置于安全状态,例如,其中一些或所有功能被禁用。车辆102可以保持在该状态直到执行进一步的诊断等,例如,以确定异常延迟事件的来源和/或纠正事件。

使车辆102遵循轨迹142的安全状态控制140只是安全状态控制的一个示例。在其他示例中,安全状态组件138可以控制车辆102减速,而不是使车辆102完全停止。举例而言,例如,由于可接受的延迟范围在以较慢的速度来扩大,所以较慢的速度会更容忍事件。

因此,图1提供了可以被实现来在多个系统上确定延迟的示例技术。在一些示例中,当延迟在预期延迟范围之外时,可以识别异常延迟事件并且可以响应于该动作而采取安全动作。

图2A和图2B是提供与车辆102的系统之一相关联的延迟数据的可视化的图。图2A示出的图200a展示了系统(诸如计算系统110、112、114之一)的延迟的聚合。图2B包括示出了图2A中示出的延迟数据的分布以及表示分布的累积分布函数的分布的图。

图2A中的图200a示出了聚合数据202,其在该示例中仅图示了与诸如第一计算系统110的单个系统相关联的延迟信息。具体地,图2A中的x轴204表示消息计数。在此示例中,消息计数中的每条消息都与系统生成(和/或输出)的数据实例相关联。图200a的y轴206显示了总延迟,在该示例中以毫秒为单位。因此,数据202通常示出系统生成的每个数据分组(或数据)的系统延迟的曲线。例如,如本文所述,可以使用唯一ID和时间戳信息来确定针对系统的延迟。例如,如果图200a描绘了第一计算系统110,则图200a中绘制的延迟可以是在第一计算系统110处接收到数据106或数据108的实例的时间与数据116的实例被第一计算系统110输出(例如,发布)的时间。如图所示,所示系统的平均延迟在大约50ms和大约200ms之间的数量级。

第二图200b示出了与分布208相同的数据202。更具体地,第二图200b示出了与延迟数值相关联的所测量的分组(如消息)的频率。例如,延迟被绘制在x轴210上并且分布函数212,例如高斯分布,被拟合到分布图208。分布函数212基于车辆的运行时间提供对系统执行其功能所需的时间的统计分析。作为非限制性示例,此类统计分析可包括均值、方差/标准偏差、最小值、最大值等。获悉这些操作参数可使许多诊断功能得以执行。例如,当已知预期操作延迟时,实时或近实时跟踪延迟可以允许确保车辆安全运行。如图1所示的例子,确定的延迟(无论是单个标签的瞬时延迟和/或窗口上的统计聚合)可以与操作范围进行比较,并且当系统在正常操作参数之外时,可以根据安全状态对车辆进行控制。在一些示例中,该范围可以是某个统计上显著数量的延迟测量落入的范围。因此,分布函数212可以确定所有延迟的95%或99%或100%出现在50ms和200ms之间,并且可以使用该范围作为预期延迟范围。

确定预期延迟范围还可为其它目的提供有用的工具。例如,可以使用延迟范围来调查对系统的改变的影响。在一个示例中,可以针对不同的软件版本生成图200a、200b,以确定这些版本对系统的影响。作为非限制性示例,计算系统110的算法和/或硬件修改会使计算系统110和/或整个车辆102两者的延迟特性不同。尽管消息和系统之间存在复杂的交互,但本文描述的技术方案会允许检查和表征这种修改,而确定这种修改如何整体上影响车辆102。与之类似地,可以确定新传感器(例如,向系统提供数据)的影响。此外,延迟范围信息可与设计可能依赖于由系统生成的数据的下游系统的有关。

根据上述内容,延迟数据可用于确定车辆的系统是否正常运行和/或建立用于车辆安全操作的阈值范围。然而,其它性能特征也可以用于识别异常和/或理解车辆102的操作条件。举例而言,图3、图4A和图4B用于描述诸如车辆102之类的车辆的CPU使用率。

图3为图示了旨在确定与计算环境中的一个或多个系统相关联的CPU使用率的本公开的技术方案的示意图300。更具体地说,图3是可以如何针对第一计算系统302和第二计算系统304确定CPU使用率的示例。在一些示例中,尽管不是必需的,但第一计算系统302可以对应于计算系统110、112、114中的一个并且第二计算系统304可以对应于计算系统110、112、114中的另一个。例如,第一计算系统302和第二计算系统304可以是包括但不限于传感器系统104、计算系统110、112、114和/或任何其他系统的任何系统。在此处描述的实施方式中,第一计算系统302可以被配置为执行多个处理和/或功能,并且第二计算系统304也可以被配置为执行多个处理和/或功能。例如,第一计算系统302和第二计算系统304中的每一个可以包括用于执行可由一个或多个处理器执行的不同操作的指令,这些操作可以包括一个或多个处理,而每个处理包括一个或多个功能。尽管第一计算系统302和第二计算系统304是独立的系统,但是在本文描述的实施方式中,它们可以是更大系统例如车辆102的子系统。因此,虽然第一计算系统302和第二计算系统304可以被配置为接收不同的数据并且生成和输出其他数据,但是两个系统302、304可以具有重叠功能。换句话说,某些功能和/或处理可以被调用以执行与第一计算系统302和第二计算系统304中的一个或两个相关联的功能。如本文进一步描述的,本公开中的技术可以确定针对离散的时间段,在CPU上的处理、功能等与使用CPU的其他处理、功能等的比例如何。

图3还包括在示意性实施方式中为确定CPU使用率而使用的符号表306。更具体来说,符号表306将计算环境中的每个离散功能308(例如,由图3的示例中的第一计算系统302和/或第二计算系统304中的任一个或两者使用的每个功能)与唯一标识符310关联。在一些实施方式中,功能中的每个功能可以表示堆栈(例如,软件堆栈)中的堆栈帧。符号表306可以通过例如将被调用的每个功能添加到符号表306并关联ID 310,从而在第一计算系统302和第二计算系统304的运行期间生成。在车辆102的实例中,在执行许多复杂功能并且接收、生成、处理和输出大量数据的同时,包括第一计算系统302和第二计算系统304在内的大多数计算系统不断地重新运行相同的处理和功能。因此,例如,符号表306可以在相对较短的时间内利用相对较少的添加而快速地稳定。换句话说,在车辆102的一些示例中,车辆102的每个计算功能可能已经以秒的数量级执行。

这里描述的技术还可以生成组织功能308的一个或多个数据结构。例如,图3示出了将包括功能的堆栈轨迹组织为一个或多个数据结构。更具体地说,图3包括第一前缀树312的形象和第二前缀树314的形象。第一前缀树312示出了与第一计算系统302相关联的所有堆栈功能,并且第二前缀树314示出了与第二计算系统304相关联的所有堆栈功能。在第一前缀树312中,功能被示为第一节点316(其中一些被单独标记为第一节点316a、316b等),而在第二前缀树314中,功能被示为第二节点318(其中一些被单独标记为第二节点318a、318b等)。第一节点316和第二节点318中的每一个被示为包括来自符号表306的功能ID310。进一步如图所示,第一前缀树312包括与第一节点318中的每一个相关联的唯一节点标识符。因此,例如,唯一节点标识符(N

如图所示,然后第一前缀树312将与第一计算系统302相关联的所有堆栈轨迹形象,例如,作为树的分支。因此,例如,第一处理依次包括功能F

更具体来讲,在本文描述的示例中,与第一计算系统302和第二计算系统304相关联的处理可以通过CPU使用率来进行表征。例如,图3还包括说明CPU采样的时间线324。采样可以包括例如以时间间隔t1、t2等周期性地确定例如由唯一节点标识符320、322指定的与正在执行的CPU上功能相关联的节点。因为每个节点都是唯一,所以可以对以读出节点作为其中一部分的堆栈进行重新创建。读出节点可以在一时间段内聚合,以提供该时间段内相对于其他功能而言哪些功能在CPU上的指示。

在一些示例中,可以在运行时确定这样的数据结构(例如,前缀树312、314)。在这样的示例中,可以在一个或多个处理器上执行查询以确定在特定时间的堆栈轨迹或当前运行的功能中的一个或多个。此类查询的结果可用于构建此类树。在一些这样的示例中,不同的功能调用可能在几秒钟后显著地相同,从而在这样的时间段之后不会生成新节点。在一些示例中,此类数据结构可以被预先计算(例如,在车上或车外)以用于以后的记录。

还如本文所描述的,这些技术可以将时间(例如,采样时间)与被调用的每个功能相关联。例如,在此处描述的实施方式中,时间戳可以与节点320、322中的每一个相关联,并且时间线324提供具有时间戳的关联时间的每个功能的调用的形象。当然,时间线324仅出于示例目的被示出。在一些示例实现中,第一计算系统302和/或第二计算系统304可以以相对较高的频率执行相关联的功能。例如,第一计算系统302和/或第二计算系统304可以被配置为例如通过以微秒、毫秒或更快的量级运行所示堆栈轨迹中的一个或多个来生成数据。因此,所示的时间线324可以是毫秒量级的,并且可以聚合在更长的时间段上的数据,例如,秒、分钟、小时,车辆的寿命等。此外,因为时间戳与每个功能相关联,所以可以考虑特定的时间点。

在一些示例中,可以存储读出节点和时间戳,例如图示326中所示。更具体地,图示326包括分组328a、328b、328c,其存储与时间戳330相关联的唯一节点标识符320、322,时间戳330表示读出标识符的采样时间。因此,根据本公开的示例,第一计算系统302和第二计算系统304的所有操作可仅使用分组328来确定。在至少一些示例中,例如在以规则间隔对运行处理进行采样的那些示例中,例如这样的分组328可以仅包括节点ID320、ID 322。因此,本文描述的技术通过将CPU使用率存储为一系列数据分组来减少车辆的计算时间,这些数据分组可以仅包括时间戳和/或节点ID。这些数据分组的生成和存储可允许对针对系统的CPU使用率数据进行随时解读与操纵。例如,时间戳允许在某些时间点调查处理。这可能不同于用于量化或以其他方式解释CPU使用率的常规技术,后者可能需要运行CPU使用率。

图4A和图4B示出了使用图3中描述和图示的技术确定的CPU使用率的形象。更具体地说,图4示出了图400a,其是与图3中的第一计算系统302和第二计算系统304中的每一个相关联的处理的CPU使用率的形象。例如,图4可以是火焰图。在图400a中,每个框表示功能,例如,堆栈中的功能308之一,堆栈根据相关功能沿y轴建立,例如,根据图3中前缀树312、314展示的处理。因此,例如,最下面的框402表示所有处理,例如车辆102上的所有处理。框402正上方(例如,在)的两个框404、406分别表示与第一计算系统302相关联的所有功能,并且框404分别表示与第二计算系统304相关联的所有功能。进一步描述图400a,框408、框410、框412被示为堆叠在框404上。框408、410、412分别示出为功能F

如以上参考图3所讨论的,根据这里描述的技术的计算操作的周期性采样提供了对与在离散采样时间执行的处理相关联的唯一节点ID所进行的识别。可以基于这些唯一节点ID的聚合来创建图200a。例如,每个唯一节点ID与CPU上的某处理相关联。考虑一个简单的例子,其中系统只执行两个功能A和B。如果在采样期间,功能A的读取频率是功能B的两倍,那么在像图400a这样的图中,与功能A关联的框的宽度将是宽度是功能B的两倍,这表明功能A使用了大约66%的CPU使用率,而功能B使用了大约33%的CPU使用率。也就是说,该图显示了相对CPU使用率,最宽的框表示100%的CPU使用率。因此,图4A的图400a示出了返回的与第一系统处理相关联的唯一节点ID和与第二系统处理相关联的唯一节点ID大致一样多(因为框404与框406的宽度大致相同)的采样。因此,系统A和系统B中的每个各占约50%的CPU使用率。然后,框404、框406上方的框的宽度对应于X轴上任何位置的最上面的水平线被读出的次数。为了提供示例,如上所述,框408对应于节点(N

在此处描述的示例中,可以通过以固定速率采样来确定每个功能的CPU使用率。虽然可以使用任何采样率,但可能需要使用不同于车辆系统(例如,第一计算系统302和第二计算系统304)所使用的公共频率的采样率。因此,例如,在一些实施方式中,可以使用97Hz的采样频率。可以意识到的是,在第一系统302和第二系统304操作时对CPU进行采样,可以近似出针对每个处理的CPU使用率。此外,由于记录的数据(例如,图框326)可能包括长时间段内的少量数据,因此可以在任何选定的时间窗口的数据记录之后确定计算(例如,CPU)的使用情况,并且可以关于全部数据上所提供的给定时间窗中的CPU使用率来执行统计分析。

在一些示例中,图400a可用于理解哪些系统、处理和/或功能对CPU的负担最重。此外,因为这里描述的技术使时间戳与每个功能相关联,所以可以对特定的时间窗口进行研究。例如,当诊断系统132确定异常延迟事件时,可以针对接近延迟事件的时间生成类似于图400a的火焰图。以这种方式,技术人员可以更容易地识别延迟问题的来源。

在其他示例中,CPU分布信息可用于进一步增强车辆102的安全性。图4B示出了车辆的一个或多个系统的CPU使用率的分布。例如,400b中CPU分布可以示出第一计算系统302相对于车辆102上的所有系统的使用百分比。作为非限制性示例,在一些实例中,400b中所示的CPU使用率可以是针对多个离散时间段(例如,2-3秒时间段)确定的CPU使用率。然后,通过绘制在某个时间量内(例如车辆102的总运行时间)系统的这些离散CPU使用率,可以确定预期的CPU使用率阈值或范围。例如,在图4的例子中,图400b中所示的分布414说明超过99%的时间,所示系统使用约3%至约6%之间的CPU。因此,与图2B所示的分布一样,图4B可用于提供预期系统操作的阈值(和/或用于与标称运行条件进行比较的其他统计信息)。在运行期间,如果确定系统在该范围之外操作,例如,如果实时或接近实时计算的CPU使用率在该范围之外,则可以确定CPU使用率事件。在一些示例中,如上面结合图1所述,可以将CPU使用率事件与异常延迟事件做相同的处理,因此,尽管图中并未示出,诊断系统132可以包括:类似于延迟确定组件134的CPU使用率确定组件和/或类似于延迟阈值组件136的CPU使用率阈值组件。在这些示例中,安全状态组件138可以考虑关于以上结合图1所描述的延迟以及方才所描述的CPU使用的信息。

还如上所述,这里描述的延迟相关技术可以与CPU使用率相关技术结合使用。例如,当例如由诊断系统132确定异常延迟事件时,时间戳124可用于确定延迟事件的时间,并且唯一标识符126可用于确定异常延迟事件的来源。因此,例如,这里描述的与延迟相关的技术可以识别异常事件并精确定位事件的位置。利用该信息,可以在所识别的时间及其前后为指状系统生成火焰图或其他CPU使用率信息。以这种方式,就延迟可归因于系统执行的某些处理而言,可以容易地识别该处理。在其他示例中,如上所述,例如,当系统在正常或预期操作范围之外操作时,CPU使用率可以独立地用于识别异常事件。在至少一些示例中,这样的事件可以与在阈值CPU使用率范围之外的系统、子系统、处理等的单次发生相关联。在其他示例中,事件可以与确定CPU使用率的、超出预期范围或阈值的数据的统计聚合相关联,例如,在一时间段内。

此外,本文描述的CPU使用率确定技术可用于其他诊断和/或系统设计目的。例如,类似于以上参考图1、图2A和图2B描述的技术方案,CPU使用可用于了解系统修改。例如,新的软件版本和/或替换组件可能对CPU使用率生成不同的影响,并且这里描述的用于确定CPU使用率的技术方案可以允许对这些系统变化进行统计分析。例如,图4B中所示的分布414可以是运行一个软件版本的示意性系统。在一些示例中,可以为运行不同版本软件的相同系统确定类似的分布。从分布中可以明显看出对CPU使用率影响的差异。在一些示例中,可以基于比较来确定用于在车辆上实施的版本。在一些示例中,可以选择具有最低平均CPU使用率、最小方差等的版本。

图5描绘了用于实现这里讨论的技术的示例架构500的框图。在至少一项示例中,架构500可以包括车辆502,此车辆502可以类似于(或相同于)上面参考图1描述的车辆102。在所示架构500中,车辆502是自动驾驶车辆;然而,车辆502可以是任何其他类型的车辆。

车辆502可以包括:一个或多个车辆计算系统504、一个或多个传感器系统506、一个或多个发射器508、一个或多个通信连接510、至少一项直接连接512(例如,用于与车辆502以交换数据和/或提供电力),以及一个或多个驱动模块514。在一些情况下,车辆502可以包括车辆计算系统504的附加实例。

车辆计算系统504可以包括:一个或多个处理器516;以及以进行通信的方式与一个或多个处理器516相耦合的存储器518。在图中所示的示例中,车辆计算系统504的存储器518存储有定位系统520、感知系统522、规划系统524、一个或多个系统控制器526、一个或多个地图528和诊断系统530。在示例中,诊断系统530可以和上述诊断系统132相同或包括类似于的功能。尽管出于说明目的被描述为驻留在存储器518中,但预期定位系统520、感知系统522、规划系统524、一个或多个系统控制器526、地图528和/或诊断系统530可以附加地或替代地可由计算系统504访问(例如,存储在车辆502的不同部件中和/或可由车辆502访问(例如,远程存储))。而且,尽管某些特征和功能可以归因于各种系统和组件,但是诸如仅作为示例。特征和功能可以与其他或附加组件相关联和/或由其执行。此外,归因于特定系统或组件的某些功能可能分布在多个系统/组件中。

在至少一项示例中,定位系统520可以包括从传感器系统506接收数据以确定车辆502的位置的功能。在一些实施方式中,定位系统520可以包括和/或请求/接收环境的诸如地图528的三维地图,并且可以连续地确定地图内自动驾驶车辆的位置。在某些情况下,定位系统520可以使用SLAM(同时定位和映射)或CLAMS(同时校准、定位和映射)来接收图像数据,例如来自飞行时间传感器、LIDAR数据、RADAR数据、SONAR数据、IMU数据、GPS数据、车轮编码器数据或它们的任何组合等以准确地确定自动驾驶车辆502的位置。在一些情况下,定位系统520可以通过诸如依据本申请所公开的技术方案发布数据的方式向车辆502的各个组件提供数据,借以确定用于生成候选轨迹的自动驾驶车辆的初始位置。

在一些示例中,感知系统522可以包括执行对象检测、分割和/或分类的功能。例如,感知组件522可以提供处理后的传感器数据,该数据指示车辆502附近的对象的存在和/或该对象作为对象类型的分类(例如,车辆、行人、骑行者、动物、建筑物、树木、路面、路缘石、人行道、未知物等)。在其它示例和/或替代性示例中,感知系统522可以例如通过发布指示与检测到的实体相关联的一个或多个特征和/或实体所在的环境。在一些示例中,与实体相关联的特征可以包括,但不限于,x位置(全局位置)、y位置(全局位置)、z位置(全局位置)、方向、实体类型(例如,分类)、实体的速度、实体的范围(大小)等。与环境相关联的特征可以包括但不限于:环境中另一个实体的存在、状态环境中其他实体的信息、一天中的时间、一周中的一天,一个季节、天气状况、黑暗/光亮的指示等。

在一些情况下,规划系统524可以确定车辆502穿过环境要遵循的路径。例如,计划系统524可以确定各种路线和轨迹以及各种细节水平。例如,规划系统524可以确定从第一位置(例如,当前位置)行进到第二位置(例如,目标位置)的路线。出于本次讨论的目的,路线可以是用于在两个位置之间行驶的一系列路标。作为非限制性示例,路标可以包括:街道、十字路口、全球定位系统(GPS)坐标等。另外,规划组件524可以生成用于沿着从第一位置到第二位置的路线的至少一部分引导自动驾驶车辆的指令。在至少一项示例中,规划组件524可确定如何将自动驾驶车辆502从路标序列中的第一路标引导到序列中的第二路标。在一些示例中,指令可以是轨迹或轨迹的一部分。在一些示例中,可以根据后退地平线技术基本上同时生成多个轨迹(即,在技术容限内)。可选择具有最高置信水平的后退地平线中的多个轨迹中的单个轨迹来操作车辆。

在其他示例中,规划系统524可替代地或附加地使用来自感知系统522的数据,例如通过订阅接收的数据来确定车辆502穿越环境所要遵循的路径。例如,规划系统524可以从感知系统522接收关于与环境相关联的对象的数据。使用该数据,规划系统524可以确定从第一位置(例如,当前位置)行进到第二位置(例如,目标位置)的路线,以避开环境中的这些物体。

在至少一项示例中,车辆计算系统504可以包括一个或多个系统控制器526,其可以配置为控制转向、推进、制动、安全、发射器、通信和其他系统车辆502。系统控制器526可以与驱动模块516和/或车辆502的其他组件的对应系统通信和/或控制这些系统,其中车辆502可以被配置为根据从规划系统524提供的轨迹行驶。在本文描述的技术方案中,系统控制器526可以订阅以接收信息关于车辆502可以沿其行驶的轨迹,例如,由规划系统524公布。

尽管不是必需的,但在一些情况下,定位系统520、感知系统522、规划系统524和系统控制器526可以连续地动作。例如,定位系统520可以接收数据,例如传感器数据,并且使用传感器数据生成和输出定位系统数据。然后可以在感知系统522处接收定位系统数据,感知系统522可以使用定位系统数据来生成感知系统数据。然后,可以在规划系统524处接收感知系统数据,规划系统524可以使用这种感知系统数据来生成规划系统数据,等等。然而,在其他情况下,数据可以在多个不同系统处接收(并由其使用)以执行许多不同的功能。

在一些示例中,可以将地图528存储在远程计算设备上。在一些示例中,可以基于特征(例如,实体类型、一天中的时间、一周中的哪一天、一年中的季节等)来存储地图528。存储多个映射528可以具有类似的存储器需求,但是提高可以访问映射中的数据的速度。在至少一些示例中,可以根据这里描述的实施方式公布地图528和/或与地图528相关联的信息。例如,车辆计算系统504或一些其他系统可以发布关于至少部分由地图528通知的道路网络的信息。

诊断系统530可以被配置为确定用于车辆502的安全操作的参数,以确保车辆502在安全参数内操作和/或当车辆不在安全范围内操作时控制车辆参数。如图所示,诊断系统530可以包括:延迟组件532、CPU使用率组件534和安全状态组件536。虽然诊断系统530被示为存储器518中的单块,但是单独的诊断系统530可以是包括在系统和/或组件中或可供个人访问。作为非限制性示例,定位系统520可以具有其自身相关联的安全状态组件,而与安全状态组件536和/或任何其他安全状态组件无关。例如,诊断系统530的安全状态组件可以将车辆配置为响应于定位系统520处的异常性能事件执行安全停止或采取一些安全相关动作。类似地,异常事件可以由仅与定位系统520相关联的延迟组件532和/或CPU使用率组件来确定。

在一些实施方式中,延迟组件532可以执行与系统延迟相关联的功能。例如,延迟组件532可以从与车辆502相关联的一个或多个系统接收与数据的接收、创建和/或输出相关信息。在一些示例中,延迟组件532可以接收标签信息,例如作为与标签122相关联的信息。使用该信息,延迟组件532可以计算与一个或多个系统相关联的延迟。举例而言,延迟组件532可以确定车辆范围的延迟,例如,通过跟踪传感器之一生成的数据或一些其他数据输入传播通过各种系统并最终用于控制车辆502所花费的时间。在其他示例中,延迟组件532可用于确定车辆502上所有系统(或单个系统)的特定子集的延迟。例如,因为标签122累积唯一标识符126,延迟组件532可以通过跟踪一个或多个特定数据实例为任何一个或多个系统生成延迟。此外,因为标签122还可以包括时间戳信息124,所以延迟组件532还可以确定任何时间窗口的延迟。在一些示例中,延迟组件532可以执行在一时间段(例如,时间窗口,例如2秒)内的延迟的统计聚合以确定关于组件的统计信息。

延迟组件532还可以将所确定的延迟(或聚合信息的统计学属性)与延迟阈值或延迟范围进行比较,以确定车辆502或车辆502的某个系统是否正常运行。作为非限制性示例,车辆502上的每个系统,例如,本地化系统520、感知系统522、传感器系统506等系统中的每一个系统可以具有不同的可接受的延迟范围,即等于或高于第一阈值延迟和/或等于或低于第二阈值(例如,更高的)阈值延迟。在一些示例中,计算可以包括:将延迟与先前收集的标称操作行为的最小值、最大值、平均值、方差/标准偏差等进行比较。在此处描述的实施方式中,延迟组件532可以将针对给定系统确定的延迟与该系统的可接受延迟范围进行比较。当计算出的延迟处于可接受的范围内时,可以认为车辆正在按预期运行。然而,当计算的延迟在可接受的延迟范围之外时,延迟组件532可以识别异常延迟事件。在一些示例中,可以将关于异常延迟事件的信息提供给安全状态组件536,借以采取一些安全措施。下面更详细地描述安全状态组件536。

延迟组件532还可以被配置为确定可接受的延迟范围。举例而言,延迟组件532可以在诸如图2A所示的一个或多个特定系统的扩展运行时间上接收数据。通常,如图2B所示,使用这样的数据,延迟确定组件可以确定与所接收到的数据相关联的分布函数。分布函数可以表征与系统相关联的延迟历史,并且该历史可以告知系统的安全操作延迟范围。例如,该范围可以是包括某个百分比的范围,例如所有确定的延迟中的95%或100%。

诊断系统530的CPU使用率组件534可以包括与车辆502的系统的CPU使用率相关联的功能。例如,CPU使用率组件534可以逐个系统地量化CPU使用率,逐个处理和/或逐个功能的基础来确定系统/处理/功能何时在可接受的运行范围之外运行。例如,CPU使用率组件534可以生成功能来执行结合图3所示的方案300一般描述的动作。在一些情况下,CPU使用率组件534可以生成车辆502和/或车辆502的一个或多个系统运行的所有处理和/或功能的数据结构。例如,CPU使用率组件534可以包括审查与车辆502的一个或多个系统相关联的处理日志并生成表示处理的结构的功能,例如堆栈追踪。车辆502的一个示例,每个系统通常重复执行尽可能多的相同处理。例如,定位系统520可以周期性地接收传感器数据并处理传感器数据以生成和输出关于车辆在环境中的位置的数据。虽然该示例极大地简化了与定位系统520相关联的处理,但是定位系统520确实具有离散数量的处理和功能,定位系统以足够的规律性进行,仅通过跟踪与定位系统524一时间段,例如以秒的数量级,可以基本上编译用于由本地化系统520承担的所有处理和功能的一个或多个完整的堆栈轨迹。

还如上文结合图所讨论的并如图3所示,CPU使用率组件534可以将与处理和/或功能相关联的数据结构表征为包括多个节点的树状图。每个节点可以具有相关联的特征ID,该特征ID可以是诸如整数、多个函数中一个函数的表示的唯一ID。因此,并且如上所述,例如,几个节点可以具有相同的功能ID,这是因为一些功能可以在整个系统或跨系统的多个处理中执行。因此,为了区分不同处理中的相同功能,CPU使用率组件534还可以为树状图中的每个节点生成唯一节点ID。

CPU使用率组件534还可以通过确定在离散时间在CPU上运行的功能来对CPU上的操作进行采样。虽然也可以使用其他频率,但在一些示例中,CPU使用率组件534可以排他性地以大约95Hz和大约100Hz之间的速率进行采样(例如,以区别于与车辆系统相关联的标准频率)。作为采样的结果,CPU使用率组件534可为每个样本生成数据分组,该数据分组包括标识CPU上功能的节点ID以及与获得样本的时间相关联的时间戳。

在一些实施方式中,CPU使用率组件534可以使用信息通过采样获得的信息以生成车辆的CPU使用率历史记录。例如,CPU使用率历史可以被可视化为图,如图4中所示的图400a。举例而言,该图可以是一种相对于CPU的整体使用而言为系统、处理及功能识别CPU使用率的有效工具。此外,由于本文所述的技术方案会生成与具有时间戳的执行功能(通过节点ID标识)相关联的数据分组,所以CPU使用率组件534还可确定特定时间或时间范围内的CPU使用率。作为非限制性示例,当怀疑系统运行不正常时,CPU使用率组件534可以为该特定系统生成CPU使用率信息。类似地,当怀疑在特定时间运行不正常时,CPU使用率组件534可以(例如,通过取回具有对应于该时间段的时间戳的数据分组并从关联的节点ID建立堆栈轨迹)确定包括特定时间的时间段的CPU使用率。

在另外的实施方式中,CPU使用率组件534可以将确定的CPU使用率与CPU使用率阈值或与CPU使用率范围进行比较,以确定车辆502或车辆502的某个系统是否正常运行。作为非限制性示例,车辆502上的每个系统,例如定位系统520、感知系统522、传感器系统506中的每一个等,可以具有不同的可接受的CPU使用率范围。换句话说,每个系统可能必须共享CPU使用率,因此每个系统可能预期以等于或高于第一阈值使用和/或等于或低于(较高的)第二阈值使用使用。正如所意识到的是,系统之间的阈值可以是不同的。此外,范围和/或预期的CPU使用率可能是动态的。例如,因为这里描述的系统可以包括许多相互关联的子系统,所以整个系统的总体CPU使用率可能比任何子系统的CPU使用率更为重要。因此,例如,可以在一些示例中确定多个(或所有)子系统的可接受的CPU使用率。因此,例如,对于给定的时间段,只要其他系统执行的计算量较少,某些系统可能具有相对较高的可接受CPU使用率。

在本文描述的实施方式中,CPU使用率组件534可以将针对给定系统(或子系统、处理或功能)确定的CPU使用率与关联于该系统(或子系统、处理或功能)的可接受CPU使用率范围进行比较。当计算出的CPU使用率在可接受范围内时,车辆(或系统或处理或功能)可被视为按预期运行。然而,当计算出的CPU使用率在可接受的CPU使用率范围之外时,CPU使用率组件534可以识别出异常CPU使用率事件。在一些示例中,关于异常CPU使用率事件的信息可以被提供给安全状态组件536,其可以控制车辆502采取一些安全动作。下面更详细地描述安全状态组件536。

CPU使用率组件534还可以被配置为确定可接受的CPU使用率范围。例如,CPU使用率组件534可以在一个或多个特定系统的扩展运行时间上接收数据,并且CPU使用率组件534可以使用这样的数据确定与接收到的数据相关联的分布函数,通常如图4B所示。在至少一些示例中,分布函数可以被确定为针对整个日志重复确定的时间窗口的CPU使用率的统计平均值。分布函数可以表征与系统相关联的CPU使用率历史,并且该历史可以将安全操作CPU使用率范围通知给系统。例如,该范围可以是包括某个百分比的范围,例如所有确定的CPU使用率测量值的95%或100%。在图4B中,例如,该范围可以是车辆502上所有CPU使用率的大约4.0%至大约7.0%。

安全状态组件536可以响应于延迟组件532和/或CPU使用率组件534生成确定事件的发生而确定并输出一个或多个动作。例如,安全状态组件536可以启动车辆的安全停止。在一些实施方式中,例如,除了一个或多个正常驾驶轨迹之外,规划系统524可以生成安全轨迹作为后备轨迹。因此,当延迟组件532检测到一个或多个系统的延迟超出预期或安全操作范围和/或CPU使用率组件534确定系统(或处理,或功能)正在使用超出预期或安全操作CPU使用率范围的CPU量,安全状态组件536可使车辆执行此安全停止轨迹。而在其他实施方式中,安全状态组件536可以执行禁用车辆502的某些功能的策略,例如一旦停止车辆便防止其再移动。

在一些示例中,安全状态组件536可以确定与导致车辆停止的动作不同的动作。例如,安全状态组件536可以采取一种或多个缓解策略来缓解所检测到的事件。在一些示例中,此类缓解策略可包括创建向乘客、远程操作员或其他实体发出的警报。例如,警报可以请求实体的帮助。在其他实施方式中,安全状态组件536可以采取行动来重新配置车辆502的系统和/或设置。例如,安全状态组件536可以防止某些数据被接收和/或发布,例如,试图减少网络流量,从而减少延迟。例如,过多的网络流量可能是造成过度延迟的常见原因。其他缓解策略可包括降低车辆的速度。例如,因为与或延迟和/或CPU使用率相关联的阈值可能与安全相关,所以车辆可能能够以较低的速度以较高的延迟保持安全操作。因此,例如,当车辆移动得越慢和/或越大的延迟可以容忍时,可以延长接收关键数据的周期。类似地,当车辆行驶越慢时,可接受的延迟可能越长。

尽管前述示例说明了为了确保在车辆运行时对车辆的安全控制的目的而生成延迟数据和/或CPU使用率数据,但是也可以设想其他示例使用情况。例如,这里描述的用于生成延迟数据和/或CPU使用率数据的技术也可以用于比较不同车辆和/或不同软件版本的功能。在一些示例中,通过使用这里描述的技术为多个软件版本生成频率分布数据(用于延迟和/或用于CPU使用率数据),诊断系统530可以容易地确定更新的软件如何影响系统。因此,诊断系统530和与其相关联的功能可以用作不仅用于车辆安全操作而且用于测试和系统设计的有价值的工具。

在至少一项示例中,传感器系统506可以包括飞行时间传感器、位置传感器(例如,GPS、罗盘等)、惯性传感器(例如,惯性测量单元(IMU)、加速度计、磁力计、陀螺仪等)、LIDAR传感器、RADAR传感器、SONAR传感器、红外传感器、相机(例如RGB相机、IR相机、强度相机、深度相机、抖动时间相机等)、麦克风传感器、环境传感器(例如,温度传感器、湿度传感器、光传感器、压力传感器等)、超声波换能器、车轮编码器等。传感器系统506可以包括上述传感器或其他类型的传感器中的每一个传感器的多个实例。例如,飞行时间传感器可以包括位于车辆502的拐角处、前面、后面、侧面和/或顶部的单独的飞行时间传感器。作为另一个例子,摄像机传感器可以包括多个摄像机,这些摄像机设置在车辆502的外部和/或内部周围的各个位置。传感器系统506可以向计算系统504提供输入信号,例如,通过根据这里描述的示例发布传感器数据。

如上所述,车辆502还可包括一个或多个用于发射光和/或声音的发射器508。在该示例中,发射器508包括内部音频和视觉发射器,借以与车辆502的乘客进行通信。作为示例而非限制,内部发射器可以包括扬声器、灯、标志、显示屏、触摸屏、触觉发射器(例如,振动发射器和/或力反馈发射器)、机械执行器(例如,安全带拉紧器、座椅定位器、头枕定位器等)等。在该示例中,发射器508还包括外部发射器。作为示例而非限制,该示例中的外部发射器包括用于发出行驶方向信号的信号灯或车辆动作的其他指示器(例如,指示灯、标志、灯阵列等),以及一个或多个音频发射器(例如,扬声器、扬声器阵列、喇叭等),借以与行人或其他附近的车辆进行声音上的通信,而其中的一个或多个包括声束转向技术。

车辆502还可包括一个或多个通信连接510,这种通信连接可在车辆502与一个或多个其他本地计算设备或远程计算设备之间进行通信。例如,一个或多个通信连接510可以使车辆502上的其他本地计算设备和/或一个或多个驱动模块514。一个或多个连接510可以允许车辆与其他附近的计算设备(例如,其他附近的车辆、交通信号等)进行通信。通信连接510还可以使车辆502能够与远程远程操作计算设备或其他远程服务进行通信。

通信连接510可以包括物理和/或逻辑接口,用于将计算系统504连接到另一个计算设备或网络(例如,因特网),例如网络542。举例而言,510可以通过诸如IEEE 802.11标准定义的频率、短距离无线频率(例如,蓝牙)、蜂窝通信(例如2G、3G、4G、4G LTE、5G等)或任何合适的方法使相应的计算设备能够与其他计算设备对接的通信协议。

如上所述,直接连接512可以将设备物理耦合到车辆502,例如以交换数据和/或供电。在一些示例中,例如,直接连接512可以提供对一个或多个客户端计算系统的访问点。

车辆502还可以包括驱动模块514。在一些示例中,车辆502可以具有单个驱动模块514。在至少一项示例中,如果车辆502具有多个驱动模块514,则单独的驱动模块514可以定位在车辆502的相对端部(例如,前部和后部等)。在至少一项示例中,驱动模块514可以包括一个或多个传感器系统,以检测驱动模块514和/或车辆502的周围环境的状况。传感器系统可以包括:用以感测驱动模块的车轮的旋转的一个或多个车轮编码器(例如,旋转编码器),用以测量方向驱动模块的方向与加速度的惯性传感器(例如,惯性测量单元、加速度计、陀螺仪、磁力计等),用以声学方式检测驱动模块周围物体的相机或其他图像传感器、超声波传感器,LIDAR传感器,雷达传感器等。某些传感器(例如车轮编码器)可能是驱动模块514所特有的。在某些情况下,驱动模块514可以重叠或补充车辆502的对应系统(例如,传感器系统506)。

驱动模块514可以包括许多车辆系统,这些车辆系统包括:高压电池,用于驱动车辆的电动机,将来自电池的直流电转换成交流电以供其他车辆系统使用的逆变器,包括转向马达和转向齿条(可以是电动的)的转向系统,包括液压致动器或电动致动器的刹车系统,包括液压组件和/或气动组件的悬架系统,用于分配制动力以减轻牵引力损失并保持控制的稳定性控制系统,HVAC系统,照明设备(例如,照明前照灯/尾灯的照明设备,以照亮车辆的外部环境)以及一个或多个其他系统(例如,冷却系统,安全系统,车载充电系统以及诸如DC/DC转换器、高压接线接头、高压电缆、充电系统、充电端口等的其它电学组件)。另外,驱动模块514可以包括:驱动模块控制器,该驱动模块控制器可以接收和预处理来自传感器系统的数据并控制各种车辆系统的操作。在一些示例中,驱动模块控制器可以包括:一个或多个处理器以及与该一个或多个处理器通信耦合的存储器。存储器可以存储一个或多个模块以执行驱动模块514的各种功能。此外,驱动模块514还可以包括一个或多个通信连接,该通信连接使得各个驱动模块能够与一个或多个其他本地或远程计算设备。

同样如图所示。如图5所示,车辆502还可以包括总线538,车辆502的每个组件和系统可以通过该总线传输信息。总线538通常可以表示组件发送和/或接收数据所经由的组件。在至少一项示例中,发布者可以通过总线538向订阅者发布信息和/或订阅者可以通过总线538接收信息。总线538可以是任何通信网络或平台,数据和信息可以通过其在车辆502的系统和组件之间发送使用一个或多个协议。图5中的箭头540可以示出数据相对于总线538的方向性。因此,作为非限制性示例,安全状态组件536可以向总线538发布数据(例如,安全停止消息),并且,可以订阅接收安全停止消息的驱动模块514可以接收所发布的消息并实现安全停止。在另一个示例中,定位系统520可以发布姿态信息,并且规划系统524可以接收姿态信息以确定应该沿着其控制车辆的轨迹。可以理解的是,这些只是几个非常简单的例子;各种系统和组件可以,例如通过订阅信息的主题或类型,将信息发布到总线538和/或从总线接收信息。虽然,图5中示出了通过总线538实现的发布/订阅方案,但也可以另外地或是替代性地使用其他通信结构。

如上所述,图5还图示了一个或多个远程计算系统544。例如,远程计算系统544可以是例如经由网络542与车辆502通信的一个或多个计算设备。在其他示例中,远程计算系统544可以(例如,通过直接连接512)直接连接到车辆502。

远程计算系统544可以包括:处理器546;以及以可进行通信的方式与处理器546相耦合的存储器548。在所示示例中,远程计算设备544的存储器548存储有诊断系统550,此诊断系统包括:延迟组件552、CPU使用率组件554和安全状态组件556。在至少一项示例中,诊断系统550可以对应于诊断组件530的至少一部分,其中延迟组件552的对应于延迟组件532、CPU使用率组件554对应于CPU使用率组件534和/或安全状态组件556对应于安全状态组件536。例如,使用延迟组件552和/或CPU使用率组件554的诊断系统550可以确定与车辆的一个或多个系统相关联的异常事件。在其他示例中,远程计算系统544,例如,使用诊断系统550,可以接收和/或访问标签122和/或CPU使用分组328以确定与性能特征相关联的阈值和/或预期范围,例如延迟和CPU使用率。在远程计算设备上进行这种确定可能比在车上进行这种确定更为可取。此外,远程计算系统544还可以从其他车辆接收性能数据,并且可以将来自那些其他车辆的数据并入对各种系统的统计分析中。此外,安全状态组件556可以对应于安全状态组件536的至少一部分。例如,当延迟组件552和/或CPU使用率组件554中的一个组件或两个组件检测到事件时,安全状态组件556可以发出控制,借以在安全模式下操作车辆502。延迟组件552还可以执行上面结合延迟组件532描述的其他诊断和/或系统规划功能,并且CPU使用率组件554还可以执行上面结合CPU使用率组件534描述的其他诊断和/或系统规划功能。

车辆502的处理器516和远程计算系统544的处理器546可以是能够执行指令以处理数据并执行如本文所述的操作的任何合适的处理器。作为示例而非限制,处理器516和处理器546可包括:一个或多个中央处理单元(CPU)、图形处理单元(GPU)或者处理电子数据以将电子数据转换为可以存储在寄存器和/或存储器中的其他电子数据的任何其它设备或设备的一部分。在一些示例中,只要集成电路(例如,ASIC等)、门阵列(例如,FPGA等)和其他硬件设备被配置为实现编码的指令,它们也可以被认为是处理器。

存储器518和存储器548是非暂时性计算机可读介质的示例。存储器518和存储器548可以存储操作系统和一个或多个软件应用程序、指令、程序和/或数据,借以实现本公开所述的方法以及取决于各种系统的功能。在各种实施方式中,可以使用任何合适的存储技术来实现该存储器,诸如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存类型的存储器或者能够存储信息的任何其他类型的存储器。本文所描述的体系结构、系统和单个元件可以包括许多其他逻辑组件、程序组件和物理组件,本公开所涉及的示例仅在说明书附图中示出了上述组件。

在某些情况下,本公开中讨论的一些或所有组件的各方面可以包括任何模型、技术和/或机器学习技术。例如,在某些情况下,存储器518和存储器548中的组件可以被实现为神经网络。

如本文所述,示例性神经网络是一种生物激励技术,其使输入数据通过一系列连接的层生成输出。神经网络中的每一层还可以包括另一个神经网络,或者可以包括任意数量的层(无论是否卷积)。在本公开全文中可以理解的是,神经网络可以利用机器学习,机器学习可以指的是广泛的这类技术,其中基于学习的参数生成输出。

尽管在神经网络的上下文中进行了讨论,但是可以根据本申请中使用任何类型的机器学习。例如,机器学习可以包括但不限于,回归技术(例如,最小二乘法(OLSR))、线性回归、逻辑回归、逐步回归、多元自适应回归样条(MARS)、局部估计散点图平滑化(LOESS)、基于实例的技术(例如,岭回归、最小绝对收缩和选择算子(LASSO)、弹性网、最小角度回归(LARS))、决策树技术(例如,分类和回归树(CART)、迭代二分法器3(ID3)、卡方自动交互检测法(CHAID)、决策树桩、条件决策树)、贝叶斯技术(例如,朴素贝叶斯技术、高斯朴素贝叶斯技术、多项式朴素贝叶斯技术、平均一依赖估计量(AODE)技术、贝叶斯信念网络(BNN)技术,贝叶斯网络技术)、聚类技术(例如,k均值、k中位数、期望最大化(EM)、分层聚类)、关联规则学习技术(例如,感知机、反向传播、霍普菲尔德网络、径向基函数网络(RBFN)、深度学习技术(例如,深玻尔兹曼机(DBM)、深层信念网络(DBN)、卷积神经网络(CNN)、堆叠式自动编码器),降维技术(例如,主成分分析(PCA)、主成分回归(PCR)、偏最小二乘回归(PLSR)、Sammon映射、多维标度(MDS)、投影追踪、线性判别分析(LDA)、混合物判别分析(MDA)、二次判别分析(QDA)、灵活判别分析(FDA)、集成技术(例如,增强、引导聚集算法(Bagging)、AdaBoost、堆栈泛化(混合)、梯度增强机(GBM)、梯度增强回归树(GBRT)、随机森林、SVM(支持向量机)、监督学习、无监督学习、半监督学习等。

体系结构的其他示例包括神经网络,例如ResNet50、ResNet101、VGG、DenseNet、PointNet等。

图6至图9示出了根据本公开的实施例的示例处理。这些处理被图示为逻辑流程图,其中的每个操作表示可以在硬件、软件或其组合中实现的操作序列。在用软件实现的情况中,这些操作表示存储在一个或多个非暂时性计算机可读存储介质上的计算机可执行指令,当由一个或多个处理器执行时,该计算机可执行指令使计算机或自动驾驶车辆执行所列举的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在理解为限制,并且可以将任何数量的所描述的操作组合为任何顺序和/或并行执行流程。

图6描绘了用于确定与系统延迟相关联的事件已经发生并且响应于该事件将车辆置于安全状态的示例处理600。例如,处理600的一些或全部可以由图1所示的诊断系统132和/或由图5所示的部件中的一个或多个部件执行。例如,处理600的一些或全部可以由车辆计算系统504(例如,使用诊断系统530)执行和/或由远程计算系统544(例如,由诊断系统550)执行。

在操作602处,处理600可以包括从各个子系统接收标签信息,标签信息包括唯一ID和时间戳信息。举例而言,并且如本文所述,自动驾驶车辆的系统可以生成数据分组并输出数据分组以供下游使用和/或进行其他处理。在示例中,新数据的每个实例(例如,生成的)都标有唯一ID。因此,每个唯一ID标识引入系统的不同数据实例,例如离散数据分组。时间戳信息可以包括:指定生成数据分组(或数据分组中的底层数据)的时间的时间戳,和/或指定系统输出新数据的时间的时间戳。如上文参考图1所述,当一个或多个系统对数据进行动作(例如,进行处理)时,时间戳和系统标识信息可以被添加到与生成的数据相关联的标签。在这个例子中,时间戳信息可以包括指定通过系统接收数据的一个或多个时间的一个或多个时间戳。因此,并且使用图1中的实例,例如,在诊断系统132的延迟确定组件134处,操作602可包括接收多个标签中的一个,标签122a。

在操作604处,处理600包括基于标签信息确定一个或多个子系统的延迟。例如,可以通过随着由子系统传播数据对与特定数据相关联的时间戳进行比较来确定自动驾驶车辆的一个或多个子系统的延迟。在一个例子中,具体参考图1,当生成/输出数据108时,唯一ID 126b与数据108相关联。此外,随着数据108通过车辆的各种系统传播,这些系统更新原始标签和/或生成新标签,新标签包括唯一ID 126b、新时间戳信息(与该系统相关联)和系统标识信息(例如将时间与系统相关联),例如数据116和数据118,以及与从数据108间接生成的数据(例如,使用数据116和数据118(因此间接使用数据108)的数据120)相关联的附加标签。因此,包括第一计算系统110、第二计算系统112和第三计算系统114的系统延迟可以通过由这些系统跟踪数据108(在该示例中)来确定。当然,这只是一个简单的例子,仅用于说明;使用包括唯一标识符和时间戳的标签的这里描述的技术可允许通过复杂系统(例如,自动驾驶车辆102)容易地跟踪延迟。如这里描述的,延迟可以是瞬时或接近瞬时的延迟,或者可以根据对在时间窗口上收集的数据(或标签)执行的统计分析来确定延迟。

在操作606处,处理600可以包括确定延迟是否在可接受的范围内。例如,如上所述,诸如自动驾驶车辆的复杂计算系统可包括多个协同工作的子系统。为确保正常运行,可能需要每个子系统在特定延迟范围内操作。例如,可能需要子系统以及时的方式输出数据,以供系统的其它下游组件作出进一步处理。因此,每个子系统可以具有其自己的延迟范围,其可以根据这里描述的技术来确定,尽管不同的子系统可以具有相似或相同的范围。

如果在操作606处确定在操作604处确定的接受延迟在可接受范围内,则在操作608处,处理600包括根据命令信号来控制车辆。例如,如果每个子系统是在可接受的范围内操作时,可以使用与子系统相关联的处理来控制系统,例如车辆。

可替换地,如果在操作606处确定在操作604处确定的延迟在可接受的延迟范围之外,例如,因为延迟远低于最小阈值,或者更可能地,延迟高于最大延迟容差,处理600可以在操作610处确定与子系统相关联的事件。如上所述,车辆的系统未能及时接收、处理、生成和/或输出数据可能会造成不安全的操作条件。

因此,在操作612处,处理600可以包括根据安全状态来控制车辆。例如,当在操作606处确定异常延迟事件已经发生时,本文描述的技术可以控制车辆以缓解潜在的不安全状况。如本文所述,实现安全状态可以包括采取任何数量的行动,包括但不限于,用信号通知延迟事件已经发生,采取行动来限制非关键功能(例如,减轻不适当的网络流量和/或处理、使车辆减速、执行安全停车轨迹或将车辆置于车辆的操作被禁用的状态等)。

图7示出了用于确定与系统CPU使用率相关联的事件已经发生并且响应于该事件将车辆置于安全状态的另一个示例处理700。例如,处理700中的一些或全部可以由图5中所示的一个或多个组件来执行。例如,部分或全部处理700可以由车辆计算系统504(例如,使用诊断系统530)和/或由远程计算系统544(例如,由诊断系统550)执行。

在操作702处,处理700包括接收表示一个或多个处理中的功能的唯一节点ID和/或与唯一节点ID相关联的时间戳信息。例如,并且如本文所述,由自动驾驶车辆执行的处理和/或功能可以表示为数据结构(例如,前缀树),并且数据结构中的各个节点可以与各个功能相关联。在示例中,每个节点还可以具有关联的唯一节点ID。因此,每个唯一节点ID标识与数据处理相关联的功能。因为每个节点具有唯一节点ID且数据结构也是已知的,所以可以仅根据唯一节点ID来确定相关联的堆栈轨迹。时间戳信息可以包括指定在此处描述的采样处理期间对唯一节点ID进行采样的时间的时间戳,如本文所述。如图3所示,唯一节点ID和时间戳可以存储为分组328。因此,操作702可以包括例如在诊断系统530的CPU使用率组件534处接收数据分组328。

在操作704处,处理700包括在一时间段内基于唯一节点ID确定一个或多个系统或功能的CPU使用率。例如,在一时间段内多个采样时间中的每一个的唯一节点可用于重新创建堆栈轨迹,从而识别占用CPU的功能。聚合针对在整个时间段内的此数据会识别针对每个功能的CPU使用率相对于所有其他功能的CPU使用率。作为非限制性示例,可以至少部分地基于功能相对于所有调用的调用次数和/或相关联的堆栈轨迹的确定来确定CPU使用率的百分比。

在操作706处,处理700可以包括确定CPU使用率是否在可接受的范围内。例如,如上所述,复杂的计算系统,例如自动驾驶车辆,可以包括多个协同工作的子系统(它们可能不以线性方式运行)。为确保正常运行,可能需要每个子系统在特定的CPU使用率范围内操作。因此,每个子系统可以具有其自己的CPU使用率范围,其可以根据这里描述的技术来确定。不同的子系统可能具有相似或相同的CPU使用率范围。

如果在操作706处确定在操作704处确定的CPU使用率在可接受范围内,则在操作708处,处理700包括根据命令信号控制车辆。例如,如果每个子系统都在可接受的范围内操作,则可以使用与子系统相关联的处理来控制系统,例如车辆。

或者,如果在操作706处确定在操作704处确定的CPU使用率在可接受的CPU范围之外,例如,因为CPU使用率远低于最小阈值,或者更有可能的是,CPU使用率高于最大使用容限,则在操作710处,处理700可以确定与子系统相关联的事件。如上所述,车辆系统未能及时接收、处理、生成和/或输出数据可能会造成不安全的操作条件。

因此,在操作712处,处理700可以包括根据安全状态控制车辆。例如,当在操作706处确定异常CPU使用率事件已经发生时,本文描述的技术可以控制车辆以缓解潜在的不安全状况。如本文所述,实现安全状态可以包括采取任何数量的行动,包括但不限于,用信号通知延迟事件已经发生,采取行动来限制非关键功能(例如,减轻不适当的网络流量和/或处理,使车辆减速、执行安全停车轨迹或将车辆置于车辆操作被禁用的状态等)。

图8示出了根据本公开的示例的用于确定CPU使用率的示例性处理800。例如,处理800中的一些或全部可以由图5中所示的一个或多个组件来执行。例如,处理800的一些或全部可以由车辆计算系统504(例如,使用CPU使用率系统534)执行和/或由远程计算系统544(例如,通过CPU使用率系统554)执行。

在操作802处,处理800包括识别与一个或多个计算系统相关联的处理,每个处理包括一个或多个功能。举例而言,复杂的系统(如自动驾驶车辆)包括许多执行不同处理和功能的子系统。操作802可以识别这些处理和各个功能。参照图3所示的示例,本文描述的技术可以生成将唯一功能标识符与由车辆执行的每个计算功能相关联的简单表格。

在操作804处,处理800可以包括生成表示处理的数据结构,该数据结构包括表示功能的节点。例如,本文描述的技术方案可以生成数据结构,例如表征由车辆执行的所有处理和功能的前缀树。前缀树数据结构可以包括多个分支,每个分支表示堆栈轨迹,其中每个节点表示功能或堆栈帧。同样在此处描述的实施方式中,数据结构可以将唯一功能标识符存储为节点。如本文进一步描述的,虽然车辆包括系统之间的相对复杂的交互,但是跨多个系统的功能可以是相同的,并且系统中的个体重复地执行相同的操作。因此,可以在相对较短的时间段内确定每个处理和功能,例如通过观察车辆的运行,可以从中生成一个基本完整的前缀树。

在操作806处,处理800可以将唯一节点ID与每个节点相关联。举例而言,并且如图3所示,一旦生成数据结构(例如,前缀树),这里描述的技术可以为每个节点分配唯一节点ID。例如,唯一节点ID可以是唯一整数。在一些实施方式中,唯一节点ID用于消除不同系统和/或处理中的相同功能之间的歧义,如本文进一步描述的。

在操作808处,处理800可以对计算系统的操作进行采样以确定在每个采样时间在CPU上运行的功能。例如,这里描述的技术方案可以在每次采样时确定节点ID在CPU上。沿着图3的时间线示出了根据本文描述的技术的采样的示例。又如本文所述,采样可以在任何频率进行,但是在一些实施方式中,该频率可以被选择为不同于车辆的一个或多个系统的一个或多个操作频率的频率。

如本文所述,使用在操作804处生成的数据结构,在操作808处获得的样本可用于生成关于利用CPU的功能的信息。更具体地,使用唯一节点ID,可以在收集样本的整个时间和/或其部分期间重新创建与CPU上功能相关联的堆栈轨迹。例如,CPU使用率可以用于生成诸如示例4A中所示的和上面描述的火焰图400a之类的图。此外,虽然图8示出了串行执行的操作802、804、806和808,但是这些操作中的一些或全部可以并行执行。作为非限制性示例,在一些实例中,本文描述的技术可以基于采样的结果识别功能、构建数据结构和/或分配唯一节点ID。例如,由于车辆上的许多处理可能以相对较高的频率重复,因此可以在相对较短的时间内对所有功能进行采样,并且可以从采样中收集数据结构。

在操作810处,处理800可以生成数据分组,其对于每个样本包括时间戳和/或对应于所确定的功能的唯一节点ID。举例而言,如上所述,在808处确定的功能具有对应的唯一节点ID,并且操作810可以将该唯一节点ID与时间戳(例如,对应于采样时间的时间戳)相关联。可在操作810处生成的数据分组的示例示出于图3中。

在操作812处,处理800可以在计算系统处接收对应于异常(例如,延迟事件)的时间标识。例如,上述处理600可用于确定延迟事件并基于那些延迟事件采取行动。然而,在一些实现中辨别延迟的来源可能是有用的。正如关于处理600所讨论的,可以确定与延迟事件相关联的时间,并且可以在812处接收这样的时间。当然,与延迟事件相关联的时间只是一个示例。在其他示例中,操作812可以接收对应于任何其他事件的时间。或者,时间可能是随机采样时间或定期采样时间,例如,以允许处理800执行CPU上处理和系统的系统检查。

在操作814处,处理800可以包括取回针对包括时间的时间范围的数据分组。例如,因为数据分组具有相关联的时间戳,所以可以容易地取回具有确定范围内的时间戳的数据分组,以进行调查。在一些示例中,当在操作812处提供特定时间时,可以将大约一秒到大约四秒的时间帧确定为用于调查CPU使用率的范围,并且操作814可以取回针对该时间范围内的数据分组。在一些示例中,该范围可以更长或更短。然而,可以意识到的是,这里描述的技术提供了对任何时间范围的使用数据的随时取回。此外,因为可以在车外访问数据,所以可以测试和/或使用不同车辆上的类似系统和/或软件的性能来确定范围、事件等,如本文所述。

在操作816处,处理800可以确定时间范围内的CPU使用率。例如,并且如本文进一步描述的,包括在814处取回的数据分组中的唯一节点ID可用于重新创建针对时间范围内的CPU上处理,因为每个唯一节点ID可被视为对应于采样时间的叶子节点。此外,该数据结构可用于重新创建与该叶子节点关联的堆栈轨迹。在一些示例中,操作816可以包括生成针对该时间范围的CPU使用率的火焰图或其他可视化。因为这里描述的技术可以提供关于车辆或车辆子系统的任何时间或操作的CPU使用率的所需信息。因此,例如,这里描述的技术可以允许诊断和故障排除。

图9示出了确定针对各种性能特征的阈值操作范围的处理900。例如,处理900可用于确定针对一个或多个系统的预期或目标延迟范围和/或确定针对一个或多个系统的非预期或目标CPU使用率范围。在一些示例中,处理900可以由图5中所示的一个或多个组件来执行。例如,处理900的一些或全部可以由车辆计算系统504(例如,使用诊断系统530)和/或由远程计算系统544(例如,由诊断系统550)来执行。

在操作902处,处理900可以包括接收关于一个或多个计算系统的性能特性的性能数据(例如,延迟数据或CPU使用率数据)。例如,操作902可以包括接收根据以上结合图1与图2A所描述的处理确定的延迟数据。替代地或者另外,根据以上结合图3与图4A所描述的,操作902可以包括接收CPU使用率数据。在此描述的技术可以允许在逐个系统的基础上、针对一个或多个时间范围等考虑信息。在至少一项示例中,图2中所示的图200a说明了当数据经过系统时通过跟踪数据生成的延迟数据的接收。尽管提供了延迟和CPU使用率的具体示例作为性能特征,但其他性能特征也可能是令人感兴趣的,并且可以根据处理900来接收并进行处理。

在操作904处,处理900包括生成在一时间段内的性能数据的分布。例如,延迟数据的分布在图2B中示出,并且CPU使用率数据的分布在图4B中所示。当然,这些仅是示例,其他分布可能会有所不同。

在操作906处,处理900可以包括至少部分地基于分布确定一个或多个计算系统的预期操作范围。例如,预期操作范围可以是诸如延迟或CPU使用率数据的运行参数很可能存在的的范围。例如,该范围可以是对应于当系统正常运行时某些在统计学上确定的性能特征下降的范围。如本文所述,该范围可用于确定异常事件,其可用于控制车辆以确保安全操作。

也可以使用根据处理900确定的范围来执行其他诊断功能。例如,可以使用具有跨版本比较范围的处理900来分析在不同版本的软件上运行的模拟。因此,有可能确定新软件将对系统和/或车辆整体的操作生成的影响。

本文描述的各种技术可以在计算机可执行指令或软件(例如程序模块)的环境中实现,这些指令或软件存储在计算机可读存储器中并由一台或多台计算机或其他计算机的处理器或诸如图中所示的其它装置执行。通常,程序模块包括:执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。

其他架构可用于实现本文所描述的功能,并且旨在落入本公开的范围内。此外,虽然上面处于讨论的目的定义了具体的职责分配,但各种功能可以根据情况以不同方式对职责进行分配和划分。

类似地,可以以各种方式和使用不同的手段来存储和发布软件,并且上述的特定软件存储和执行配置可以以多个不同的方式变化。因此,实现上述技术的软件可以分布在各种类型的计算机可读介质上,不限于本公开具体描述的存储器形式。

示例条款

A:一种示例自动驾驶车辆包括:第一传感器,其被配置为生成并输出第一传感器数据;第二传感器,其被配置为生成并输出第二传感器数据;一个或多个处理系统,其被配置为生成并输出经处理的数据,经处理的数据是至少部分地基于第一传感器数据或第二传感器数据中的至少一项的;车辆控制器;一个或多个处理器;以及存储一个或多个计算机可读介质的存储器,所述一个或多个计算机可读介质存储指令,所述指令可由一个或多个处理器执行以包括以下各项的动作:在车辆控制器处接收多个消息,车辆控制器被配置为至少部分地基于多个消息来生成并输出车辆控制消息;至少部分地基于多个消息或一个或多个车辆控制消息,确定与以下各项中的至少一项相关联的延迟:车辆控制器或一个或多个处理系统中的至少一个;至少部分地基于延迟是异常的来确定与自动驾驶车辆相关联的事件;以及至少部分地基于事件来将自动驾驶车辆控制在安全状态中操作,其中多个消息包括:第一消息,此第一消息包括与第一传感器数据的第一实例相关联的第一标识;与第一传感器数据的第一实例相关联的第一时间戳信息;与第二传感器数据的第二实例相关联的第二标识;与第二实例相关联的第二时间戳信息;与一个或多个处理系统中的第一处理系统相关联的第一系统标识;以及与第一处理系统相关联的第一系统时间戳信息;以及第二消息,此第二消息包括:第一标识、第一时间戳信息、第二标识、第二时间戳信息、与一个或多个处理系统中的第二处理系统相关联的第二系统标识、以及与第二处理系统相关联的第二系统时间戳信息,并且,其中上述多个车辆控制消息中的车辆控制消息包括:第一信息和第二消息,上述第一信息包括第一标识、第二标识、第一时间戳信息、第二时间戳信息、第一系统标识、第一系统时间戳信息、车辆控制器标识信息以及与车辆控制器关联的车辆控制器时间戳信息,并且第二信息包括第一标识、第二标识、第一时间戳信息、第二时间戳信息、第二系统标识、第二系统时间戳信息、车辆控制器标识信息、以及与车辆控制器相关联的车辆控制器时间戳信息。

B:示例A的自动驾驶车辆,其中确定延迟包括:对针对多个车辆控制消息的第一标签信息和第二标签信息执行统计分析。

C:示例A或示例B的自动驾驶车辆,其中多个消息或一个或多个车辆控制消息是在第一时间生成的,该动作进一步包括:在第一时间之前确定与以下各项中的至少一项相关联的预期延迟范围:车辆控制器或一个或多个预处理系统中的至少一项;将延迟与预期的延迟范围进行比较;响应于确定延迟在预期延迟范围之外,确定延迟为异常。

D:示例A至示例C中任一示例的自动驾驶车辆,其中将延迟与预期延迟范围进行比较包括以下各项中的一个或多个:比较平均延迟与平均预期延迟,将最大延迟与最大预期延迟进行比较,或将延迟变化与预期延迟变化进行比较。

E:示例A至示例D中任一示例的自动驾驶车辆,所述动作进一步包括:将与所述事件相关联的时间以及所述第一系统或所述第二系统中的一个的标识确定为所述事件的来源;以及,确定在包括与事件关联的时间在内的时间范围内针对由事件的来源执行的功能的CPU使用率。

F:一个示例系统包括:一个或多个处理器;以及存储一个或多个计算机可读介质的存储器,一个或多个计算机可读介质存储指令,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:在控制系统处接收在一时间段内的多个消息,该控制系统被配置为至少部分地基于上述多个消息来输出控制消息;至少部分地基于控制消息或多个消息来确定延迟,其中多个消息包括:第一消息,此第一消息包括与由第一传感器生成的第一传感器数据相关联的第一标识;与第一传感器数据的相关联的第一时间戳;与由第二传感器生成的第二传感器数据相关联的第二标识;与系统的第一子系统相关联的第一子系统标识;以及与第一子系统相关联的第一子系统时间戳;以及第二消息,此第二消息包括:第一标识、第一时间戳、第二标识、第二时间戳、与系统的第二子系统相关联的第二子系统标识;以及与第二子系统相关联的第二子系统时间戳,并且其中控制消息包括关联信息,上述关联信息包括:第一标识、第二标识、第一时间戳、第二时间戳、第一子系统标识、第二子系统标识、控制系统标识符和控制系统标识。

G:示例F的系统,其中确定延迟包括对关联信息执行统计分析,执行统计分析包括确定以下各项中的至少一项:表示延迟的分布函数、表示平均延迟的分布函数或表示最大延迟的分布函数。

H:示例F或示例G的系统,其中确定针对该时间段的延迟包括确定第二子系统的延迟,该动作进一步包括:确定针对第二子系统的延迟阈值,该延迟阈值定义针对第二子系统的延迟范围的上限;并且至少部分地基于第二子系统的延迟等于或大于延迟阈值来确定事件。

I:示例F至示例H中任一示例的系统,其中该系统包括自动驾驶车辆,该动作进一步包括:至少部分地基于该事件来控制该自动驾驶车辆以在安全状态下操作。

J:示例F至示例I中任一示例的系统,其中针对一时间段,第一子系统、第二子系统或控制系统中的至少一项被配置为第一配置,该时间段是第一时间段,并且所述延迟是第一延迟,所述动作还包括:接收关联信息的第二多个实例,所述第二多个实例与在不同于第一时间段的第二时间段期间生成的第二多个控制消息相关联,针对第二时间段,第一子系统、第二子系统或驱动控制子系统中的至少一项被配置为第二配置;以及至少部分地基于关联信息的第二多个实例来确定针对第二时间段的第二子系统的第二延迟。

K:示例F至示例J中任一示例的系统,其中该系统包括自动驾驶车辆,该动作进一步包括:至少部分地基于第一延迟和第二延迟,确定包括第一配置或第二配置的车辆配置;以及根据车辆配置来控制自动驾驶车辆。

L:示例F至示例K中任一示例的系统,其中确定车辆配置包括:响应于确定第一延迟低于第二延迟而确定包括第一配置的车辆配置。

M:根据示例F至示例L中任一示例所述的系统,所述动作还包括:至少部分地基于所述延迟来确定延迟事件;并且至少部分地基于延迟事件来确定在包括与延迟事件CPU相关联的时间的时间范围内针对一个或多个功能的CPU使用率。

N:示例F至示例M中任一示例的系统,该动作进一步包括:将第一子系统或第二子系统确定为与事件相关联的子系统,CPU使用率是与一个或多个功能相关联的CPU使用率,所述一个或多个功能在与事件相关联的子系统上运行,确定CPU使用率包括取回针对时间范围内多个采样时间的采样信息,采样信息包括节点标识符和与采样时间相对应的时间戳,节点标识符的各个节点标识符表示一个或多个功能中的功能。

O:一种存储指令的示例非暂时性计算机可读介质,并且该指令可由一个或多个处理器执行以执行包括以下各项的动作:接收与由系统中的组件生成的控制消息相关联的信息,该组件被配置为至少部分地基于多个消息来生成组件消息;以及至少部分地基于该信息,来确定与组件或系统中的一个或多个相关联的延迟,其中,多个消息包括:第一消息,此第一消息包括与由第一传感器生成的第一传感器数据相关联的第一标识;与第一传感器数据相关联的第一时间戳;与由第二传感器生成的第二传感器数据相关联的第二标识;与系统的第一子系统相关联的第一系统标识;以及与第一子系统相关联的第一子系统时间戳;以及第二消息,此第二消息包括:第一标识、第一时间戳、第二标识、第二时间戳、与系统的第二子系统相关联的第二子系统标识、以及与第二子系统相关联的第二子系统时间戳,并且其中与控制消息相关联的信息包括:第一标识、第二标识、第一时间戳、第二时间戳、第一子系统标识、第二子系统标识、控制系统标识符和控制系统标识。

P:示例O的非暂时性计算机可读介质,其中确定延迟包括对表示时间段的信息执行统计分析,执行统计分析包括确定以下各项中的至少一项:表示延迟的分布函数、表示平均延迟的分布函数或表示最大延迟的分布函数。

Q:示例O或示例P的非暂时性计算机可读介质,其中确定针对时间段的延迟包括:确定系统的第二组件的延迟,动作进一步包括:确定针对第二组件的延迟阈值,该延迟阈值定义了针对第二组件的延迟范围的上限;以及至少部分地基于第二组件的延迟等于或大于延迟阈值来确定事件。

R:示例O到示例Q中任一示例的非暂时性计算机可读介质,其中所述系统包括自动驾驶车辆,所述动作进一步包括:至少部分地基于所述事件来控制所述自动驾驶车辆以在安全状态下操作。

S:示例O至示例R中任一示例的非暂时性计算机可读介质,其中控制自动驾驶车辆以在安全状态下操作包括以下各项中的至少一项:执行安全停止轨迹;输出可听警告;输出可视警告;降低自动驾驶车辆的速度;或控制车辆以保持低于阈值速度的速度。

T:示例O至示例S中任一示例的非暂时性计算机可读介质,所述动作进一步包括:确定与事件相关联的时间;取回数据分组,所述数据分组具有在包括上述时间的时间范围内的关联时间,该数据分组包括节点标识符和与采样时间对应的时间戳,节点标识符与一个或多个功能的功能相关联;确定在时间范围期间与一个或多个功能相关联的CPU使用率;以及确定与最大CPU使用率相关联的一个或多个功能的事件功能。

U:一种示例自动驾驶车辆包括:第一组件,被配置为执行一个或多个第一处理;第二组件,被配置为执行一个或多个第二处理,该一个或多个第一处理和该一个或多个第二处理包括多个功能;一个或多个处理器;以及存储一个或多个计算机可读介质的存储器,所述一个或多个计算机可读介质存储指令,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:以一频率查询一个或多个处理器以确定多个运行功能;至少部分地基于表示一个或多个第一处理和一个或多个第二处理的数据结构来确定与多个运行功能相关联的唯一节点标识符;将时间戳与唯一节点标识符相关联;至少部分地基于唯一节点标识符和时间戳,来确定第一计算系统的第一CPU使用率和第二计算系统的第二CPU使用率;至少部分地基于第一CPU使用率等于或大于第一阈值CPU使用率或第二CPU使用率等于或大于第二阈值CPU使用率来确定与自动驾驶车辆相关联的事件;并且至少部分地基于事件来控制自动驾驶车辆处于安全状态。

V:示例U的自动驾驶车辆,该动作进一步包括:将唯一节点标识符和相关联的时间戳存储为CPU使用率分组;接收与异常车辆事件相关联的时间的指示;取回与包括时间的时间范围对应的多个CPU使用分组;以及至少部分地基于多个CPU使用分组来确定针对时间范围内的CPU使用率。

W:示例U或示例V的自动驾驶车辆,其中:时间范围在约一秒和约四秒之间;确定针对时间范围内的CPU使用率包括确定针对在时间范围期间执行的多个功能中的一个或多个功能的CPU使用率;并且确定针对一个或多个功能的CPU使用率包括确定与一个或多个功能相关联的使用相对于在时间范围内确定的多个运行功能中的其他功能的使用的百分比。

X:示例U到示例W中任一示例的自动驾驶车辆,其中数据结构包括多个节点,多个节点中的各个节点包括识别多个功能中一个功能的功能的功能标识符,并且具有唯一节点标识符中的相关联的一个唯一节点标识符。

Y:示例U至示例X中任一示例的自动驾驶车辆,其中控制自动驾驶车辆处于安全状态中包括以下各项中的至少一项:控制车辆安全停车;在自动驾驶车辆停止的状态下禁用车辆的特征;降低车辆的速度;或控制车辆保持低于阈值速度的速度。

Z:一个示例系统包括:第一子系统,被配置为执行第一处理;第二子系统,被配置为执行第二处理,第一处理和第二处理包括多个功能;一个或多个处理器;以及存储计算机可读指令的存储器,该指令当被执行时,使系统执行包括以下各项的动作:生成表示第一处理和第二处理的数据结构,这种数据结构包括多个节点,这些节点中的各个节点包括识别多个功能中的功能的功能标识符;使节点标识符与节点相关联,节点标识符包括关于多个功能在第一处理和第二处理中的关系的信息;以一频率查询一个或多个处理器以确定第一计算系统和第二计算系统的运行功能;以及基于采样来生成多个数据分组,该多个数据分组中的各个数据分组包括节点标识符中的与多个功能中的在采样时间处操作的功能相对应的节点标识符,。

AA:示例Z的系统,该动作进一步包括:确定时间范围;取回多个数据分组中的针对该时间范围内的数据分组;至少部分地基于数据分组来确定与节点标识符相关联的运行功能中的每个运行功能的时间范围内的相对CPU使用率;并且至少部分地基于相对CPU使用率来确定第一子系统的第一CPU使用率和第二子系统的第二CPU使用率。

BB:示例Z或示例AA的系统,该动作进一步包括:确定以下各项中的至少一项:第一CPU使用率大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率,第一阈值CPU使用率和第二阈值CPU使用率是至少部分地基于在时间范围之前的时间段内对第一处理和第二处理的统计分析来确定的,至少部分地基于第一CPU使用大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率来确定事件。

CC:示例Z至示例BB中任一示例的系统,其中该系统包括自动驾驶车辆,动作进一步包括:至少部分地基于该事件,控制自动驾驶车辆处于安全状态中。

DD:示例Z至示例CC中任一示例的系统,其中安全状态包括以下各项中的至少一项:控制车辆安全停止;在自动驾驶车辆停止的状态下禁用车辆的特征;或发出可听输出或可视输出中的至少一种。

EE:示例Z到示例DD中任一示例的系统,其中时间范围是第一时间范围并且针对第一时间范围,第一子系统被配置为第一配置,该动作进一步包括:确定第二时间范围,针对第二时间范围,第一子系统被配置为第二配置,取回多个数据分组中的针对第二时间范围内的第二数据分组;至少部分地基于第二数据分组,来确定与节点标识符相关联的运行功能中的每个运行功能的第二时间范围内的相对CPU使用率;以及至少部分地基于相对CPU使用率来确定第一子系统的第三CPU使用率。

FF:示例Z到示例EE中任一示例的系统,其中该系统包括自动驾驶车辆,该动作进一步包括:至少部分地基于第一CPU使用率和第三CPU使用率来确定包括第一配置或第二配置的车辆配置;并且根据车辆配置来控制自动驾驶车辆。

GG:示例Z到示例FF中任一示例的系统,其中确定车辆配置包括响应于确定第三CPU使用率低于第一CPU使用率来确定包括第二配置的车辆配置。

HH:示例Z至示例GG中任一示例的系统,所述动作进一步包括:确定多个时间范围;取回多个数据分组中的针对时间范围的各个时间范围的数据分组;至少部分地基于数据分组来确定在与节点标识符相关联的运行功能的每个运行功能的时间范围中的各个时间范围期间的相对CPU使用率;至少部分地基于相对CPU使用率,来确定针对时间范围的各个时间范围的第一子系统的第一CPU使用率和第二子系统的第二CPU使用率;确定针对第一子系统的第一CPU使用率范围;以及确定针对第二子系统的第二CPU使用率范围。

II:示例Z到示例HH中任一示例的系统,其中确定第一CPU使用率或确定第二CPU使用率中的至少一项包括对针对时间范围的各个时间范围的第一CPU使用率或第二CPU使用率中的至少一项执行统计分析,执行统计分析包括确定以下各项中的至少一项:表示CPU使用率的分布函数、表示平均CPU使用率的分布函数或表示最大CPU使用率的分布函数。

JJ:一种存储指令的示例非暂时性计算机可读存储介质,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:生成表示在第一系统上运行的第一处理和在第二系统上运行的第二处理的数据结构,第一处理和第二处理包括多个功能,并且数据结构包括多个节点,这些节点的各个节点包括标识多个功能中的功能的功能标识符;将节点标识与节点相关联,节点标识包括关于多个功能在第一处理和第二处理中的关系的信息;以一频率查询一个或多个处理器以确定第一计算系统和第二计算系统的运行功能;以及基于查询来生成多个数据分组,多个数据分组中的各个数据分组包括节点标识符中的与运行功能中的运行功能相对应的节点标识符。

KK:示例JJ的非暂时性计算机可读介质,所述动作进一步包括:确定时间范围;取回多个数据分组中的针对该时间范围内的数据分组;至少部分地基于数据分组来确定在与节点标识符相关联的运行功能中的每个运行功能的时间范围内的相对CPU使用率;并且至少部分地基于相对CPU使用率来确定第一子系统的第一CPU使用率和第二子系统的第二CPU使用率。

LL:示例JJ或示例KK的非暂时性计算机可读介质,该动作还包括:确定以下各项中的至少一项:第一CPU使用率大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率,第一阈值CPU使用率和第二阈值CPU使用率是至少部分地基于对在时间范围之前的一个或多个时间段内第一处理和第二处理的功能的统计分析来确定的;以及至少部分地基于第一CPU使用率大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率来确定事件。

MM:示例JJ到示例LL中任一示例的非暂时性计算机可读介质,其中时间范围是第一时间范围并且针对第一时间范围,第一子系统被配置为第一配置,动作进一步包括:确定第二时间范围,针对第二时间范围,第一子系统被配置为第二配置;取回多个数据分组中的针对第二时间范围内的第二数据分组;至少部分地基于第二数据分组,确定在与节点标识符相关联的运行功能中的每个运行功能的第二时间范围内的相对CPU使用率;以及至少部分地基于相对CPU使用率来确定第一子系统的第三CPU使用率。

NN:示例JJ至示例MM中的任一示例的非暂时性计算机可读介质,所述动作进一步包括:至少部分地基于第三CPU使用率低于第一CPU使用率来根据第二配置控制自动驾驶车辆。

结论

虽然已经描述了本文描述的技术的一个或多个示例,但是其各种变化、添附、置换和等同形式也包括在本文所描述的技术方案的范围内。

在示例的描述中,参考形成其一部分的附图,其通过说明的方式示出了所要求保护的主题的特定示例。应当理解,可以使用其他示例,并且可以进行诸如结构改变之类的改变或替换。这样的示例、改变或替换不一定相对于预期的所要求保护的主题偏离范围。尽管此处的步骤可以按一定顺序显示,但在某些情况下,可以更改顺序,以便在不更改本文所描述系统和方法的功能的情况下,可以在不同时间或以不同顺序提供某些输入。所公开的过程也可以以不同的顺序执行。另外,不需要以所公开的顺序执行本文所描述的各种计算,并且可以容易地实现使用计算的替代顺序的其他示例。除了重新排序外,在一些实例中,这些计算还可以分解为具有相同结果的子计算。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号