使用用户可见事件来指示并行操作的制作方法

文档序号:6426856阅读:121来源:国知局
专利名称:使用用户可见事件来指示并行操作的制作方法
技术领域
本发明涉及用于使用用户可见事件来指示并行操作的方法、系统和计算机程序产品。
背景技术
1.背景和相关技术计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机系统不仅彼此耦合还耦合到其他电子设备以形成计算机系统和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境上。此外,许多计算机系统包括多核处理器或多个处理器。因此,许多计算环境包括可被用来执行指令的多个处理元素(例如,计算机、处理器、核等)。为了利用多个处理元素,可以特别地开发用于并行(与串行相对)执行的软件。并行执行通过将问题分解成各个独立的部分以使得每一元素可以与其他处理元素并发 (即,“并行”)执行指令来对它的问题部分进行求解来利用多个处理元素来对该问题进行求解。如此,许多计算可被同时执行,从而减少运行时。然而,开发用于并行执行的软件(通常被称为“并行编程”)引入了在开发用于串行执行的软件时不存在的多个技术挑战。例如,并行执行需要不同处理元素之间的通信和协调,以将问题分解成各个独立部分并将来自各个独立部分的结果归并回该问题的总体解决方案。因此,为了使用并行编程,应用程序开发人员通常必须具有与进程间(或线程间) 通信相关的附加技术知识。然而,一些应用程序开发人员可能缺少获取这一进一步技术知识的愿望和/或能力。至少部分由于需要这一附加技术知识,开发了将并行执行的技术细节向应用程序开发人员进行抽象的并行编程抽象。例如,这些产品可以将进程间(或线程间)通信的底层实现和机制向应用程序开发人员进行抽象。如此,通过充分利用这些并行编程抽象,应用程序开发人员能更专注于他们的应用程序的功能,从而在应用程序开发中造成生产性增长。不幸的是,这些相同的抽象隐藏了为了性能调节和应用程序错误调试而需要理解的程序执行细节。例如,在程序以低于最优的方式执行时或在发生错误时,这些抽象限制了应用程序开发人员可用来校正和/或以其他方式解决程序的执行的信息。

发明内容
本发明延及用于使用用户可见事件来指示并行操作的方法、系统和计算机程序产品。在一些实施例中,在计算机系统处呈现得自程序的并行执行的程序执行细节。在计算机系统上执行一程序。该程序被配置成在多个处理器元素上跨多个线程来并行执行。事件标记被插入到运行时系统中。事件标记对应于用户感兴趣的事件。事件标记被用来更好地理解程序的性能。事件日志将以下各项中的一个或多个归并成图形数据处理器利用信息和线程活动信息。该图形数据表示在生成感兴趣的事件的指令的执行期间对多个处理元素和多个线程如何进行利用中的一个或多个。处理器利用信息指示在指令的执行期间多个处理元素中的每一个的利用。线程活动指示在指令的执行期间多个线程的线程状态。该图形数据被进一步图形数据所补充。该进一步图形数据表示这些指令所生成的事件标记的可视化。在视觉上呈现该图形数据和进一步图形数据。该图形数据和进一步图形数据的呈现在视觉上指示至少在指令的执行期间的处理器利用和线程活动中的一个或多个,连同指示感兴趣事件的事件标记的可视化。提供本发明内容是为了以简化的形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。


为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中图IA示出便于呈现得自程序的并行执行的程序执行细节的示例计算机体系结构。图IB示出已解析进程/线程活动事件和已解析并行查询事件的更详细视图。图2示出用于呈现得自程序的并行执行的程序执行细节的示例方法的流程图。图3A示出得自程序的并行执行的程序执行细节的示例呈现。图;3B示出得自程序的并行执行的程序执行细节的另一示例呈现。
具体实施例方式本发明延及用于使用用户可见事件来指示并行操作的方法、系统和计算机程序产品。在一些实施例中,在计算机系统处呈现得自程序的并行执行的程序执行细节。在计算机系统上执行一程序。该程序被配置成在多个处理器元素上跨多个线程来并行执行。事件标记被插入到运行时系统中。事件标记对应于用户感兴趣的事件。事件标记被用来更好地理解程序的性能。事件日志将以下各项中的一个或多个归并成图形数据处理器利用信息和线程活动信息。该图形数据表示在生成感兴趣的事件的指令的执行期间对多个处理元素和多个线程如何进行利用中的一个或多个。处理器利用信息指示在指令的执行期间多个处理元素中的每一个的利用。线程活动指示在指令的执行期间多个线程的线程状态。
该图形数据被进一步图形数据所补充。该进一步图形数据表示这些指令所生成的事件标记的可视化。在视觉上呈现该图形数据和进一步图形数据。该图形数据和进一步图形数据的呈现在视觉上指示至少在指令的执行期间的处理器利用和线程活动中的一个或多个,连同指示感兴趣事件的事件标记的可视化。本发明的各实施例可以包括或利用包括诸如一个或多个处理器和系统存储器的计算机硬件的专用或通用计算机,这将在以下做出进一步讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。 这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(或计算机存储设备)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同的计算机可读介质计算机存储介质(或设备)和传输介质。计算机存储介质(或设备)包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置的且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于承载计算机可执行指令或数据结构形式的所需程序代码装置的并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动转移到计算机存储介质(或设备)(或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(或设备)。由此,应当理解,计算机存储介质(或设备)可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言等中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解的是,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可以在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实践。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。图IA示出便于呈现得自程序的并行执行的程序执行细节的示例计算机体系结构100。参考图1A,计算机体系结构100包括应用程序进程101(其进一步包括处理元素102 和并行执行运行时129)、操作系统内核103、跟踪记录器104、剖析器128(其进一步包括归并/相关组件106)、以及显示器107。计算机体系结构100中的各组件中的每一个组件可经由计算机系统101的系统总线来彼此连接。因此,各组件可以通过系统总线彼此通信。或者,在计算机体系结构100内描绘的组件中的一个或多个可通过诸如例如局域网(“LAN”)、广域网(“WAN”)和甚至因特网等网络(或作为网络的一部分)彼此连接。因此,一个或多个所描绘的组件中的每一个以及任何其他连接的计算机系统及其组件都可以创建消息相关数据并通过网络交换与消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、 简单邮件传输协议(“SMTP”)等)。如图所示,应用程序进程101包括处理元素102和并行执行运行时129。处理元素 102还包括多个处理元素,包括处理元素102A、102B、以及102C。在一些实施例中,计算机体系结构101表示包括一个或多个处理单元的单个计算设备,其中每一处理单元还包括一个或多个处理核。在这些单个计算设备实施例中,每一处理元素102A、102B、102C等可以表示单个计算机设备内的处理单元和/或处理核。在其他实施例中,计算机体系结构100包括集群、网格等中的多个互连的计算设备。在这些其他多个计算设备实施例中,每一处理元素可表示多个计算设备之一。因此,并行执行运行时1 和处理单元102提供用于程序的并行执行的环境。即, 并行执行运行时1 可以对程序的不同部分在不同的处理单元102上的并发执行进行协调。应用程序进程101可以在并行执行期间输出并行(例如,查询相关)事件。在一些实施例中,与计算机系统101处的其他库和/或软件相组合的处理单元102 提供用于使用管理并发性的程序扩展来并行地执行程序的环境。例如,.Net框架的并行扩展(Parallel Extension)可被用来通过使用查询以展示数据并行性。.Net框架的并行扩展可包括指令并行语言集成查询(“PLINQ”)、任务并行库(“TPL”)、以及一组经协调的数据结构(“CDS”)。操作系统内核103被配置成当在处理元素102上(并行地)执行程序时,生成程序执行期间的处理器和线程活动和利用。跟踪记录器104被配置成接收进程/线程活动事件以及并行查询事件。跟踪记录器104可以将进程/线程活动事件和并行查询事件聚集成诸如例如跟踪日志等一个或多个文件。归并/相关组件106可以接收跟踪日志并解析不同类型的事件(例如,进程/线程活动事件和/或并行查询事件)。归并/相关组件106可以将不同的事件归并到同一时间线中并将经归并的事件转换成图形表示。该图形表示可在显示器107处输出。归并/相关组件106还可以用表示由所执行的指令所生成的事件标记的可视化的进一步图形数据来补充图形表示。图2示出用于呈现得自程序的并行执行的程序执行细节的示例方法200的流程图。方法200将参考计算机架构100中的组件和数据来描述。方法200包括在计算机系统处执行程序的动作,该程序被配置成在多个处理器元素上跨多个线程来并行执行(动作201)。例如,计算机体系结构100可以执行程序111。程序111可被配置成并行执行。如此,应用程序进程101可被实例化成并行地执行程序111。 并行执行运行时1 可以对程序111的跨处理元素(线程)102中包括的处理元素(线程) 中的至少两个的并行执行来进行协调。方法200包括将与用户感兴趣的事件相对应的事件标记插入到运行时系统中以理解程序的性能的动作(动作202)。在一些实施例中,至少一个并行查询事件的事件标记被插入到事件日志中。在程序在多个处理器元素上的执行期间,事件标记可被插入并且可指示查询的执行的跨度。例如,在执行期间,应用程序进程101可以输出并行查询事件113。 跟踪记录器104可以接收并行查询事件113并且随后将并行查询事件113包括在事件日志中。归并/相关组件106随后可解析并行查询事件来生成已解析并行查询事件118。在一些实施例中,已解析并行查询事件包括标记对。该标记对可包括指示查询的执行的开始的查询开始事件标记和指示查询的执行的结束的查询结束事件标记。每一标记还可与指定调用该查询的始发任务的标识符相关联。例如,转向图1B,标记对119可指示在程序111的执行期间查询127的执行的跨度。更具体地,标记119B可标识查询127的执行的开始并且标记119E可标识查询127的执行的结束。标记119B和119E各自包括标识查询127的查询标识符1 和标识调用查询127的任务的任务ID 129。在程序111的执行期间,操作系统内核103还可生成进程/线程活动事件112。进程/线程活动事件112可指示以下各项中的一个或多个在程序111的执行期间多个处理元素102中的每一个的利用以及在程序111的执行期间多个线程的线程状态。跟踪记录器 104可接收进程/线程活动事件112并将进程/线程活动事件112包括在事件日志中。剖析器108随后可解析进程/线程活动事件112以生成已解析进程/线程活动事件114。在一些实施例中,已解析进程/线程活动事件包括处理器利用和线程活动中的一个或多个。 例如,转向图1B,已解析进程/线程活动事件114包括处理器利用116和线程活动117。处理器利用116可指示在程序111的执行期间多个处理元素102中的每一个的利用。线程活动117可指示在程序111的执行期间多个线程的线程状态。方法200包括将事件日志与以下各项中的一个或多个归并成图形数据的动作处理器利用信息和线程活动信息,该图形数据表示在生成感兴趣的事件的指令的执行期间对多个处理元素和多个线程如何进行利用中的一个或多个,该处理器利用信息指示在指令的执行期间多个处理元素中的每一个的利用,该线程活动指示在指令的执行期间多个线程的线程状态(动作203)。例如,归并/相关组件106可将已解析进程/线程活动事件114和已解析并行查询事件118归并成图形数据121。因此,在一些实施例中,标记事件与处理器线程和/或处理器核信息相归并。取决于已解析进程/线程活动事件114的内容,图形数据121可指示在查询127 的执行期间对多个处理元素102和多个线程如何进行利用中的一个或多个。方法200包括用表示指令所生成的事件标记的可视化的进一步图形数据来补充该图形数据的动作(动作204)。例如,归并/相关组件106可以用表示并行查询事件113 的可视化的进一步图形数据来补充图形数据121。描绘事件的图形数据的补充和/或除描绘事件的图形数据之外的其他图形数据也可被包括在该进一步图形数据中。例如,文本和 /或数字可被包括在工具箱中或是某一其他形式的表示。方法200包括在视觉上呈现该图形数据和进一步图形数据,以在视觉上指示至少在指令的执行期间的处理器利用和线程活动中的一个或多个,连同指示感兴趣事件的事件标记的可视化的动作(动作205)。例如,计算机体系结构100能在显示器107处在视觉上呈现图形数据121和表示并行查询事件113的可视化的进一步图形数据。图形数据121和进一步图形数据的呈现在视觉上指示至少在查询127的执行期间的处理器利用和线程活动中的一个或多个,连同并行查询事件113的可视化。例如,处理器利用和线程活动可基于查询ID 1 和任务ID 129。现在转向图3A,图3A描绘在视觉上呈现指示在查询期间的处理元素利用的图形数据的示例。如图所示,处理元素302包括处理元素302A-302D。查询标记319B和319E是表示查询的执行的标记对。查询标记319B和319E对应于具有查询ID(QueryID) = 1和始发任务ID (OriginatingTaskId) = 113的查询。查询标记319B指示查询的开始(QueryBegin)。 在查询标记319B之前,处理元素302A被用于串行执行。在串行执行期间,处理元素302B、 302C以及302D是空闲的。在查询标记319B之后,各不同的处理元素302A-302D被并发地(并且在时间上同时地)用来实现具有查询ID = 1的查询。到并发执行的转换可导致处理元素302A上的线程分叉成处理元素302B、302C以及302D上的附加线程。在并发执行期间,在执行对应于该查询的任务时,不同的处理元素可在各种不同的时间被利用和/或可以空闲。查询标记319E指示查询的结束(QueryEnd)。在查询标记319E之前,各不同的处理元素302A-302D被并发地(并且在时间上同时地)用来实现具有ID = 1的查询。在查询标记319E之后,处理元素302A再次被用于串行执行,使得处理元素302B、302C以及3202D 空闲。到串行执行的转换可导致处理元素302B、302C以及3202D处的线程联合成在处理元素302A上的线程。因此,在查询的边界内,执行可经由附加任务的若干分叉/联合编组来实现。进一步标记对可被用来指示查询内的任务的开始和结束。例如,图:3B描绘在视觉上呈现的指示在查询和所包括的任务期间的处理元素利用的图形数据的示例。类似于图3A,查询的开始和结束由标记319B和319E来指示。附加标记可被用来指示查询内的任务的开始和结束。例如,任务标记331B和331E指示在处理元素302D上执行的任务的开始和结束。任务标记331B和331E分别指示与查询(S卩,具有查询ID= 1)相对应并且具有任务ID = 121的任务。任务标记33 和333E指示在处理元素302C上执行的任务的开始和结束。任务标记33 和333E分别指示与查询(即,具有查询ID= 1)相对应并且具有任务ID = 127的任务。在更具体地使用PLINQ的实施例中,更高级标记可被用于QueryBegin(查询开始)和QueryEnd (查询结束)。QueryBegin标识查询的执行的开始并且QueryEnd标识查询已被枚举到完成。QueryBegin和QueryEnd的事件标记可各自具有诸如查询的唯一 ID(查询ID)等标识信息和指定系统中的哪一任务调用PLINQ查询来进行枚举的 ID (originatingTaskld (始发任务 Id))。originatingTaskld可被用于可组成性。例如,在QueryBegin禾口 QueryEnd事件标记的边界内,执行可经由附加任务的若干分叉/联合编组来实现。每一任务使用TaskBegin 和TaskEnd标记来展示该系统的内部工作。TaskBegin (任务开始)和TaskEnd (任务结束) 标记各自具有帮助标识它们属于该系统中的哪一查询以及该系统中的哪一任务正在执行该执行工作的queryld(查询Id)和taskld(任务Id)属性,以及其他属性。querylD按每运行时且每应用程序上下文(例如,AppDomain(应用程序域))是唯一的。在多个查询之间存在重叠时,这一唯一性帮助将每一查询的各组成部分与其他查询的各组成部分进行区分。QueryGroupBegin(查询群开始)和QueryGroupEnd(查询群结束)事件标记可被用来标识如以下模式中的多级分叉/联合{QueryBegin {QueryGroupBegin {TaskBegin, TaskEnd},QueryGroupEnd}, QueryEnd}。在查询内,对理解系统中的附加状态改变而言,其他事件也可能是有价值的。因此,适当的标记可被用来指示这些事件。在查询没有并行运行而是在单个线程或任务上运行的情况下,kquentialhlIBack(串行后退)事件的标记可被用来警告用户。在查询部分地并行运行,随后后退到串行执行的情况下,PartialkquentialhllBack(部分串行后退)事件的标记可被用来警告用户。当在系统中显式地取消查询的情况下,Cancellation(取消)事件的标记可被用来警告用户。Cancellation事件标记可帮助示出调用Cancellation时与任务停止执行时和元素生产完成时之间的等待时间。在QueryBegin事件之后并在QueryEnd事件之前,在数据并行查询系统产生第一元素的情况下,FirstElementYielded(生产了第一元素)事件的标记可以警告用户。在系统认为它必须迫使归并中间查询才能正确地执行查询的情况下,QueryPrematureMerge (查询提早归并)事件的标记可以警告用户时间中间查询。QueryPrematureMerge事件标记可以提供足够信息以供用户改变查询形状来提高性能。在必须进行数据并行执行来对数据源中间查询执行进行划分的情况下, QueryR印artioned (查询重新划分)事件的标记可以警告用户。其他子事件的标记也可能警告用户特定划分类型以及数据并行执行引擎的其他固有性质。在其他实施例中,如对于TPL,也可使用其他标记。例如,各标记可被用来对 ParallelOperationBegin (并行操作开始)禾口 ParallelOperationEnd (并行操作结束)力口标记。ParallelOperationBegin标识操作的执行的开始,并且ParallelOperationEnd标识该操作已执行了所有迭代直至完成。因此,事件标记可被用来指示执行(例如,分叉/联合)的抽象的外层以及内部细节。可以使用唯一标识符,从而使开发人员能够推理出查询是如何组成的。使用事件标记, 可以展示并行处理系统(包括提供数据并行性的系统)的工作细节。事件标记可被用来示出各种执行特性,包括用于指示执行程序(例如,查询)的开始和结束的更高级标记。在执行程序(查询)内部,各单独的分叉/联合操作可以用标记的各子级(sub-level)来指示以展示它们的操作。执行引擎所作出的附加决定,如在各元素最初生产时、在各查询重叠或嵌套时、在查询被取消时、在查询转成串行操作时、在需要提早归并或重新划分时,也可被展不。本发明可被具体化为其他具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
权利要求
1.一种在包括多个处理器元素(102)和系统存储器的计算机系统中的、用于呈现得自程序在所述计算机系统处的程序并行执行的程序执行细节的方法,所述计算机系统被配置成利用所述多个处理器元素(10 来用于程序的跨多个线程的并行执行,所述方法包括在所述计算机系统处执行程序(111)的动作,所述程序被配置成在所述多个处理器元素上跨所述多个线程来并行执行;将与用户感兴趣的事件(in)相对应的事件标记(119B,119E)插入运行时系统以理解所述程序(111)的性能的动作;将事件日志(114)与以下各项中的一个或多个归并成图形数据(121)的动作处理器利用信息(116)和线程活动信息(117),所述图形数据表示在生成感兴趣的事件(113)的指令的执行期间对所述多个处理元素(10 和多个线程如何进行利用中的一个或多个,所述处理器利用信息(116)指示在所述指令的执行期间所述多个处理元素中的每一个的利用, 所述线程活动(117)指示在所述指令的执行期间所述多个线程的线程状态;用表示所述指令所生成的事件标记的可视化的进一步图形数据来补充所述图形数据 (121)的动作;以及在视觉上呈现所述图形数据(121)和所述进一步图形数据,以在视觉上指示至少在所述指令的执行期间的处理器利用和线程活动中的一个或多个,连同指示所述感兴趣的事件 (113)的事件标记(119B,119E)的可视化的动作。
2.如权利要求1所述的方法,其特征在于,将事件标记插入运行时系统的动作包括在所述程序在所述多个处理器元素上的执行期间将至少一对高级标记插入事件日志的动作, 所述一对高级标记指示查询的执行的跨度,所述一对高级标记包括标识所述查询的执行的开始的查询开始事件标记和标识所述查询的执行的结束的查询结束事件标记。
3.如权利要求2所述的方法,其特征在于,所述查询开始事件标记和所述查询结束事件标记各自包括标识所述查询的查询标识符和指定调用所述查询的始发任务的任务标识符。
4.如权利要求3所述的方法,其特征在于,在视觉上呈现所述图形数据和所述进一步图形数据的动作包括在视觉上呈现所述唯一查询标识符和任务标识符中的一个或多个的动作。
5.如权利要求2所述的方法,其特征在于,还包括将指示所述计算机系统中的状态改变的一个或多个其他事件标记插入在所述事件日志中的查询开始事件标记与所述查询结束事件标记之间的动作,所述一个或多个其他事件标记用于指示从以下各项中选择的状态改变指示查询没有并行运行的情况的串行后退事件,指示查询部分地并行运行并随后后退到串行执行的情况的部分串行后退事件,指示查询被明确地取消的情况的取消事件,指示在所述查询开始事件之后以及所述查询结束事件之前并行执行产生了第一结果元素的时间的生产了第一元素事件,指示所述计算机系统认为它必须迫使归并的情况下的时间中间查询的查询提早归并事件,以及指示可能需要并行执行来划分数据源中间查询的情况的查询重新划分事件。
6.如权利要求1所述的方法,其特征在于,将事件标记插入运行时系统的动作包括在所述程序在所述多个处理器元素上的执行期间将一对高级标记插入事件日志的动作,所述一对高级标记指示所述程序的执行的跨度,所述一对高级标记包括标识所述程序的执行的开始的并行操作开始事件标记和标识所述程序已执行所有迭代直至完成的并行操作结束事件标记。
7.如权利要求1所述的方法,其特征在于,在视觉上呈现所述图形数据和所述进一步图形数据的动作包括呈现文本或指示感兴趣的事件的调用栈之一的动作。
8.如权利要求1所述的方法,其特征在于,在视觉上呈现所述图形数据和所述进一步图形数据的动作包括指示感兴趣的事件何时发生以及感兴趣的事件发生在所述程序的源代码中的何处之一的动作。
9.如权利要求1所述的方法,其特征在于,使用在所述多个处理元素上的并行执行来执行所述编程的动作包括使用在以下各项之一上的并行执行来执行编程的动作多个不同的处理器和相同处理器上的多个不同的处理核。
10.一种用于包括多个处理器元素(10 和系统存储器的计算机系统处的计算机程序产品,所述计算机系统被配置成利用所述多个处理器元素(10 来用于程序跨多个线程的并行执行,所述计算机程序产品用于实现一种用于呈现得自程序在所述计算机系统处的并行执行的程序执行细节的方法,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令在被执行时使得所述计算机系统执行所述方法,所述方法包括以下步骤在所述计算机系统处执行程序(111),所述程序被配置成在所述多个处理器元素上跨所述多个线程来并行执行;将与用户感兴趣的事件(in)相对应的事件标记(119B,119E)插入运行时系统以理解所述程序(111)的性能;将事件日志(114)与以下各项中的一个或多个归并成图形数据(121)处理器利用信息(116)和线程活动信息(117),所述图形数据表示在生成感兴趣的事件(113)的指令的执行期间对所述多个处理元素(10 和多个线程如何进行利用中的一个或多个,所述处理器利用信息(116)指示在所述指令的执行期间所述多个处理元素中的每一个的利用,所述线程活动(117)指示在所述指令的执行期间所述多个线程的线程状态;用表示所述指令所生成的事件标记的可视化的进一步图形数据来补充所述图形数据 (121);以及在视觉上呈现所述图形数据(121)和所述进一步图形数据,以在视觉上指示至少在所述指令的执行期间的处理器利用和线程活动中的一个或多个,连同指示所述感兴趣的事件 (113)的事件标记(119B,119E)的可视化。
11.如权利要求10所述的计算机程序产品,其特征在于,在被执行时使得所述计算机系统将与用户感兴趣的事件相对应的事件标记插入运行时系统中的计算机可执行指令包括在被执行时使得所述计算机系统在所述程序在所述多个处理器元素上的执行期间将至少一对高级标记插入事件日志的计算机可执行指令,所述一对高级标记指示查询的执行的跨度,所述一对高级标记包括标识所述查询的执行的开始的查询开始事件标记和标识所述查询的执行的结束的查询结束事件标记。
12.如权利要求11所述的计算机程序产品,其特征在于,还包括在被执行时使得所述计算机系统将一对或多对查询群事件标记插入在所述事件日志中的所述查询开始事件标记和所述查询结束事件标记之间的计算机可执行指令,每一组查询群事件标记被用于嵌套多级分叉/联合中的一级,每一对查询群标记包括标识查询群在所述多级分叉/联合中的一级处的开始的查询群开始事件标记和标识所述查询群在所述多级分叉/联合中的一级处的结束的查询群结束事件标记。
13.如权利要求12所述的计算机程序产品,其特征在于,在被执行时使得所述计算机系统将一对或多对查询群事件标记插入在所述事件日志中的所述查询开始事件标记和所述查询结束事件标记之间的计算机可执行指令包括在被执行时使得所述计算机系统将一对查询群事件标记插入在所述事件日志中的所述查询开始事件标记和所述查询结束事件标记之间的计算机可执行指令,并且还包括在被执行时使得所述计算机系统被如下配置的计算机可执行指令将一对或多对任务事件标记插入在所述事件日志中的所述查询群开始事件标记和所述查询群结束事件标记之间。
14.如权利要求10所述的计算机程序产品,其特征在于,在被执行时使得所述计算机系统将与用户感兴趣的事件相对应的事件标记插入运行时系统中以理解所述程序的性能的计算机可执行指令包括在被执行时使得所述计算机系统在所述程序在所述多个处理器元素上的执行期间将一对高级标记插入事件日志的计算机可执行指令,所述一对高级标记指示所述程序的执行的跨度,所述一对高级标记包括标识所述程序的执行的开始的并行操作开始事件标记和标识所述程序已执行所有迭代直至完成的并行操作结束事件标记。
15.一种计算机系统,其特征在于,所述计算机系统包括系统存储器;多个处理元素(102);显示器(107);以及其上存储有表示PLINQ查询(127)、事件日志生成器(104)、进程监视器(1 )、以及归并组件(106)的计算机可执行指令的一个或多个计算机存储介质,其中所述PLINQ查询 (127)被配置成在所述多个处理器元素(10 上跨多个线程来执行;在所述多个处理器元素上的执行期间将至少一对高级标记(119B,119E)插入事件流 (113),所述一对高级标记(119B,119E)指示所述PLINQ查询的执行的跨度,所述一对高级标记(119B,119E)包括标识所述查询的执行的开始的查询开始事件标记和标识所述查询的执行的结束的查询结束事件标记;其中所述事件日志生成器(104)被配置成访问所述事件流(11 并将所述事件流转换成包括所述至少一对高级标记(119B,119E)的事件日志(118);其中所述进程监视器(128)被配置成监视所述PLINQ查询(127)的执行期间的处理器利用和线程活动并将所述处理器利用和线程活动转换成指示在所述PLINQ查询(127)的执行期间的所述多个处理元素中的每一个的利用以及指示在所述PLINQ查询的执行期间的所述多个线程(102)的线程状态的覆盖信息(114);其中所述归并组件(106)被配置成将所述事件日志(118)与所述覆盖数据(114)归并成表示与所述事件日志(113)中的事件相关的处理器利用(116)和线程活动(117)的图形数据(121)并将所述图形数据 (121)发送到所述显示器(107);以及用表示指示PLINQ查询(127)的执行的跨度的所述一对高级事件标记(119B,119E)的可视化的进一步图形数据来补充所述图形数据;以及其中所述显示器(107)被配置成接收并显示所述图形数据(121)和所述进一步图形数据,以便可视地指示至少在所述PLINQ查询(127)的执行期间的处理器利用(116)和线程活动(117)中的一个或多个,连同指示PLINQ查询(127)的执行的跨度的所述一对高级事件标记(119B,119E)的可视化。
全文摘要
本发明延及用于使用用户可见事件来指示并行操作的方法、系统和计算机程序产品。事件标记可被用来指示执行的抽象的外层以及展示并行处理系统(包括提供数据并行性的系统)的内部细节。事件标记可被用来示出各种执行特性,包括用于指示执行程序(例如,查询)的开始和结束的更高级标记。在执行程序(查询)内部,各单独的分叉/联合操作可以用标记的各子级来指示以展示它们的操作。执行引擎所作出的附加决定,如在各元素最初生产时、在各查询重叠或嵌套时、在查询被取消时、在查询转成串行操作时、在需要提早归并或重新划分时,也可被展示。
文档编号G06F3/048GK102289347SQ20111017081
公开日2011年12月21日 申请日期2011年6月14日 优先权日2010年6月15日
发明者E·G·埃塞, H·S·伊尔蒂兹, H·沙菲, I·奥斯特罗夫斯基, P·纳格帕尔, W·T·科尔伯恩 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1