在集群处理网络中进行调试的制作方法

文档序号:7979946阅读:189来源:国知局
专利名称:在集群处理网络中进行调试的制作方法
技术领域
本发明涉及调试,尤其涉及集群处理网络中的调试。
背景技术
集群计算通常使用可一起形成单个集群计算机的一群链接的计算机。集群计算机的各计算组件通常使用诸如快速局部总线、快速局域网、刀锋网络等计算机网络或甚至跨因特网来彼此连接。集群通常被部署来改进性能和可用性以超过单个计算机,同时在同等的速度和可用性方面通常比单个计算机更经济。集群计算机可以接收来自用户的作业,并且这些作业可被分成多个任务以及用于这些任务的进程,这些进程被跨多个计算节点来分配。计算节点可以是可接受来自作业的许多进程的单个计算机、服务器、或处理器。或者,每一计算机或服务器可以执行来自作业的一个进程。然而,在集群处理系统上的作业意外崩溃或终止时,用户可接收到总体作业已失败的信息,但该用户不会接收到与该作业为什么失败有关的任何其他信息。

发明内容
提供本发明内容以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。尽管在上文描述了现有技术的某些缺点,但所要求保护的主题不限于解决现有技术的所描述缺点中的任何缺点或全部缺点的实现。描述了用于在集群处理网络中进行调试的各个示例。一示例系统包括用于分派作为集群作业的一部分的进程以供执行的调度器。此外,计算节点可被用来执行由调度器分派给该计算节点的进程。可响应于计算节点上的进程的未经处理的挂起事件来激活调度器。另外,调试器可以发送关于该未经处理的挂起事件的通知消息。作业监视器可以接收来自调试器的发生了未经处理的挂起事件的通知消息。该通知可经由作业监视器显示给用户。提供了用于调试集群处理网络中的集群作业中的进程的示例方法。该方法可包括使用调度器分派进程以在计算节点上执行。作为集群作业的一部分的该进程可以在该计算节点上执行。另一操作是响应于该进程的未经处理的挂起事件来在计算节点上激活调度器。可以将发生了未经处理的挂起事件的通知从调度器发送给与头节点相关联的作业监视
ο


图IA是示出用于在集群处理网络中进行调试的系统的示例的框图。图IB是示出用于使用远程节点在集群处理网络中进行调试的系统的示例的框图。图2是示出用于对集群处理网络中的集群作业中的进程进行调试的示例方法的流程图。图3是示出用于在集群处理网络中进行即时调试的方法的示例的流程图。图4是示出用于在集群处理网络中进行即时调试的更详细方法的示例的流程图。
具体实施例方式现在将参考附图中所示出的示例性实施例,并使用特定语言来对其进行描述。不过,需要理解的是,并无意由此作出本发明范围上的限制。相关技术领域的且拥有本公开内容的技术人员将想到的对此处所示出的特征的更改和进一步的修改以及对本文所示的各实施例的其他应用,都应该被视为在本发明的范围内。本发明提供用于执行集群作业的计算机集群上的进程的调试能力。例如,可以向处理集群中的计算节点上的调试器提供即时(JIT)调试,其中一进程崩溃、终止、或到达用户设置的调试点。本发明可以通知用户计算节点上发生了崩溃。另外,可以提供各机制以允许用户分析该故障。如果需要,该进程的存储器状态可被转储或写入到文件以供离线分析或事后探索。计算节点或远程节点上的进程可被保持在崩溃状态,使得符号调试器可被附加到该进程以分析当前进程状态。也可发生对计算节点的集群上的各进程的调试。图IA示出用于在集群处理网络上进行调试的系统。该系统可包括用于管理在集群处理网络上处理的集群作业108(即,作业)的头节点102。可以使用调度器106来分派作为集群作业的一部分的进程以供执行。计算节点110可被用来执行由调度器分派给该计算节点的进程。计算节点可以是服务器、工作站、或与头节点分开的另一计算节点。该计算节点可包括硬件处理器设备130、 硬件存储器设备132、启用各设备与各组件之间的通信的本地通信总线134、以及连网设备 136。尽管出于简明目的只示出了一个计算节点,但集群处理网络通常包含向头节点102报告的多个计算节点。可响应于在计算节点110上执行的进程中的未经处理的挂起事件来在该计算节点上激活调试器114。未经处理的挂起事件可包括未经处理的异常事件、运行时致命错误、 显式地出现的异常、以及调试中断类型的事件。未经处理的异常事件是不具有适用的异常处理程序来弥补进程或编程框架(例如,NET框架)中的错误的错误事件,并且未经处理的错误可由系统默认处理程序来捕获。调试器114可以是被配置成在一进程崩溃时接收来自该进程的句柄的即时(JIT) 调试器,并且所启动的调试器类型可由操作系统数据存储120来定义。数据存储的示例可以是微软Windows操作系统中的注册表。另外,符号调试器可被附加到该进程并且通过显示源代码、变量状态、程序状态、目标代码、和/或其他相关的进程调试信息来启动对该程序的调试。然而,直至从最终用户接收到指令,JIT调试器可打开该进程的句柄并等待该进程由符号调试器来调试。即时调试器是在检测到错误或断点时启动的调试器,而非使该调试器在调试该进程的整个时间中运行。尽管在本说明书中使用了更一般的术语“调试器”, 因为在未经处理的挂起事件时可以激活各种类型的调试器,但在本说明书中术语JIT调试器将被更频繁地使用,以区分处理未经处理的挂起事件的调试器与用户可以用来进行应用程序调试的符号调试器。如所讨论的,JIT调试器可被配置成向头节点102发送关于未经处理的挂起事件的通知或消息。对于本机代码和托管代码两者,可以调试以下示例类型的错误或中断调用 运行时致命错误 未经处理的异常(本机代码和托管代码两者中)· Environment: :FailFast 方法或RaiseFailFastException 函数(微软 Windows 操作环境中)· DebugBreak ()函数(微软 Windows)· Debugger:Launch· Debugger:Break作业监视器104可以接收来自JIT调试器的发生了未经处理的挂起事件的通知或消息。作业监视器可以位于头节点中,或者作业监视器可以在与头节点进行通信的分开的计算设备上执行。JIT调试器发送给作业监视器的消息可以提供与集群作业相关联的至少一个进程正等待开始调试的通知。该消息信息允许作业所有者或最终用户采取动作并分析进程终止或到达调试点的原因。或者,作业监视器可以在远程节点150或能够执行该作业监视器的不是计算机器的一部分的计算设备上执行,但最终用户103能够访问该远程节点,如同IB所示。在另一示例中,远程节点可以是移动设备,如蜂窝电话、无线计算平板、或与该集群中的JIT调试器进行连网通信的其他移动设备。另外,用户能够使用web应用和web服务器组合来访问远程节点或头节点上的作业监视信息。作业监视器也能够监视整个作业的状态。如果一进程或甚至一个以上进程失败, 则可以向用户通知作业失败。也可使用通过作业监视器提供给用户的信息来检查作业失败的原因。所管理的作业也可以通过程序例如由符号调试器或作业监视器来查询,以呈现该作业的已崩溃进程的列表。结果,已崩溃进程的列表可通过符号调试器或作业监视器来显示给用户。返回图1A,用户界面105可以与作业监视器104—起提供以显示来自计算节点上的集群作业的进程112正等待来自符号调试器的附加操作的通知。符号调试器可以控制该进程并读取或显示进程存储器。符号调试器的用户界面(UI)通常不由JIT调试器激活,但用户可以按需启动该附加。该用户界面可以使用界面控件向最终用户103或系统管理员通知正在等待符号调试器的进程,界面控件是列表视图、弹出式窗口、表格格式、彩色突出显示、或另一个用户界面控件。例如,作业监视器可以显示作业的进程列表并且具有示出一进程(即,集群作业中的)正在等待符号调试器所进行的附加操作的状态栏。该用户界面还可以显示与计算节点上的JIT调试器的激活有关的通知。作业监视器可以向作为作业所有者的用户发送消息、电子邮件、文本或即时消息 (IM)或另一电子通信。例如,电子邮件可以通知作业所有者一进程(包括集群作业和任务信息)正在等待来自符号调试器的附加操作。也可向为作业所有者管理该集群作业的其他人发送电子消息。例如,可以向第三方发送一进程(包括集群作业和任务信息)正在等待来自符号调试器的附加操作的消息或电子邮件。通知也可以使用系统托盘类型的通知来发生。例如,在作业监视器或作业管理器被最小化在操作系统用户界面中时,失败的作业可以作为系统托盘中的通知、系统弹出式
5窗口、或使用另一系统通知用户界面来显现。JIT调试器可以访问环境变量124以确定在接收到未经处理的挂起事件时要采取的动作。这些环境变量可以与操作系统作业116—起存储。或者,环境变量可以存储在操作系统122中或存储在计算节点110上的另一位置中。JIT调试器可以直接读取被调试的进程的进程环境块(PEB)来以直接的方式标识环境变量对。从进程环境块(PEB)读取环境变量可以避免来自JIT调试器的、用于确定作业的属性的、对服务的额外函数调用。结果, JIT调试器可以采取来自集群作业中的各进程的环境的指示。因为JIT调试器可以是操作系统作业的一部分,所以JIT调试器还可以读取可包括集群作业所关联的作业标识符的进程的用户上下文环境。在经由操作系统122接收到未经处理的挂起事件时,环境变量可以确定JIT调试器的动作。例如,环境变量可定义要由JIT调试器执行的动作,如写入调试文件转储118、等待对已崩溃进程的附加操作、或等待对到达调试断点的进程的附加操作。环境变量还可以存储由目录路径、URL(统一资源定位符)和/或文件名所定义的用于写入崩溃转储的预定义位置。在预定义时间限度之后,环境变量还可确定JIT调试器等待符号调试器附加操作是否超时。可以提供JIT调试器超时以避免使用该进程在延长时间段期间消费计算设备上的资源。表1示出可在调度一作业或进程时设置的环境变量的示例表 权利要求
1.一种用于在集群处理网络中进行调试的系统,包括调度器,用于分派作为集群作业的一部分的进程以供执行;计算节点,用于执行由所述调度器分派给所述计算节点的进程;调试器,用于响应于所述计算节点上的进程的未经处理的挂起事件来激活,其中所述调试器发送与所述未经处理的挂起事件有关的通知消息;以及作业监视器,用于接收来自所述调试器的发生了未经处理的挂起事件的通知消息。
2.如权利要求1所述的系统,其特征在于,所述调试器向所述作业监视器通知作为集群作业的一部分的所述进程正等待调试开始。
3.如权利要求1所述的系统,其特征在于,还包括所述作业监视器中的用于显示所述计算节点上的进程正等待调试器的附加的通知的用户界面。
4.如权利要求1所述的系统,其特征在于,还包括所述作业监视器中的用于显示调试器在所述计算节点上的激活的通知的用户界面。
5.如权利要求1所述的系统,其特征在于,所述调试器访问环境变量以确定在接收到所述未经处理的挂起事件时要采取的动作。
6.如权利要求1所述的系统,其特征在于,所述调试器打开所述进程的句柄并等待所述进程被调试。
7.如权利要求1所述的系统,其特征在于,还包括用于管理在所述集群处理网络上处理的集群作业的头节点,其中所述头节点包括所述作业监视器。
8.一种用于对集群处理网络中的集群作业中的进程进行调试的方法,包括使用调度器来分派进程以在计算节点上执行;在所述计算节点上执行作为所述集群作业的一部分的所述进程;响应于所述进程的未经处理的挂起事件来在所述计算节点上激活调度器;以及从所述调试器向作业监视器发送发生了未经处理的挂起事件的通知。
9.如权利要求8所述的方法,其特征在于,还包括向所述作业监视器通知所述集群作业的一进程正等待调试开始。
10.如权利要求8所述的方法,其特征在于,还包括使用所述作业监视器中的用户界面来显示与所述调试器的激活有关的通知。全文摘要
本发明描述了用于在集群处理网络中进行调试的技术。调度器可以分派作为集群作业的一部分的进程以供执行。此外,计算节点可被用来执行由调度器分派给该计算节点的进程。可响应于计算节点上的进程中的未经处理的挂起事件来激活调度器。另外,调试器可以发送关于该未经处理的挂起事件的通知消息。作业监视器可以接收来自调试器的发生了未经处理的挂起事件的通知。该通知可经由作业监视器显示给用户。
文档编号H04L12/58GK102546460SQ201110371510
公开日2012年7月4日 申请日期2011年11月11日 优先权日2010年11月12日
发明者A·帕那帕卡姆, D·莫斯, P·梅比 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1