首页> 中国专利> 累计用于电子系统的硬件计数的方法和电子系统

累计用于电子系统的硬件计数的方法和电子系统

摘要

提供一种累计用于电子系统的硬件计数的方法和电子系统。通过从全速硬件计数器单元向存储器控制器连续发送计数值来执行计算机系统中的硬件计数的存储器内累计。发送单元定期地采样来自硬件计数器单元的性能数据,并且向用于与存储器控制器通信的互连总线的总线接口传输计数值。存储器控制器使用当前计数值来响应地更新在系统存储器中存储的累计计数值,例如递增累计计数值。可以与指向存储器位置的指针和关于将如何更新位置的指令一起发送计数值。指令可以是原子性读取-修改-写入操作,并且存储器控制器可以包括用于执行该操作的专用算术逻辑单元。数据收获器然后可以用来通过从系统存储器中的表读取累计计数值来收获累计计数值。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-21

    授权

    授权

  • 2015-01-14

    实质审查的生效 IPC(主分类):G06F11/30 申请日:20140618

    实质审查的生效

  • 2014-12-24

    公开

    公开

说明书

技术领域

本发明主要地涉及监视计算机系统,并且更具体地涉及一种累 计来自计算机系统或者设备中的硬件计数器的性能数据的方法。

背景技术

随着电子系统变得更复杂,更加需要监视系统的性能以保证最 优操作并且标识任何缺陷或者设计问题。这一考虑对于集成电路、 比如在计算机系统中使用的处理器和其他现有技术设备特别重要。 典型处理器包括都由集成电路装置形成的各种执行单元、寄存器、 缓冲器、存储器和其他功能单元。硬件计数器可以被嵌入于这一电 路装置内以跟踪各种事件。如今的处理器通常提供对在第一事件与 第二事件之间的时间、周期或者其他事件类型进行计数的性能监视 计数器。例如,如果将要测量延时,则计数的事件通常是周期,并 且典型的开始和停止事件可以是指令取读和指令完成、加载取读和 加载完成或者高速缓存未命中和高速缓存重载。备选地,如果考察 对于大量高速缓存重载延时的原因,则典型的开始和停止事件可以 是高速缓存加载和高速缓存重载,并且计数的事件可以是在互连结 构中的加载重试或者为了重载高速缓存而执行的某个动作。除了对 在开始与停止事件之间的事件进行计数,经常希望查看计数的事件 数目是否超过给定的门限,或者测量计数的事件数目多么频繁地超 过门限。为了提供这一附加功能,硬件可以支持包含如下值的门限 寄存器,计数的事件总数将与该值做比较。在硬件计数器寄存器中 的值可以与先前存储的值交换以作为使处理器的状态改变的上下文 切换的一部分。

由于如今的处理器的复杂性,所以存在可以计数的大量不同事 件类型以及需要指定的大量不同可能的开始事件和停止事件。用于 复杂计算机系统的在开始事件与停止事件之间的计数的事件总数可 以在大范围内变化。例如一些开始事件和停止事件对可以被仅少数 计数的事件分离,而其他开始事件和停止事件对可以被百万或者更 多计数的事件分离。

发明内容

本发明主要地涉及一种用于累计硬件计数的方法和系统,包括 在硬件计数器单元中维持用于电子系统的硬件部件的计数的事件的 当前计数值,以及向存储器控制器发送当前计数值,该存储器控制 器控制对电子系统的系统存储器设备的访问。存储器控制器使用当 前计数值来响应性地更新在电子系统的系统存储器设备中存储的累 计计数值。例如存储器控制器可以包括根据当前计数值来递增累计 计数值。在示例应用中,电子系统是计算机系统,并且硬件部件是 计算机系统的处理器核,处理器核处理在系统存储器设备中驻留的 程序指令。该系统可以包括发送单元,发送单元定期地采样来自硬 件计数器单元的包括当前计数值的性能数据,并且向用于与存储器 控制器通信的互连总线的总线接口传输当前计数值。可以与指向系 统存储器设备中的位置的存储器指针和关于将如何更新该位置的指 令一起发送当前计数值。在所示实现方式中,指令用于原子性读取- 修改-写入操作。存储器控制器可以包括用于执行原子性读取-修改- 写入操作的专用算术逻辑单元。数据收获器应用可以用来通过从系 统存储器设备中的表读取累计计数值来收获累计计数值。

本发明的以上以及附加目的、特征和优点将在以下具体书面描 述中变得清楚。

附图说明

可以通过参照附图更好地理本发明解并且使它的许多目的、特 征和优点为本领域技术人员所清楚。

图1是根据本发明的一个实施例构造的计算机系统的框图,该 计算机系统具有性能数据在系统的主存储器内被累计的硬件计数 器;

图2是图示根据本发明的一个实现方式的硬件计数器性能数据 的存储器内累计操作的高级示意图;

图3是根据本发明的一个实施例的用于来自硬件计数器单元的 性能数据的在存储器中的组条目的示例;

图4是图示根据本发明的一个实现方式的存储器内累计(IMA) 表的构造的图表,该IMA表具有被组织成不同分节的记录集合;以 及

图5是描绘根据本发明的一个实现方式的用于监视IMA性能数 据的收获器状态机的逻辑流程的图表。

在不同附图中使用相同标号指示相似或者相同项目。

具体实施方式

每代计算机硬件比先前更复杂。随着设计复杂性增加,性能差 异也增加。对现场极为广泛的客户工作量范围的评估和响应变得更 重要。必须设计硬件性能测量设备以满足这些增加的需求,但是用 于全部系统的连续性能监视的传统方式已经为许多限制所阻碍,这 些限制使现场部署在初始设计投资上或者在连续运营成本上昂贵得 无人问津。在这些限制之中有如下限制。

在计数器溢出之前可能存在相对短的间隔。这一步调需要中断 溢出维修或者频繁轮询以避免丢失数据。这两种维修方法消耗硬件 和软件执行资源。

在现有技术系统中,通常有少量全速计数器,因为用于构造计 数器以及关联事件、控制和数据路径布线的芯片面积非常昂贵。这 一压力经常迫使密集使用事件复用,这在历史上需要主机处理器干 预(工作量中断)以读取、存储和配置性能计数器。

如果设计焦点是在虚拟设备监视上,则测量范围可能限于在其 中使用它们的操作系统映像(逻辑分区)。如果这是仅有的可用数 据,则变得几乎不可能协调为了跨越所有物理设备构造整个系统的 性能快照而必需的同时虚拟机(同时分区)测量。相反,如果设计 焦点是在物理设备监视上,则没有回到虚拟域(逻辑分区或者虚拟 机)的对准的桥接。物理设备计数器也可能缺乏通向下层软件代码 状态的桥接。

在具有用于连接事件源与集中式硬件计数器的长数据路径的实 现方式中,硬件性能计数器经常不能恰好位于它们将监视的逻辑附 近。性能监视器在芯片设计的一些最复杂化的区域中尤其必要。长 的直接事件数据路径在面积、功率消耗和测试方面很昂贵。

对于上下文切换,存在必须在物理到虚拟映射的改变(分区交 换)时保存和恢复的额外状态开销(额外计数器寄存器)。这一开 销消耗了可以更好地花费在执行对服务提供者和终端使用客户有价 值的工作量上的系统资源。

常规监视系统使用广泛不同的收集和数据访问接口。位于物理 设备内的与程序和操作性能监视器的接口通常不同于在虚拟设备内 的接口。在相同系统内(或者从一代到下一代系统硬件)的不同接 口增添了开发成本并且增加部署错误的机会。

现有技术系统另外对于在许多监视应用之间的直接共享并不友 好。本地硬件性能计数器是稀缺和极有价值的资源。当前用于共享 这些计数器的方法增加测量间隔要求并且增加为每个应用在操作系 统内保存和恢复状态的开销。

因此将希望设计一种可以克服前述限制的改进的性能数据监视 方法。如果该方法可以适合用于在所有操作环境中、在实验室中和 在现场客户地点中的系统范围硬件性能监视则将进一步有利。本发 明使用新颖的存储器内累计(IMA)机制来实现这些目标。第一,IMA 连续更新存储器中的广泛表,向它们填充硬件性能事件计数(每芯 片数以千计的硬件性能事件计数易于维持)。第二,该机制用最少 硬件和软件资源消耗执行它的数据收集和累计,并且作为结果,它 的操作将接近不可察觉。第三,以可以从物理设备、虚拟机和代码 状态的角度准确和同时表征系统操作这样的方式在存储器中累计数 据。第四,IMA提供可以由在系统中的所有层级的性能监视工具使 用的统一接口。第五,IMA部件设计起来简单并且实施起来不昂贵。

现在参照各图并且具体参照图1,其描绘根据本发明构造的计算 机系统的一个实施例10。计算机系统10是具有连接到系统总线14 的多个处理器12a、12b的对称多处理器(SMP)系统。系统总线14 还被连接到提供与系统存储器18的接口的组合式存储器控制器/主 机桥接(MC/HB)16并且与该MC/HB通信。系统存储器18可以是 本地存储器设备或者备选地可以包括多个分布式存储器设备、优选 为动态随机存取存储器(DRAM)。在存储器分级中可以存在未描 绘的附加结构、比如板上(L1)和第二级(L2)或者第三级(L3) 高速缓存。

MC/HB16也具有与外围部件互连(PCI)快速链路20a、20b、 20c的接口。每个PCI快速(PCIe)链路20a、20b被连接到相应PCIe 适配器22a、22b,并且每个PCIe适配器22a、22b被连接到相应输 入/输出(I/O)设备24a、24b。MC/HB16还可以具有与I/O总线26 的接口,该I/O总线被连接到交换机(I/O结构)28。交换机28向 多个PCI链路20d、20e、20f提供用于I/O总线的扇出。这些PCI 链路被连接到更多PCIe适配器22c、22d、22e,这些PCIe适配器又 支持更多I/O设备24c、24d、24e。I/O设备可以包括而不限于键盘、 图形指示设备(鼠标)、麦克风、显示设备、扬声器、持久存储设 备(硬盘驱动)或者这样的存储设备、光盘驱动和网卡的阵列。每 个PCIe适配器提供在PCI链路与相应I/O设备之间的接口。MC/HB 16提供低延时路径,处理器12a、12b可以通过该低延时路径访问在 总线存储器或者I/O地址空间内任意处映射的PCI设备。MC/HB16 还提供用于允许PCI设备访问存储器18的高带宽路径。交换机28 可以提供在不同端点之间的对等通信,并且如果此数据流量未涉及 高速缓存相干存储器传送则无需被转发到MC/HB16。示出交换机 28为分离逻辑部件,但是它可以被集成到MC/HB16中。

在这一实施例中,PCI链路20c将MC/HB16连接到服务处理器 接口30以允许在I/O设备24a与服务处理器32之间的通信。服务处 理器32经由JTAG接口34被连接到处理器12a、12b,并且使用使 处理器12a、12b的操作中断的衰减线36。服务处理器32可以具有 其自己的本地存储器38并且被连接到存储用于系统启动的各种程序 指令的只读存储器(ROM)40。服务处理器32也可以具有对硬件操 作面板42的访问以提供系统状态和诊断信息。

在备选实施例中,计算机系统10可以包括这些硬件部件或者它 们的互连的修改或者附加部件,因此不应将描述的示例解释为暗示 关于本发明的任何架构限制。可以在等效云计算环境中实施本发明。

在计算机系统10被初始地上电时,服务处理器32使用JTAG接 口34以询问系统(主机)处理器12a、12b和MC/HB16。在完成询 问之后,服务处理器32获取用于计算机系统10的库存清单和拓扑。 服务处理器32然后对计算机系统10的部件执行各种测试、比如内 置自测试(BIST)、基本保证测试(BAT)和存储器测试。服务处 理器32向操作面板42报告用于在测试期间检测到的故障的任何错 误信息。如果系统资源的有效配置在取出在测试期间发现有故障的 任何部件之后仍然是可能的,则允许计算机系统10继续。向存储器 18中加载可执行代码,并且服务处理器32释放主机处理器12a、12b 以供执行程序代码、例如操作系统(OS),该程序代码用来启动应 用并且具体为辅助本发明的性能监视应用(收获器)44,可以在系 统的硬盘驱动(I/O设备24)中存储这些应用的结果。在主机处理器 12a、12b执行程序代码之时,服务处理器32可以进入如下模式,即 监视和报告任何操作参数或者错误、比如冷却风扇速度和操作、热 传感器、功率供应调节器以及处理器12a、12b、存储器18和MC/HB 16中的任一项报告的可恢复和不可恢复错误。服务处理器32可以基 于错误类型或者定义的门限采取进一步动作。

如所属技术领域的技术人员知道,可以与本发明结合使用的数 据收获器应用可以实现为系统、方法或计算机程序产品。因此,该 应用可以采取以下形式,即:完全硬件实施例、完全软件实施例(包 括固件、驻留软件、微代码等),或者硬件和软件方面结合的实施 例,所有这些本文一般称为“电路”、“模块”或“系统”。此外,本发明 还可以采取在表达的任何有形介质中实现的计算机程序产品的形 式,该有形介质具有实现在该介质中的计算机可读的程序代码。

可以采用一个或多个计算机可用的或者计算机可读的介质的任 意组合。计算机可用或者计算机可读介质例如可以是——但不限 于——电、磁、光、电磁、红外线、或半导体系统、装置或器件, 或者传播介质。计算机可读存储介质的更具体的例子(非穷举的列 表)可以包括以下:具有一个或多个导线的电连接、便携式计算机 磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦 式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读 存储器(CD-ROM)、光存储器件、诸如那些支持互联网或内联网的传 输介质、或者磁存储器件。计算机可用或计算机可读介质甚至可以 是程序可以打印于其上的纸或其他合适的介质,因为程序可以经由 例如对纸或其他介质进行光学扫描、然后汇编、解译或若需要的话 通过合适的方式以其他方式处理并继而存储在计算机存储器中而被 电子式捕获。在本发明的上下文中,计算机可用或计算机可读介质 可以是任何介质,其可以包含、存储、传送、传播或传输程序以供 指令执行系统、装置或者器件使用或者与其结合使用。计算机可用 介质可以包括具有利用其具体化的计算机可用程序代码的传播的数 据信号,在基带中或者作为载波的一部分。计算机可用程序代码可 以用任何适当的介质传输,包括——但不限于——无线、电线、光 缆、RF等等。

可以以一种或多种程序设计语言的任意组合来编写用于执行本 发明操作的计算机程序代码,所述程序设计语言包括面向对象的程 序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程 序设计语言,针对各种平台(诸如AIX环境)或者操作系统(诸如 Windows7或Linux)来编写。程序代码可以完全地在用户计算机上 执行、部分地在用户计算机上执行、作为一个独立的软件包执行、 部分在用户计算机上部分在远程计算机上执行、或者完全在远程计 算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可 以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连 接到用户计算机,或者,可以连接到外部计算机(例如利用因特网 服务提供商来通过因特网连接)。

下面将参照本发明实施例的方法、装置(系统)和计算机程序 产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的 每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程 序指令实现。这些计算机程序指令可以提供给通用计算机、专用计 算机或其他可编程数据处理装置的处理器,从而生产出一种机器, 这些计算机程序指令通过计算机或其他可编程数据处理装置的处理 器执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的 装置。

也可以把这些计算机程序指令存储在能使得计算机或其他可编 程数据处理装置以特定方式工作的计算机可读介质中,这样,存储 在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图 中的方框中规定的功能/操作的指令装置(instruction means)的制造 品(manufacture)。这种计算机可读存储介质不包括诸如传播信号 的瞬态介质。

也可以把计算机程序指令加载到计算机或其他可编程数据处理 装置上,使得在计算机或其他可编程数据处理装置上执行一系列操 作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编 程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定 的功能/操作的过程。

附图中的流程图和框图显示了根据本发明的多个实施例的系 统、方法和计算机程序产品的可能实现的体系架构、功能和操作。 在这点上,流程图或框图中的每个方框可以代表一个模块、程序段 或代码的一部分,所述模块、程序段或代码的一部分包含一个或多 个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作 为替换的实现中,方框中所标注的功能也可以以不同于附图中所标 注的顺序发生。例如,两个连续示出的方框实际上可以基本并行地 执行,或者它们有时也可以按相反的顺序执行,这依所涉及的功能 而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/ 或流程图中的方框的组合,可以用执行规定的功能或操作的专用的 基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合 来实现。

计算机系统10具有在系统的不同部件中嵌入的多个硬件计数器 单元(HCU)50。在描绘的实施例中,在主机处理器12a、12b中的 每个主机处理器中以及在互连结构28中提供HCU。HCU对在源部 件本地的性能事件进行计数而无丢失。来自HCU的数据由发送单元 定期地采样。发送单元的功能是将寻址和数据组合成记录集合、然 后发起向系统存储器18中的大存储器表发布那些记录集合。可以通 过多个基地址寄存器(BAR)高效地管理多个发布。发布可以在时 间上移位以支持历史收集。在格式化记录集合之后,发送单元然后 向总线接口传递那些集合。附加地址构造可以在总线接口中出现。 总线接口可以向存储器控制器16写入记录集合中的每个记录。存储 器控制器16解释每个数据记录和命令并且如果被指示则可以用对存 储器位置的算术操作来做出响应。在整个记录集合已经被交付以向 存储器发布时,在HCU中设立下一收集间隔。大和宽泛的硬件性能 数据表现在变成可用于性能监视应用。

在图2中示意地图示来自HCU50的性能数据的存储器内累计的 一个示例。HCU50被配置为在它们的逻辑域内对性能事件以全速进 行计数(而无丢失)。可以有多个监视域;在示例实现方式中有三 个:线程级域、核级域(在物理与虚拟之间的桥接)和芯片级域(存 储器控制器、总线、i/o、互连链路等)。也可以收集对测量间隔的 准确指派。如果性能监视要求允许在总体数据收获时的附加延迟, 则可以复用用于计数器的事件源以扩展硬件计数器单元的事件类型 覆盖。HCU例如可以根据提交于2011年12月6日的美国专利申请 第13/312,715号中的描述来适配。在该HCU中,通过如下来对电子 设备中的特定事件的出现进行计数:每当可变数目的特定事件已经 出现时递增事件计数器,并且每当计数尾数溢出时按几何级数地自 动增加该可变数目。

来自HCU50的数据由发送单元定期地采样。可以并入暂停进一 步累计或者缓冲以跨越HCU50中的多个计数器而维持对准。发送单 元52基于时间、监视的事件数据和源域的函数来形成地址偏移。每 个更新集合可以包括多个记录。更新集合中的所有记录将被一起发 送到存储器中的持久位置,或者它们都不被发布到存储器。在所示 实施例中,发送单元52的职责是格式化地址基础和关联性能数据以 用于简化其他逻辑单元的解码。为了跨越多个域维持HCU数据对准, 发送单元52可以简单地发布相同记录集合不止一次,从而更新多个 表(每个域一个表)。例如,可以通过简单地向两个表发布相同记 录集合来收集并行虚拟化数据:一个针对当前虚拟处理器核,另一 个针对物理核(虚拟处理器核所映射到的物理核)。累计表(或者 表的部分)的位置可以被置于操作系统的控制之下。BAR数目确定 硬件支持的并行性能分析视图的数目、例如物理核、虚拟核、物理 线程、虚拟线程等。访问权限可以由涉及的特定域来管理,例如管 理程序(用于逻辑分区)、操作系统或者用户应用。表或者条目偏 移可以在发布时推进或者按照时间间隔推进,从而创建所监视的性 能计数器数据的时序记录。一系列较短测量间隔将比长累计平均值 更准确地揭示峰值事件频率。

在格式化之后,发送单元52向总线接口54传递所有更新记录 集合。总线接口54组合来自发送单元52的地址偏移与系统范围管 理实体(管理程序)设置的基地址以形成用于正在更新的记录集合 的存储器中绝对地址。总线接口54然后逐个处理更新集合中的每个 记录。更新集合中的一些记录将被无更改地写入到存储器、比如时 间戳或者标识标签。一些记录预计被解释为读取-修改-写入操作(例 如存储器内递增)。总线接口54保证用于处理数据净荷中的每个记 录的命令类型对于其关联存储器控制器操作是适合的。总线接口54 也处理用于正在向存储器控制器发送的记录的存储器相干性协议以 保证数据一致性。

来自总线接口54的命令被发出到公共(系统)总线14,在该总 线上它们被存储器控制器16拾取。存储器控制器16处理每个命令 和通过总线接口54发送的关联数据净荷。例如存储器控制器16可 以通过以与性能数据中的计数值相等的数量来递增累计计数值从而 更新累计计数值。存储器控制器16包括专用于存储器控制器操作的 共同定位的本地算术逻辑单元(ALU)56。在原子性ALU操作由适 当存储器控制器接收时,读取在指定的存储器位置处的数据,执行 操作(例如加法操作),并且在适当位置处存储回新结果。可以在 高速缓存或者缓冲器中执行存储器控制器中的读取-修改-写入操作, 只要遵守系统存储器相干性规则。操作被视为原子的,因为完成整 个读取-修改-写入过程如同它是单个操作、即过程的任何中断将造成 重试整个过程。对于作为ALU操作的目标的存储器位置的操作数大 小可以不同于数据净荷的源。例如,作为对发送单元的输入的8位 递增可以在持久存储器位置中构建64位累计。一旦整个记录集合被 交付以向存储器发布,可以在HCU中设立下一收集间隔。

不是一定需要经由总线接口发送更新命令。可以经由允许与存 储器控制器通信的任何电路发送更新命令。也可以如例如涉及在I/O 结构26内的HCU50的图1中所见直接发送更新命令。

在存储器中维持大和宽泛的硬件性能事件计数器表完成了存储 器内累计过程的、由硬件连续和实际自治执行的部分。累计在其被 经常和规律地重复的意义上是连续的。表使收获应用的访问和解释 相对简单。在示例实现方式中,收获应用44从IMA表读取 ENTRANCE值、等待某个预定时间段、然后从表读取EXIT值。对 于性能计数和流逝的测量时间计算差分。在收获器应用44执行的性 能分析中使用那些差分(重建的递增)。对累计表的访问可以是直 接的或者通过某个管理实体(比如操作系统或者管理程序)。设计 表条目使得多记录更新可以被收获器44检测到。时间戳可以用于在 系统上下文中对测量精确地定位并且用作简单“前哨”,该前哨指示 数据记录在它正在被更新之时被读取。

如这里教导的存储器内累计完全利用处理速率要求的呈指数减 少,因为硬件性能数据穿过三级:收集、累计和分析。在与性能事 件的逻辑源最接近的监视域中,IMA执行向本地硬件计数器的无损 全速累计。也收集测量时间。向存储器中的累计位置定期地发布来 自本地计数器的递增。发布速率可以是执行无损本地累计的速率的 千分之一。性能监视应用然后以可以在跨越数百毫秒到周的范围中 测量的速率来从存储器读取计数器累计表。IMA与本地计数器逻辑 相比还利用存储器的相对无穷大小(宽度和深度)。

存储器内累计较传统硬件性能计数器收集方法而言具有许多优 点。通过从存储器中的累计去耦合本地(无损)事件计数累计,可 以使本地计数器变窄,因为可以使存储器中的计数器宽到足以去除 对于溢出校验的要求。例如64位存储器累计位置可能需要一百年来 溢出以按如今的处理器设计中的处理器时钟速率计数。可以向该64 位累计器馈送可以更小、例如16位的递增。由于不存在用于累计(原 子性相加)的存储器位置的独特之处,所以IMA计数器填充仅受为 这一目的而分配的存储器所限制。在如今的服务器中,芯片后面的 存储器的仅0.001%可以保持多于两百万个64位IMA计数器。整个 收集、发布和累计过程由(适度数量的)硬件逻辑来执行。一旦确 定存储器分配并且设置基地址寄存器,IMA关于用于将数据收集到 大存储器表的处理器资源方面几乎无消耗。IMA连续操作并且无需 跨分区(无需跨虚拟机)协调以执行系统范围监视。存储器内累计 延伸包括本地硬件性能计数器、公共处理器总线和存储器控制器的 现有(非外来)硬件逻辑部件和数据路径。这一方式有利于减少设 计和测试成本。

多个发布可以用来累计向不同域对准的数据。例如,如果用于 IMA的本地硬件性能计数器被置于处理器核中,则可以使用对准的 跨域数据(物理核、虚拟核和代码状态)来分析以下域。多个发布 所消耗的附加总线和存储器资源被能够组装从这些不同域收集的精 确对准的表的能力所弥补。由于可以在存在分区(虚拟机)改变时 执行向存储器的清空(close-out)发布,所以无需保存寄存器状态。 在更简单的IMA配置中,需要为传入分区写入一个指向它在存储器 中的持久表的新基地址。管理程序可以继续与IMA逻辑清空发布并 行的分区交换操作。

IMA表也提供统一接口并且可以如向基地址添加的索引一样简 单。通过抽象化性能事件,可以跨越在相同系统上的域以及潜在地 从一代硬件到下一代硬件维持合理地可移植接口。虽然IMA表优选 地仅有一个写入器,但是时间戳和记录更新指示符的使用产生对于 大量并行读取器(即收获器)的支持。以如下速率执行向存储器控 制器的递增发布,这些速率是低于本地事件计数的量值。这一方式 使总线和存储器访问带宽的使用变得经济。

进一步参照图3,在一个实施示例中,发送单元位于处理器核中, 并且它的HCU包括四个计数器的简单混合:具有固定事件源的两个 计数器(即相同的两个事件由不同HCU的集合来记录)和具有可编 程事件源的两个计数器。存在可以被配置为用于两个可编程HCU计 数器的输入的共计256个事件。流逝时间计数器也可以存在于HCU 中,其精确地匹配HCU计数器正在监视时的时间段。硬件事件源的 自动复用由计数器执行,该计数器由间隔定时器的到期所驱动,每 个间隔定时器溢出有一个HCU组。为了有助于准确跨表条目分析, 两个固定事件HCU计数器和流逝时间计数器可以用作桥接(归一化) 值。对于这一示例,存储器中的HCU组条目60包含图3中所见的 元素。HCU组条目60包含八个记录类型,这些记录类型包括时基、 更新计数、时间段、四个计数值(两个固定、两个可编程)和状态 指示符。每个记录类型具有关联数据源、存储器事务和发布-读取源 操作。

对于IMA实现方式的总体设计考虑包括:IMA发送单元的位置 (它可以在计算机系统10的任何硬件单元中);本地(无损)HCU 性能计数器数目;来自每个HCU的数据所驱动的不同IMA表(域) (设置BAR);配置IMA域表选择的方法;更新存储器中的IMA 表的方法(例如人工、自动或者混合);用于自动IMA表条目更新 的最小刷新速率;用于可编程HCU计数器(如果有)的事件源数目; 用于HCU计数器的配置方法(例如人工、自动或者混合);跨越表 条目的归一化支持;用于指示IMA表条目在被发送单元更新的过程 中的方法;以及对存储器中的IMA表的访问控制。

在图4中示出用于实施IMA表构造的更具体示例。IMA表62 被划分成四个分节64,每个分节64包含多个记录集合66。每个记 录集合包含图3中所示每个记录类型的性能数据和关联信息。逐一 改变HCU配置迫使对存储器表的更新。由于这一点,间隔定时器在 效果上也可以设置最小更新速率。对于这一示例,间隔定时器具有 八个设置(以毫秒为单位):0.5、1、4、16、64、256、1024和4096。 HCU中的事件选择是人工和自动选择的混合。使用硬件来自动扫描 所有256个基事件(128组),但是执行对指明的表分节的过滤。过 滤器基于由操作系统在硬件寄存器中维持的状态位。这一过滤帮助 构建在下层软件与该软件在其上运行的物理和虚拟设备之间的链 接。事件掩码寄存器保持代码状态过滤设置。对于所描绘的实施例, HCU事件组的四分之一(32)将无过滤,而其余(96)将被三个掩 码设置之一过滤(每个掩码设置字段32个组)。三个掩码值集合将 通过代码描绘、比如“内核”、“用户”和“管理程序”来间断(breakout) 性能事件计数器累计。在备选实现方式中,计数器可以对一般由核 执行的指令数目进行计数,而过滤器可以仅对于特定指令类型、例 如浮点,产生计数。

为了高效地桥接从物理设备到虚拟设备的分析,两个硬件基地 址寄存器(BAR)可以用来支持用于虚拟处理器核(VPCBAR)和 物理处理器核(PPCBAR)的并行IMA表累计。在VPCBAR中的值 指向从虚拟处理器核设备的立场累计的HCU条目的一个或者多个 表;在PPCBAR中的值指向从物理处理器核设备的立场累计的一个 或者多个表。除了由间隔定时器的到期所引起的表条目更新之外, 向IMA表的发布也可以由向VPCBAR的写入(这指示虚拟到物理映 射中的改变)来触发。在多数情况下,传入虚拟处理器核将具有与 传出虚拟处理器核使用的用于累计的IMA表不同的用于累计的IMA 表。流逝时间计数器补偿由在更新之间的未纠正的交互所引起的更 新间隔可变性,这些更新包括由VPCBAR引起的更新和由间隔定时 器的到期引起的更新。为了延伸虚拟化分析,附加VPCBAR表可以 由管理程序支持。由于VPCBAR中的地址在分区(虚拟机)映射改 变时在主机代码中由管理程序设置,所以任何数目的VPCBAR表间 断是可能的。对于这一示例,可以实施四个表拆分以提供虚拟处理 器核在它在不同亲合环境之下执行之时的更具体表征、比如‘家用’ 物理处理器核、“家用”物理芯片、“家用”节点和“远程”节点。地址偏 移由在核中的发送单元形成。在示例实现方式中,通过级联在每个 条目内的事件复用器索引和记录偏移来构造它们。如果执行时序收 集,则选择滚动缓冲器条目的位可以被恰好置于复用器索引以上。

最后,必须从存储器读出并且向性能监视应用(数据收获器) 中读入IMA表数据。在图5中图示用于收获器状态机70的一个实 现方式。在过程开始时,收获器未在监视(72)。通过读取感兴趣 的IMA记录集合的当前值来获得ENTRANCE计数(74)。数据收 获器可以对在IMA记录集合中返回的状态代码进行解释和响应。在 等待预定义的测量间隔之后,通过读取感兴趣的相同IMA记录集合 的当前值来获得EXIT计数(76)。然后根据收获器的特定监视功能 来处理累计(78)。例如收获器可以计算退出到进入计数增量(差 值)并且报告或者分析所得计数增量。重复这些步骤直至终止监视 活动。

收获器也可以被设计为支持异步采样。尽管个别“向存储器添加” 和“向存储器存储”64位操作本身是原子性的,但是完整IMA记录集 合的发布无需如此。使用标准同步机制(比如POWERPC指令 LARX/STCX)将可能在存储器控制器中造成竞争并且也可能使硬件 逻辑变复杂。一种用于大型IMA表的异步解决方案是在每个记录集 合的前面和后面设立先前提到的“前哨”。在这一示例中,再次重复 初始时基值的一部分以作为关闭标记符以指示完整记录集合已经被 发布到存储器。

如这里教导的存储器内累计回应对于硬件部件的连续和渐进式 系统范围监视的需要。本发明因而对于诸如服务质量、服务水平协 定、退费评估、客户工作量表征、负荷平衡和产能预测之类的领域 具有广泛应用。有利地,对于性能计数器溢出无需检测或者处理, 并且本发明可以支持大量计数器。累计可以完全由硬件执行。可以 从“大盒子”计算机系统(单个固件控制的核集合)的上电到掉电实 现连续硬件性能计数器监视。本发明特别易于实施,因为它无需特 殊系统总线连接。不同于现有技术监视系统,本发明在最小虚拟化 开销的情况下允许虚拟化和代码状态间断,并且专属于分区的计数 累计表在存储器中持续。本发明也在利用一个写入器、许多读取器 和无需等待的情况下允许用于带内或者带外性能监视应用的简单和 统一接口。本发明还使存储器带宽的使用变得经济。

虽然已经参照具体实施例描述本发明,但是不意在在限制意义 上解释本描述。公开的实施例的各种修改以及本发明的备选实施例 将在参照本发明的描述时变得为本领域技术人员所清楚。例如尽管 已经在使用原子性读取/添加/写入指令来执行累计的存储器控制器 的具体上下文中描述本发明,但是这里的发明概念更一般地适用于 一般可以对性能数据执行操作的“智能”存储器控制器。因此设想可 以进行这样的修改而未脱离如在所附权利要求中限定的本发明的精 神实质或者范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号