CN104969191A - 针对性能和正确性使多线程软件程序的已记录执行可视化 - Google Patents

针对性能和正确性使多线程软件程序的已记录执行可视化 Download PDF

Info

Publication number
CN104969191A
CN104969191A CN201380072905.3A CN201380072905A CN104969191A CN 104969191 A CN104969191 A CN 104969191A CN 201380072905 A CN201380072905 A CN 201380072905A CN 104969191 A CN104969191 A CN 104969191A
Authority
CN
China
Prior art keywords
execution
display
animated graphics
instruction
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380072905.3A
Other languages
English (en)
Other versions
CN104969191B (zh
Inventor
J.E.戈特施利希
G.A.波坎
C.L.佩雷拉
K.丹纳
胡世亮
R.卡萨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104969191A publication Critical patent/CN104969191A/zh
Application granted granted Critical
Publication of CN104969191B publication Critical patent/CN104969191B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种以图形方式使多线程软件程序的已记录执行的性能和/或正确性特征可视化的系统。该系统可处理在多线程程序的执行期间记录的基于块的信息,准备记录信息的图形可视化,并且以动画方式在显示器上显示图形可视化。该系统可允许观察者交互式地控制动画图像可视化的显示。

Description

针对性能和正确性使多线程软件程序的已记录执行可视化
背景技术
随着多核处理器技术的到来,并行编程已变得无所不在。然而,由于并行程序的不确定性,具有相同输入的相同的并行程序的多次执行可以产生不同的结果。
存储器竞争记录(MRR)技术使得能够记录多线程程序的执行,从而记录存储器访问交织(interleave)的顺序。可以出于调试的目的重放该记录。当重放时,该记录产生与由原始执行获得的那些结果相同的结果。尽管点到点MRR技术在单独共享存储器指令层级跟踪存储器访问交织,但基于块的技术通过观察原子地执行(例如,在没有与冲突远程存储器访问交织的情况下)的存储器操作的次数来跟踪存储器访问交织。
附图说明
在附图中以示例的方式而非以限制的方式图示出本文所述的概念。为了图示的简单和明了起见,图中所示的元件不一定按比例描绘。在认为适当的情况下,在图之中已重复附图标记以指示相应或类似的元件。
图1是用于使多线程软件程序的执行的性能和/或正确性特征可视化的系统的至少一个实施例的简化框图;
图2是图1的可视化系统的至少一个实施例的简化框图;
图3是图2的动态重放模块的至少一个实施例的简化框图;
图4是关于多线程软件程序的执行的日志文件的简化图示;
图5是用于使多线程软件程序的已记录执行的性能和/或正确性特征可视化的方法的至少一个实施例的简化流程图;
图6是用于使记录的软件程序执行数据准备好用于可视化的方法的至少一个实施例的简化流程图;
图7是用于控制多线程软件程序的已记录执行的可视化的方法的至少一个实施例的简化流程图;
图8是用于以图形方式呈现多线程软件程序的已记录执行的可视化的方法的至少一个实施例的简化流程图;
图9是多线程软件程序的已记录执行的图形可视化的至少一个实施例的简化图示;
图10是图9的图形可视化的“缩小”版本的简化图示;以及
图11是图9的图形可视化的“放大”版本的简化图示。
具体实施方式
虽然本公开的概念易受各种修改和替换形式的影响,但在图中已以示例的方式示出了其特定实施例并将在本文中详细地描述。然而,应理解的是不存在使本公开的概念局限于所公开的特定形式的意图,相反地,意图是涵盖符合本公开和所附权利要求的所有修改、等价物以及替换。
本说明书中的对“一个实施例”、“实施例”、“说明性实施例”等的参考指示所述实施例可包括特定特征、结构或特性,但每个实施例可包括该特定特征、结构或特性也可不一定如此。此外,此类短语不一定参考相同的实施例。此外,当结合实施例来描述特定特征、结构或特性时,认为与无论是否明确地描述的其他实施例相结合地实现此类特征、结构或特性在本领域的技术人员的认知内。
在一些情况下,可用硬件、固件、软件或其任何组合来实现所公开的实施例。还可将所公开的实施例实现为由临时或非临时机器可读(例如,计算机可读)存储介质承载或存储在其上面的指令,该指令可被一个或多个处理器读取和执行。可将机器可读存储介质体现为用于以机器(例如,易失性或非易失性存储器、介质磁盘或其他介质设备)可读的形式存储或传输信息的任何存储设备、机制或其他物理结构。
在图中,可以特定布置和/或排序示出某些结构或方法特征。然而,应认识到的是可不要求此类特定布置和/或排序。相反地,在一些实施例中,可以与说明性图中所示不同的方式和/或顺序来布置此类特征。另外,特定图中的结构或方法特征的包括并不意图暗示在所有实施例中都要求此类特征,并且在一些实施例中,可不包括或者可将其与其他特征组合。
现在参考图1,在一些实施例中,一种用于使多线程软件程序126的执行可视化的系统124基于在软件程序126的执行期间由基于块的存储器竞争记录器118生成的日志文件130来准备指令跟踪(instruction traces)132,并在显示器120上向诸如程序员或软件分析员之类的观察者显示已记录执行的动画图形表示134,如下面更详细地讨论的。动画图形表示134包括被布置成突出显示软件程序126的已记录执行的性能和正确性特征的视觉特征,诸如形状和色彩。如本文所使用的,术语“突出显示”意指可以用于在观察者的眼中引起对该性能和正确性特征的注意的视觉特征的任何布置或组合。例如,在一些实施例中,已记录执行的多个线程的视觉特征全部在相同的上下文中显示。在使用中,如下面更详细地讨论的,可视化系统124响应于由例如一个或多个用户控制机构122完成(made)的来自观察者的输入而交互式地调整动画图形表示134的显示。例如,在一些实施例中,系统124提供交互式控制机构,其允许观察者增加或减小放大倍率(例如,“放大”或“缩小”),增加或减小动画速度(例如,“快进”或“倒带”),或者旋转图形表示134。通过在相同的上下文中以图形方式描绘所有同时地执行的线程的执行,可视化系统124使得能够以可以帮助软件开发者识别仅仅从执行的文本表示将难以或不可能识别的性能和/或正确性特征的方式来使多个线程之间的交互可视化。
可将计算设备100体现为用于向观察者显示动画图形信息并执行本文所述功能的任何类型的计算设备。虽然在图1中示出了一个计算设备,但应认识到的是在其它实施例中,可在多个计算设备100中体现系统124。说明性计算设备100包括处理器110、存储器112、输入/输出子系统114、数据存储设备116、存储器竞争记录器118、显示器120、用户控制机构122、可视化系统124以及软件程序126。当然,在其它实施例中,计算设备100可包括其它或附加部件,诸如一般地在计算机中发现的那些(例如,各种输入/输出设备)。另外,在一些实施例中,说明性部件中的一个或多个可被并入到另一部件中或者以其他方式来自其一部分。例如,在一些实施例中,可将存储器112或其各部分并入到处理器110中。
可将处理器110体现为当前已知或者未来开发且能够执行本文所述功能的任何类型的处理器。例如,可将处理器体现为(一个或多个)单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,可将存储器112体现为当前已知或未来开发且能够执行本文所述功能的任何类型的易失性或非易失性存储器或数据储存器。在操作中,存储器112可存储在系统124的操作期间使用的各种数据和软件,诸如操作系统、应用程序、程序、库以及驱动程序。存储器112经由I/O子系统114被通信耦合到处理器110,可将其体现为电路和/或部件以促进与处理器110、存储器112以及计算设备100的其它部件的输入/输出操作。例如,I/O子系统114可被体现为或者以其他方式包括存储器控制器集线器、输入/输出控制机构集线器、固件设备、通信链路(即,点到点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或其它部件和子系统以促进输入/输出操作。在一些实施例中,I/O子系统114可形成芯片上系统(SoC)的一部分,并且连同处理器110、存储器112以及计算设备100的其它部件一起并入在单个集成电路芯片上。
可将数据储存器116体现为被配置成用于数据的短期或长期存储的任何类型的一个或多个设备,例如,存储器设备和电路、记忆卡、硬盘驱动器、固态驱动器或其他数据存储设备。在说明性实施例中,可视化系统124和/或存储器竞争记录器118可将程序执行数据128,包括MRR日志文件130、指令跟踪132、图形表示134、其各部分和/或其它信息保持在数据储存器116中。如下面更详细地讨论的,可使用日志文件130和指令跟踪132来创建图形表示134。可将程序执行数据128的各部分体现为能够在显示器120上显示的任何类型的数字数据。例如,可将程序执行数据128的各部分体现为二进制码、机器或组件级代码、文本、图形和/或其它类型的内容。可用数字文件、阵列、数据库、表格和/或其它适当数据结构来存储程序执行数据128的各部分。
可将存储器竞争记录器118体现为用于以基于块的方式来记录多线程软件程序的执行的任何适当类型的系统。例如,可将存储器竞争记录器118体现为硬件或软件系统,例如在处理器110的架构中实现的硬件系统。存储器竞争记录器118记录多线程软件程序126的执行以用于稍后的确定性重放。存储器竞争记录器118被配置成使得当重放已记录执行时,以与在原始执行期间将其记录的相同方式来将其再现。为此,存储器竞争记录器118记录跨线程的存储器访问交织,使得在重放期间,可以以与在原始执行中相同的方式来使那些线程重新同步。存储器竞争记录器118记录存储器访问交织的顺序。
如上所述,存储器竞争记录器118通过观察在没有冲突共享存储器相关性的介入的情况下能够执行的存储器操作的次数而使用基于块的方法来跟踪存储器访问交织。“块”表示隔离地执行的指令块;亦即没有与来自另一线程的冲突存储器访问的任何交织。换言之,块捕捉在引起多个线程之间的冲突的相邻高速缓存相干请求之间发生的共享存储器访问。共享存储器指的是可以被不同处理器或处理器核(例如,在多核处理器中)访问的存储器(例如,随机存取存储器或RAM)。共享存储器系统常常涉及到高速缓冲存储器的使用。高速缓存相干指的是每当用可被其它处理器或核使用的信息来更新高速缓存中的一个时更新被所有处理器或处理器核使用的高速缓冲存储器的需要。因此,如果例如处理器需要访问存储在共享存储器中的信息但必须等待用被另一处理器写入到共享存储器的数据来更新其高速缓存,则可能发生“冲突”或“相关性”。在例如Pokam等人在2009年12月12-16日计算机协会(Association of Computing Machinery) (ACM) MICRO '09中提出的Architecting a Chunk-based Memory Race Recorder in Modern CMPs中可以找到基于块的存储器竞争记录的进一步讨论。
可将计算设备100的显示器120体现为可在其上面向观察者显示信息的任何一个或多个显示屏。显示器可被体现为或者以其他方式使用任何适当的显示技术,包括例如交互式显示器(例如,触摸屏)、液晶显示器(LCD)、发光二极管(LED)显示器、阴极射线管(CRT)显示器、等离子体显示器和/或当前已知或未来开发的其它显示技术。虽然在图1中仅图示出单个显示器120,但应认识到的是计算设备100可包括可在其上面相互同时地或连续地显示相同或不同内容的多个显示器或显示屏。
可将用户控制机构122体现为可以被观察者激活例如以调整图形表示134的显示的任何一个或多个物理或虚拟控制机构。可将用户机构122体现为当前已知或未来开发的任何适当的用户控制技术,包括例如物理或虚拟(例如,触摸屏)键、键盘或小键盘、鼠标、物理或虚拟按钮、开关、滑块、拨号盘等以及诸如语音或手势激活控制机构之类的非触觉控制机构。
可将软件程序126体现为任何类型的多线程或“并行”机器可执行软件程序,其执行可以被存储器竞争记录器118记录。术语“多线程”一般地指的是使用允许多个线程例如在不同处理器或核上独立地执行的编程技术实现的软件程序,其中,“线程”指的是编程指令的小序列,并且不同的线程可以访问共享存储器,无论所使用的同步类型如何(例如,锁、交易存储器或某个其它同步技术)。例如,可视化系统124可以根据所使用的同步类型而使共享存储器相关性冲突和/或同步竞争可视化。在Gottschlich等人在2012年9月19-23日计算机协会(Association of Computing Machinery)(ACM) PACT' 12中提出的Visualizing Transactional Memory中描述了用于使交易存储器可视化的系统的示例。
现在参考图2,可视化系统124的实施例200包括解析器模块210和动态重放模块212。可将解析器模块210和动态重放模块212每个被体现为例如机器可执行指令、模块、例程、逻辑单元或硬件单元或设备。解析器模块210读取MRR日志文件130并从那里提取关于软件程序126的原始执行的信息,例如由存储器竞争记录器118记录的执行。
此类信息可包括例如每个块中的程序指令的数目和各块跨所有线程的排序。如图4中所示,日志文件130可包括共享存储器按照相关性在软件程序126的原始执行期间发生的顺序将其排序。例如,由于基于块的存储器竞争记录,可针对每个线程创建日志文件130。每个日志文件指示在其对应线程中执行的块的执行顺序,并且包括或参考指令指针,其指示在软件程序126的原始、已记录执行期间的所有块跨所有线程的实际执行顺序。来自日志文件130的此块排序信息被用来在显示动画图形表示134时保持块的原始执行顺序。由于日志文件130通常是二进制文件,所以解析器模块210由此创建指令跟踪132,其本质上是从日志文件130提取的信息的人类可读表示。
指令跟踪132被用作到动态重放模块212的输入。动态重放模块212与显示器120和用户控制机构122对接以创建并交互式地向观察者呈现动画图形表示134。现在参考图3,可将动态重放模块212体现为许多机器可执行指令、模块、例程、逻辑单元或硬件单元或设备,包括实时控制器模块310、指令模拟模块312、图形建模器314以及用户输入控制器316。图形建模器314最初创建且其后(例如,离线)响应于来自观察者的请求而重放图形表示134。
实时控制器310基于其关联可视化参数340来控制图形表示134的动画显示。可视化参数340可包括例如回放(playback)方向、速率、放大倍率和/或取向。也就是说,不是立刻观看所有程序执行数据,实时控制器310允许以原始执行的速度或速率“实时地”“回放”已记录执行。另外,实时控制器310可以调整其重放原始程序执行的方向(例如,向前或向后)、放大倍率、取向(例如,旋转)和/或速率或速度,例如,以允许观察者观察随着其打开而发生的事件、减慢回放速度、更多地注意感兴趣区域或者加速回放以跳过不相干或不那么重要的区域。同样地,实时控制器310与用户输入控制器316对接以针对动画图形表示134的呈现的改变而处理观察者的请求。
实时控制器310与指令模拟模块312对接,以控制与在已记录执行期间执行的指令相对应的文本的显示,并且用图形建模器314响应于由用户输入控制器316接收到的输入而控制图形表示314的显示。用户输入控制器316检测用户控制机构122的激活或去激活,并根据需要将那些用户动作转换成可以由实时控制器310和图形建模器314执行的指令。例如,如果用户输入控制器316检测到观察者已经在显示器120上敲击“+”图形控制机构,则用户输入控制器316可命令实时控制器310增加回放的速度。同样地,如果用户输入控制器316检测到用户已敲击放大镜图标或完成特定手势(例如,将拇指和食指相互远离地移动),则用户输入控制器316可命令图形建模器314增加图形表示134的放大倍率。
可将图形建模器314体现为动画逻辑模块320和图形再现模块322。动画逻辑模块320控制呈现图形表示134的视觉特征的速率(例如,刷新速率),以提供图形表示134的动画。例如,在一些实施例中,刷新速率可在每秒约50帧或其它适当速率的范围内以便以实时地模拟原始执行的方式来呈现图形表示134。图形再现模块322最初基于由指令跟踪132提供的文本信息来开发图形表示134,并且根据可由用户输入控制器316不时地调整或更新的可视化参数来显示图形表示134。图形再现模块322可应用例如多边形再现技术和/或其它适当技术来在显示器120上显示图形表示134。
多线程软件程序126的原始、已记录执行的图形表示134被存储在诸如阵列、容器、表格、散列表或其组合或多个之类的数据结构中。图形表示134包括关于在原始执行期间执行的线程330、由每个线程330执行的块332和其被执行的顺序、与每个块332相关联的机器可执行指令334、与每个指令334相关联的执行时间336(其可以是绝对值或相对值)、与每个线程330、块332以及指令334相关联的视觉特征338以及与图形表示134相关联的可视化参数340的数据。视觉特征338可包括例如与不同线程330相关联的不同色彩。视觉特征338还可包括例如图形,诸如形状,其与每个块332相关联。例如,针对给定块332,可用块332中的指令334的数目和/或用于块332中的所有指令334的总执行时间来定义视觉特征338。例如,在图9-11的说明性可视化中,视觉特征338包括矩形条,其中每个条的垂直高度是恒定的(例如,使得可以在视觉上看到该条,无论角度或放大倍率如何)。在其它实施例中,条的垂直高度可以是可变的。例如,可由块332中的指令的数目或基于程序执行的某个其它动态签名来定义垂直高度。由块332中的指令334的总执行时间来定义每个条的水平长度。并且,在图9-11中,用不同的色彩来显示与不同线程相关联的块,与相同的线程相关联的所有块用相同的色彩显示。可视化参数340可包括关于用于图形表示134的重放速率和时钟时间以及已记录程序执行的总尺寸(其可被用来对可视化的尺寸进行规格化)和/或如上所述的用户指定参数的数据。
现在参考图5,示出了可被实现为可执行指令、模块或例程并由计算设备100;例如由可视化系统124执行的方法500。预先地,在方框510处,与存储器竞争记录器118相结合地执行多线程软件程序126以生成日志文件130。如方框510的短划线所指示的,在一些实施例中,此过程可以在可视化系统124外部完成。在方框512处通过解析日志文件130来创建指令跟踪132。在方框514处,基于指令跟踪132来创建软件程序执行的图形可视化(例如,图形表示134)。在方框516处,计算设备100确定是否已接收到要重放该可视化的请求(例如,通过用户输入控制器316)。如果没有,则计算设备100结束或等待此类请求。如果已经接收到请求,则计算设备100前进至方框518,在那里确定可视化参数340(例如,通过访问图形表示134和/或通过用户输入)并在显示器120上重放该可视化。在方框520处,在仍重放该可视化的同时,计算设备100确定是否已接收到新的或已改变可视化参数(例如,通过用户输入控制器316)。如果没有,则计算设备100继续使用当前可视化参数来重放该可视化,并且继续等待新的或已改变参数。如果已接收到新的或已改变可视化参数,则该方法前进至方框522,在该处计算设备100基于在方框520处获得的新的或已改变可视化参数来修改该可视化的重放,并且使用新的或已改变参数来继续重放该可视化,直至到达该可视化的结尾或者观察者关闭或接收该重放为止。
现在参考图6,示出了被实现为例如可执行指令、模块、例程、逻辑单元或硬件单元或设备并由计算设备100;例如由解析器模块210执行的方法600。在方框610处,计算设备100对活动线程跟踪器进行初始化。可将该活动线程跟踪器体现为例如指针或变量,其值随着活动线程改变而改变。该活动线程跟踪器保持跟踪与当前块相关联的线程。类似地,当前线程跟踪器保持跟踪与当前正在被读取的指令相关联的线程。例如,如果计算设备100当前正在读取指令跟踪132的开头处的第一指令,则活动线程跟踪器和当前线程跟踪器的值将是相同的。如果计算设备100然后读取跟与第一指令相同的线程相关联的指令,则活动线程跟踪器和当前线程跟踪器的值仍将是相同的。然而,如果第二指令与不同于第一指令的线程相关联,则当前线程跟踪器的值将改变以反映新的线程。
在方框612处,计算设备100从指令跟踪132读取下一指令。在方框612处读取的指令行包括关于可视化系统124需要创建指令的文本和图形模拟的指令的信息,例如指令类型、助记符串、存储器操作和自变量。如果计算设备100已读取指令跟踪132中的最后一个指令(方框614),则在方框616处,计算设备100将用于最后一个块(所述最后一个指令是其一部分)的信息添加到活动线程阵列。活动线程阵列存储程序执行的可视化所需的基于块的信息。如果计算设备100尚未到达文件的结尾处,则在方框618处,计算设备100查看当前读取指令是否与当前活动线程或新线程相关联。为此,计算设备100可将活动线程跟踪器的值与当前线程跟踪器的值相比较。如果当前正在被读取的指令与新线程相关联,则在方框620和622处,计算设备100将当前块(例如,先前读取指令所属的块)添加到活动线程阵列,动态地对新线程所需的线程容器进行尺寸调整,针对新线程将容器初始化并更新活动线程跟踪器以指示该新线程现在是活动线程。线程容器是保持用于所有已执行线程的数据的数据仓库。线程容器的动态尺寸调整允许计算设备100处理各种尺寸的任何数目的线程而事先并不知道该信息。换言之,在一些实施例中,计算设备100在并未提前知道在已记录程序执行中涉及到多少线程或其尺寸的情况下解析指令跟踪132。结果,计算设备100只需读取指令跟踪132一次。
无论当前指令行涉及到新的线程还是与先前读取指令行相同的线程,计算设备100都从方框618或方框622(视情况而定)前进至方框624。在方框624处,计算设备100处理该指令以准备可视化所需的指令信息。在方框626处,计算设备100设定指令类型并基于其指令类型来确定用于指令的模拟执行时间。例如,可将“加载”指令定义为具有如“存储”指令两倍快的执行时间。其它类型的指令可具有相同或类似执行时间。在一些实施例中,使用指令的执行时间来确定视觉特征338的长度尺寸,如上所述。
在方框628处,计算设备100基于从指令跟踪132读取的指令行来设定用于当前指令的指令指针值。在一些实施例中,使用该指令指针值来允许观察者在可视化期间返回参考与指令跟踪132的指令行相关联的实际分解二进制码(例如,在日志文件130中)。这可对调试目的和/或其它原因有用。在方框630处,计算设备基于在指令跟踪132中提供的信息来设定与当前指令相关联的助记符串。例如,虽然日志文件130可包含当前指令的二进制表示,但助记符是例如可在汇编码或源代码中使用的二进制操作数(例如,“存储”、“加载”、“跳转”等)的人类可读等价物。可以通过使用翻译表或标准反汇编程序实用工具来确定该助记符,其常常与安装在计算设备100上的操作系统一起提供。用关于当前指令的所有前述信息,计算设备100前进至向用于当前块的数据仓库或容器中插入指令信息。如上所述,按块来布置可视化所需的前述信息,并且然后将基于块的信息存储在线程阵列中,其充当到可视化过程(例如,动态重放模块212)的输入。在一些实施例中,可将线程阵列存储在图形表示134中或者作为其一部分。
现在参考图7,示出了被实现为例如可执行指令、模块、例程、逻辑单元或硬件单元或设备并由计算设备100;例如由实时控制器310执行的方法700。在方框710处,计算设备100处理用以播放多线程软件程序的先前记录执行的可视化(例如,图形表示134)的请求。此类请求可由观察者通过用户控制机构122中的一个或多个发起并被用户输入控制器316翻译,如上文所讨论的。在一些实施例中,该请求可包括回放速率、回放方向、回放取向和/或如上所述的其它可视化参数。在方框712处,计算设备100确定可视化的回放当前是否被暂停。如果该回放被暂停,则在方框714处,计算设备100确定可视化是否已经到达程序执行回放的结尾。换言之,计算设备100确定是否正在显示用于在已记录执行期间执行的最后一个指令的视觉特征338。如果正在显示最后一个指令,则在方框716处,计算设备100在方框716处重置模拟时钟值和最后时钟值。模拟时钟值保持跟踪可视化的总体时钟时间;亦即,自从重放开始所经历的时间。该最后时钟值保持跟踪执行流中的当前显示点的时钟值;例如,在原始模拟期间执行指令的时钟时间。保持跟踪并响应于观察者输入而调整这些时钟值允许系统124为观察者给出在程序执行期间已经历的准确时间感知,无论调用计算设备100的次数如何。如果尚未到达执行回放的结尾,则在方框718处,计算自从最后一个可视化请求(例如,最后的观察者输入)以来的经历时间。在方框720处,计算设备100确定该请求是用于正向还是反向回放。在方框722和724处,计算设备100相应地调整模拟时钟(例如,增加或减小时钟时间)。基于自从最后一个可视化请求以来已经历的时间量和时钟速率来调整模拟时钟。该时钟速率对应于模拟的速度,其可由观察者如上所述地调整。例如,在一些实施例中,可按照10x(当前时钟速率的十倍)的数量级来增加或减小时钟速率。通过前述内容,计算设备100旨在在可视化期间显示时钟时间的准确描述,无论可视化是暂停、前进还是后退,并且无论所选回放速率或放大倍率如何。
现在转到图8,示出了可被实现为例如可执行指令、模块、例程、逻辑单元或硬件单元或设备并由计算设备100;例如图形建模器314和/或实时控制器310执行的方法800。在方框810处,计算设备100确定图形再现过程是否已经被初始化。如果没有,则在方框812处将该整个可视化(例如,整个已记录程序执行的图形表示134)的尺寸规格化,并针对单独指令确定多边形尺寸。将可视化尺寸规格化允许系统124显示可视化,无论已记录软件程序126的总执行时间如何。也就是说,可视化例程计算视觉特征338的总尺寸(例如,矩形的长度),并在总执行时间范围内将其均匀地划分,使得系统124在被请求的情况下可以始终显示整个可视化,无论程序执行有多长或多短。在一些实施例中,可将这些值存储在图形表示134中或者作为其一部分。在方框814处,计算设备100针对每个线程执行显示操作,例如,在显示器上绘出采用分配给各线程的色彩的适用多边形。为此,计算设备100在方框816处结合每个块来计算要显示的时钟值,并且在方框818处确定该时钟值是否小于用以显示所有块或其一部分的模拟时钟时间。换言之,计算设备100在方框820处确定其是否可以显示所有当前块或其一部分。如果不是,则不显示该块。然而,如果是这样,则在方框820处,根据上文所讨论的可视化参数,计算设备100显示其在给定可用时钟时间的情况下能够显示的所有块或部分。例如,如果当前块中的所有指令具有小于当前模拟时钟时间的时钟值,则将显示用于整个块的视觉特征338。然而,如果此类时钟时间大于模拟时钟时间,则计算设备100每次一个指令地显示视觉特征338直至到达模拟时钟时间为止。在方框822处,计算设备100根据需要针对上溢或下溢而使模拟时钟重新对准。当向前回放执行超过执行中的最后一个指令时到达上溢,而当向后回放执行超过执行中的第一指令时到达下溢。
现在参考图9-11,示出了例如可在显示器120上显示的多线程软件程序的已记录执行的说明性可视化。
可视化900示出文本指令模拟910,其包括上文所讨论的指令信息的人类可读版本。在文本指令模拟910中,突出显示指令行918(例如,以不同于文本的其余部分的色彩呈现)以指示其是当前正在模拟中执行的指令。视觉特征912、914以及916被体现为一系列矩形图形,其中,特征912、914以及916中的每一个的色彩指示在其中执行指令的线程。例如,可以以绿色来呈现特征912,指示与线程#1的关联,同时可以以蓝色来呈现特征914,指示与线程#2的关联,并且可以以黄色来呈现特征916,指示与线程#3的关联。在一些实施例中,由相应线程所执行的指令的数目来定义特征912、914、916中的每一个的垂直高度。因此,例如,垂直较高特征912、914、916可表示比垂直较矮视觉特征912 914、916更大数目的指令。在其它实施例中,特征912、914、916的垂直高度可基于其它因素而是可变的,或者可保持恒定。特征912、914、916中的每一个的水平长度表示由各线程执行的指令的总执行时间。每个特征912、914、916内的实心区域的存在指示没有具有冲突相关性的任何交织存储器访问的情况下的指令执行。视觉特征912、914、916中的每一个内的每个实心区域的尺寸因此指示已在没有任何同步或相干性冲突问题的情况下执行的指令块。同样地,实心区域的较大区块趋于指示已在没有任何共享存储器通信的情况下运行且因此具有较大效率的程序执行部分。特征912、914、916中的实心区域的许多交替、较小区块的面积指示线程之间的共享存储器通信,其可指示那些区域中对于优化的需要。例如,特征914和916的比较指示所显示时间段期间的这两个线程之间的很多共享相关性。因此,可视化900表明不是集中于尝试优化被这些指令调用的实际函数(例如,底层算法),而是程序员应尝试识别用以减少这些线程之间的共享存储器通信的方式,或者找到用以创建不相交(disjoint)共享存储器访问的方式(例如,迫使线程在给定时间点访问共享存储器的单独区域)。换言之,通过在相同的上下文中(例如,在与其在原始程序执行期间发生相同的时间)显示用于所有线程的特征912、914、916,可视化900显示可解决同步竞争问题以改善程序126的执行性能。
图10示出了图9的可视化的“缩小”视图1000的示例,其图示出系统124如何允许观察者回顾并查看整个程序执行并寻找他或她的注意力要集中到的感兴趣区域。在图10中,视觉特征1010、1012和1014分别地对应于不同线程的执行,并且在一些实施例中使用不同的色彩显示。方框1016图示出可以被观察者跨视图1000移动以选择要聚焦或放大以进行更详细研究的视图1000的区域的用户界面控制。视图1000可对识别性能和正确性特征有用,包括共享存储器相关性和同步竞争,如上文所讨论的。图11示出了图10的可视化的方框1016的“放大”或扩大视图1100的示例。视图1100用以单色显示的方框来突出显示共享存储器竞争的区域(例如,区域1112、1114),并且用以不同色彩显示的方框来突出显示相对没有共享存储器竞争的区域(例如,区域1110、1116、1118)。这样,系统124可以帮助观察者快速地看到和选择可视化的特定区域以用于进一步研究。例如,观察者可选择忽视方框1110、1116、1118,而是将方框1112、1114放大。
为了帮助程序员分析程序126的正确性,系统124可以向程序员呈现整个程序执行的可视化(例如,视图1000)或该执行的特定分段部分的可视化(例如,视图1100)。在任一种情况下,程序员可以使用该可视化来识别线程之间的共享存储器访问,如上文所讨论的。如果程序员注意到在程序的特定段期间存在许多块,则程序员可以使用例如上文所述的指令指针信息和/或与程序执行相关联的调试符号来检查与那些块相关联的程序代码部分。程序员然后可确定那些块是否表示线程的故意交织或者该程序在该段中是否缺少特定串行化(其中,串行化可以导致较大的串行化块)。换言之,系统124可以帮助程序员确定是否已经正确地实现预定交织或其缺乏,或者除识别诸如共享存储器相关性冲突和同步竞争之类的性能特征之外是否已经无意中省略了此类编程技术。
示例
下面提供了本文公开的技术的说明性示例。技术的实施例可包括下面描述的示例中的任何一个或多个以及其任何组合。
示例1包括用以在计算设备上以图形方式显示多线程软件程序的执行的性能和正确性特征的可视化系统。该可视化系统包括解析器模块,用以使在多线程软件程序的执行期间记录的程序执行数据准备好用于可视化;以及图形建模器,用以显示程序执行数据的动画图形表示,其中,动画图形表示突出显示性能和正确性特征中的一个或多个。该可视化系统还包括用以交互式地控制显示器上的动画图形表示的显示的控制器模块。
示例2包括示例1的主题,并且其中,所述解析器模块准备指令跟踪,其包括关于在执行期间由多线程软件程序执行的指令和在其上面执行指令的线程的数据。
示例3包括示例1或示例2的主题,并且其中,所述解析器模块从在多线程软件程序的执行期间由基于块的存储器竞争记录系统生成的多个日志文件读取程序执行数据。
示例4包括示例1-3中的任一项的主题,其中,所述解析器模块根据块来布置数据,并且每个块表示在没有与冲突存储器访问交织的情况下由相同的线程执行的多个指令。
示例5包括示例4的主题,并且其中,所述图形建模器显示多个视觉特征,并且每个视觉特征包括表示每个块的色彩,使得使用相同色彩来显示与相同的线程相关联的块。
示例6包括示例5的主题,并且其中,每个块中的每个指令具有执行时间,并且每个视觉特征包括具有由块中的指令的执行时间定义的尺寸的形状。
示例7包括示例6的主题,并且其中,形状的尺寸进一步由块中的指令的数目定义。
示例8包括示例1-7中的任一项的主题,并且其中,所述图形建模器基于程序的总执行时间对动画图形表示的尺寸进行规格化。
示例9包括示例1-8中的任一项的主题,并且其中,所述动画图形表示突出显示在多线程软件程序的执行期间发生的共享存储器相关性冲突。
示例10包括示例1-9中的任一项的主题,并且其中,所述图形建模器存储关于动画图形表示的数据以用于动画图形表示的离线重放。
示例11包括示例10的主题,并且其中,所述控制器模块控制动画图形表示的离线重放。
示例12包括示例1-11中的任一项的主题,并且其中,所述控制器模块从动画图形表示的观察者接收输入,并响应于动画图形表示的显示期间的输入而调整动画图形表示的显示。
示例13包括示例12的主题,并且其中,所述控制器模块响应于动画图形表示的显示期间的观察者输入而增加或减小显示动画图形表示的速度。
示例14包括示例12或示例13的主题,其中,所述控制器模块响应于在动画图形表示的显示期间的观察者输入而改变动画图形表示的显示的放大倍率。
示例15包括示例12-14中的任一项的主题,其中,所述控制器模块响应于在动画图形表示的显示期间的观察者输入而旋转动画图形表示的显示。
示例16包括用于在计算设备上以图形方式使多线程软件程序的执行的性能和正确性特征可视化的方法。该方法包括读取由基于块的存储器竞争记录系统在多线程软件程序的执行期间记录的程序执行数据;使程序执行数据准备好用于图形可视化;显示程序执行数据的动画图形表示,该动画图形表示突出显示性能和正确性特征中的一个或多个;以及响应于一个或多个可视化参数而控制动画图形表示的显示。
示例17包括示例16的主题,并且包括根据块来布置数据,其中,每个块表示在没有与冲突存储器访问交织的情况下由相同的线程执行的多个指令。
示例18包括示例17的主题,并且包括显示关于块的多个视觉特征,其中,每个视觉特征包括表示每个块的色彩,使得使用相同色彩来显示与相同的线程相关联的块。
示例19包括示例18的主题,其中,每个块中的每个指令具有执行时间,并且每个块与许多指令相关联,并且该方法包括将每个视觉特征定义成包括具有由块中的指令的执行时间定义的尺寸的形状。
示例20包括示例16-19中的任一项的主题,并且包括基于程序执行的尺寸来配置动画图形表示的尺寸。
示例21包括示例16-20中的任一项的主题,并且包括在动画图形表示中突出显示在多线程软件程序的执行期间发生的共享存储器相关性冲突。
示例22包括示例16-21中的任一项的主题,并且包括从动画图形表示的观察者接收输入,并响应于动画图形表示的显示期间的输入而调整动画图形表示的显示。
示例23包括计算设备,其包括处理器;以及存储器,在其中存储多个指令,该多个指令在被处理器执行时促使计算设备执行示例16-22中的任一项的方法。
示例24包括一个或多个机器可读存储介质,其包括存储在其上面的多个指令,该指令响应于被执行而导致计算设备执行示例16-11中的任一项的方法。
示例25包括用于在计算设备上以图形方式使多线程软件程序的执行的性能和正确性特征可视化的系统。该系统包括用于读取由基于块的存储器竞争记录系统在多线程软件程序的执行期间记录的程序执行数据的装置;用于使程序执行数据准备好用于图形可视化的装置;用于显示程序执行数据的动画图形表示,该动画图形表示突出显示性能和正确性特征中的一个或多个的装置;以及用于响应于一个或多个可视化参数而控制动画图形表示的显示的装置。
示例26包括用于可视化系统以图形方式使多线程软件程序的原始执行可视化的动态重放模块。该动态重放模块控制在多线程软件程序的原始执行期间记录的程序执行数据的图形表示的显示。该动态重放模块包括图形建模器,其用以将根据可视化参数在显示器上显示与程序执行数据相关联的多个视觉特征以模拟多线程软件程序的原始执行速度。该视觉特征包括多个色彩,其中,每个色彩与在原始执行期间在其上面执行多线程软件程序的指令的不同线程相关联。该动态重放模块还包括控制器模块,其在视觉特征的显示期间将:从显示器的观察者接收对可视化参数的所请求改变;响应于所请求改变,根据该改变来更新可视化参数;以及与图形建模器通信以根据已更新可视化参数来更新视觉特征的显示。
示例27包括示例26的主题,并且其中,所述视觉特征与块相关联,并且每个块表示在没有与冲突存储器访问交织的情况下由相同的线程执行的多个指令。
示例28包括示例27的主题,并且其中,每个块中的每个指令具有执行时间,并且每个视觉特征包括具有由块中的指令的执行时间定义的尺寸的形状。
示例29包括示例28的主题,并且其中,形状的尺寸进一步由块中的指令的数目定义。
示例30包括示例26-29中的任一项的主题,并且其中,所述视觉特征指示在多线程软件程序的原始执行期间发生的共享存储器相关性冲突。
示例31包括示例26-30中的任一项的主题,并且其中,所述控制器模块响应于所请求改变而增加和减小显示视觉特征的速度。
示例32包括示例31的主题,并且其中,所述控制器模块响应于所请求改变而改变视觉特征的显示的放大倍率。
示例33包括一种用于控制在多线程软件程序的原始执行期间记录的程序执行数据的图形表示的显示的方法。该方法包括根据可视化参数在显示器上显示程序执行数据的多个视觉特征以模拟软件程序的原始执行的速度,其中,所述视觉特征包括多个色彩,并且每个色彩与在原始执行期间在其上面执行多线程软件程序的指令的不同线程相关联。该方法还包括在视觉特征的显示期间接收对可视化参数的所请求改变;以及响应于所请求改变,根据该改变来更新可视化参数;以及根据已更新可视化参数来更新视觉特征的显示。
示例34包括示例33的主题,并且包括使每个视觉特征与块相关联,其中,每个块表示在没有与冲突存储器访问交织的情况下由相同的线程执行的多个指令。
示例35包括示例34的主题,并且其中,每个块中的每个指令具有执行时间,并且每个视觉特征包括形状,并且该方法包括基于块中的指令的执行时间来定义形状的尺寸。
示例36包括示例35的主题,并且包括基于块中的指令的数目来定义形状的尺寸。
示例37包括权利要求33-36中的任一项的主题,并且包括响应于所请求改变而增加或减小显示视觉特征的速度。
示例38包括权利要求33-37中的任一项的主题,并且包括响应于所请求改变而改变视觉特征的显示的放大倍率。
示例39包括计算设备,其包括处理器;以及存储器,在其中存储多个指令,该多个指令在被处理器执行时促使计算设备执行示例33-38中的任一项的方法。
示例40包括一个或多个机器可读存储介质,其包括存储在其上面的多个指令,该指令响应于被执行而导致本地计算设备执行示例33-38中的任一项的方法。
示例41包括一种用于控制在多线程软件程序的原始执行期间记录的程序执行数据的图形表示的显示的系统。该系统包括用于根据可视化参数在显示器上显示程序执行数据的多个视觉特征以模拟软件程序的原始执行的速度的装置,其中,所述视觉特征包括多个色彩,并且每个色彩与在原始执行期间在其上面执行多线程软件程序的指令的不同线程相关联。所述系统还包括用于在视觉特征的显示期间接收对可视化参数的所请求改变的装置;用于响应于所请求改变而更新可视化参数的装置;以及用于根据已更新可视化参数来更新视觉特征的显示的装置。

Claims (25)

1.一种用以在计算设备上以图形方式显示多线程软件程序的执行的性能和正确性特征的可视化系统,该可视化系统包括:
解析器模块,用以使在多线程软件程序的执行期间记录的程序执行数据准备好用于可视化; 
图形建模器,用以显示程序执行数据的动画图形表示,所述动画图形表示突出显示性能和正确性特征中的一个或多个;以及 
控制器模块,用以交互式地控制显示器上的动画图形表示的显示。
2.权利要求1的可视化系统,其中,所述解析器模块准备指令跟踪,其包括关于在执行期间由多线程软件程序执行的指令和在其上面执行指令的线程的数据。
3.权利要求1或权利要求2的可视化系统,其中,所述解析器模块从由基于块的存储器竞争记录系统在多线程软件程序的执行期间生成的多个日志文件读取程序执行数据。
4.权利要求1-3中的任一项的可视化系统,其中,所述解析器模块根据块来布置数据,并且每个块表示在没有与冲突存储器访问交织的情况下由相同的线程执行的多个指令。
5.权利要求4的可视化系统,其中,所述图形建模器显示多个视觉特征,并且每个视觉特征包括表示每个块的色彩,使得使用相同色彩来显示与相同的线程相关联的块。
6.权利要求5的可视化系统,其中,每个块中的每个指令具有执行时间,并且每个视觉特征包括具有由块中的指令的执行时间定义的尺寸的形状。
7.权利要求6的可视化系统,其中,形状的尺寸进一步由块中的指令的数目定义。
8.权利要求1-7中的任一项的可视化系统,其中,所述图形建模器基于程序的总执行时间对动画图形表示的尺寸进行规格化。
9.权利要求1-8中的任一项的可视化系统,其中,所述动画图形表示突出显示在多线程软件程序的执行期间发生的共享存储器相关性冲突。
10.权利要求1-9中的任一项的可视化系统,其中,所述图形建模器存储关于动画图形表示的数据以用于动画图形表示的离线重放。
11.权利要求10的可视化系统,其中,所述控制器模块控制动画图形表示的离线重放。
12.权利要求1-11中的任一项的可视化系统,其中,所述控制器模块从动画图形表示的观察者接收输入,并响应于动画图形表示的显示期间的输入而调整动画图形表示的显示。
13.权利要求12的可视化系统,其中,所述控制器模块响应于动画图形表示的显示期间的观察者输入而增加和减小显示动画图形表示的速度。
14.权利要求12或权利要求13的可视化系统,其中,所述控制器模块响应于在动画图形表示的显示期间的观察者输入而改变动画图形表示的显示的放大倍率。
15.权利要求12-14中的任一项的可视化系统,其中,所述控制器模块响应于在动画图形表示的显示期间的观察者输入而旋转动画图形表示的显示。
16.一种用于在计算设备上以图形方式使多线程软件程序的执行的性能和正确性特征可视化的方法,该方法包括:
读取由基于块的存储器竞争记录系统在多线程软件程序的执行期间记录的程序执行数据; 
使程序执行数据准备好用于图形可视化;
显示程序执行数据的动画图形表示,该动画图形表示突出显示性能和正确性特征中的一个或多个;以及 
响应于一个或多个可视化参数而控制动画图形表示的显示。
17.权利要求16的方法,包括根据块来布置数据,其中,每个块表示在没有与冲突存储器访问交织的情况下由相同的线程执行的多个指令。
18.权利要求17的方法,包括显示关于块的多个视觉特征,其中,每个视觉特征包括表示每个块的色彩,使得使用相同色彩来显示与相同的线程相关联的块。
19.权利要求18的方法,其中,每个块中的每个指令具有执行时间且每个块与许多指令相关联,并且该方法包括将每个视觉特征定义成包括具有由块中的指令的执行时间定义的尺寸的形状。
20.权利要求16-19中的任一项的方法,包括基于程序执行的尺寸来配置动画图形表示的尺寸。
21.权利要求16-20中的任一项的方法,包括在动画图形表示中突出显示在多线程软件程序的执行期间发生的共享存储器相关性冲突。
22.权利要求16-21中的任一项的方法,包括从动画图形表示的观察者接收输入,并响应于动画图形表示的显示期间的输入而调整动画图形表示的显示。
23.一个或多个机器可读存储介质,包括存储在其上面的多个指令,该指令响应于被执行而导致计算设备执行权利要求16-22中的任一项的方法。
24.一种用于在计算设备上以图形方式使多线程软件程序的执行的性能和正确性特征可视化的系统,该系统包括:
用于读取由基于块的存储器竞争记录系统在多线程软件程序的执行期间记录的程序执行数据的装置; 
用于使程序执行数据准备好用于图形可视化的装置;
用于显示程序执行数据的动画图形表示,该动画图形表示突出显示性能和正确性特征中的一个或多个的装置;以及 
用于响应于一个或多个可视化参数而控制动画图形表示的显示的装置。
25.权利要求24的系统,包括用于根据块来布置数据的装置,其中,每个块表示在没有与冲突存储器访问交织的情况下由相同的线程执行的多个指令。
CN201380072905.3A 2013-03-13 2013-03-13 针对性能和正确性使多线程软件程序的已记录执行可视化 Active CN104969191B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/030745 WO2014142820A1 (en) 2013-03-13 2013-03-13 Visualizing recorded executions of multi-threaded software programs for performance and correctness

Publications (2)

Publication Number Publication Date
CN104969191A true CN104969191A (zh) 2015-10-07
CN104969191B CN104969191B (zh) 2019-02-26

Family

ID=51537242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380072905.3A Active CN104969191B (zh) 2013-03-13 2013-03-13 针对性能和正确性使多线程软件程序的已记录执行可视化

Country Status (6)

Country Link
US (1) US20140366006A1 (zh)
EP (1) EP2972841B1 (zh)
JP (1) JP6132065B2 (zh)
KR (1) KR101669783B1 (zh)
CN (1) CN104969191B (zh)
WO (1) WO2014142820A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110062927A (zh) * 2016-12-21 2019-07-26 微软技术许可有限责任公司 可执行代码的并行重放

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732670B1 (en) 2010-06-29 2014-05-20 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
WO2015027403A1 (en) * 2013-08-28 2015-03-05 Hewlett-Packard Development Company, L.P. Testing multi-threaded applications
JP6102825B2 (ja) * 2014-05-30 2017-03-29 カシオ計算機株式会社 動画データ再生装置、動画データ再生方法及びプログラム
CN105186463B (zh) * 2015-08-31 2018-03-16 许继集团有限公司 一种防止智能变电站继电保护装置误操作的方法
US10042737B2 (en) * 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US9965376B1 (en) * 2017-01-06 2018-05-08 Microsoft Technology Licensing, Llc Speculative replay of executable code
US10353801B2 (en) * 2017-02-28 2019-07-16 International Business Machines Corporation Abnormal timing breakpoints
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10608182B2 (en) 2017-04-20 2020-03-31 Kateeva, Inc. Analysis of material layers on surfaces, and related systems and methods
US11113138B2 (en) 2018-01-02 2021-09-07 Carrier Corporation System and method for analyzing and responding to errors within a log file
US10649884B2 (en) 2018-02-08 2020-05-12 The Mitre Corporation Methods and system for constrained replay debugging with message communications
US10977075B2 (en) * 2019-04-10 2021-04-13 Mentor Graphics Corporation Performance profiling for a multithreaded processor
US11762858B2 (en) 2020-03-19 2023-09-19 The Mitre Corporation Systems and methods for analyzing distributed system data streams using declarative specification, detection, and evaluation of happened-before relationships

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07219807A (ja) * 1994-02-08 1995-08-18 Toshiba Corp プログラマブルコントローラシステム
US6226787B1 (en) * 1999-01-25 2001-05-01 Hewlett-Packard Company Visualization method and system for dynamically displaying operations of a program
US20020129306A1 (en) * 2000-11-30 2002-09-12 Flanagan Cormac Andrias Method and apparatus for verifying data local to a single thread
US20060101413A1 (en) * 2004-08-12 2006-05-11 Ntt Docomo, Inc. Software operation monitoring apparatus and software operation monitoring method
CN101208659A (zh) * 2005-04-15 2008-06-25 微软公司 用于对软件程序进行性能分析的方法和装置
WO2009111325A2 (en) * 2008-02-29 2009-09-11 The Regents Of The University Of California Scalable, cross-platform method for multi-tile display systems
US20090319996A1 (en) * 2008-06-23 2009-12-24 Microsoft Corporation Analysis of thread synchronization events
US8069446B2 (en) * 2009-04-03 2011-11-29 Microsoft Corporation Parallel programming and execution systems and techniques

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792774B2 (ja) * 1989-01-17 1995-10-09 東京電力株式会社 複数プロセスの関係表示方式
JPH04337843A (ja) * 1991-05-15 1992-11-25 Hitachi Ltd プログラム動作表示方法
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
KR100248376B1 (ko) * 1997-10-28 2000-03-15 정선종 동적-비주얼 통합 병렬 디버깅 장치 및 디버깅 방법
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6378066B1 (en) * 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
US6405326B1 (en) * 1999-06-08 2002-06-11 International Business Machines Corporation Limited Timing related bug detector method for detecting data races
US6854108B1 (en) * 2000-05-11 2005-02-08 International Business Machines Corporation Method and apparatus for deterministic replay of java multithreaded programs on multiprocessors
US7774172B1 (en) * 2003-12-10 2010-08-10 The Mathworks, Inc. Method for using a graphical debugging tool
US7458064B2 (en) * 2005-04-11 2008-11-25 Microsoft Corporation Methods and apparatus for generating a work item in a bug tracking system
US10353797B2 (en) * 2006-12-29 2019-07-16 International Business Machines Corporation Using memory tracking data to inform a memory map tool
US8595702B2 (en) * 2009-03-13 2013-11-26 Microsoft Corporation Simultaneously displaying multiple call stacks in an interactive debugger
US20110078666A1 (en) * 2009-05-26 2011-03-31 University Of California System and Method for Reproducing Device Program Execution
US8490062B2 (en) * 2009-08-17 2013-07-16 Siemens Corporation Automatic identification of execution phases in load tests
US8601442B2 (en) * 2009-09-30 2013-12-03 Microsoft Corporation Marker correlation of application constructs with visualizations
US8601444B2 (en) * 2009-10-27 2013-12-03 Microsoft Corporation Analysis and timeline visualization of thread activity
CN102053906A (zh) * 2009-10-30 2011-05-11 国际商业机器公司 用于收集程序运行时信息的系统和方法
JP2011243110A (ja) * 2010-05-20 2011-12-01 Renesas Electronics Corp 情報処理装置
US8527970B1 (en) * 2010-09-09 2013-09-03 The Boeing Company Methods and systems for mapping threads to processor cores
US8904128B2 (en) * 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
US8935673B1 (en) * 2012-11-30 2015-01-13 Cadence Design Systems, Inc. System and method for debugging computer program based on execution history

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07219807A (ja) * 1994-02-08 1995-08-18 Toshiba Corp プログラマブルコントローラシステム
US6226787B1 (en) * 1999-01-25 2001-05-01 Hewlett-Packard Company Visualization method and system for dynamically displaying operations of a program
US20020129306A1 (en) * 2000-11-30 2002-09-12 Flanagan Cormac Andrias Method and apparatus for verifying data local to a single thread
US20060101413A1 (en) * 2004-08-12 2006-05-11 Ntt Docomo, Inc. Software operation monitoring apparatus and software operation monitoring method
CN101208659A (zh) * 2005-04-15 2008-06-25 微软公司 用于对软件程序进行性能分析的方法和装置
WO2009111325A2 (en) * 2008-02-29 2009-09-11 The Regents Of The University Of California Scalable, cross-platform method for multi-tile display systems
US20090319996A1 (en) * 2008-06-23 2009-12-24 Microsoft Corporation Analysis of thread synchronization events
US8069446B2 (en) * 2009-04-03 2011-11-29 Microsoft Corporation Parallel programming and execution systems and techniques

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GILLES POKAM等: ""Architecting a Chunk-based Memory Race Recorder in Modern CMPs"", 《2009 42ND ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110062927A (zh) * 2016-12-21 2019-07-26 微软技术许可有限责任公司 可执行代码的并行重放
CN110062927B (zh) * 2016-12-21 2023-03-21 微软技术许可有限责任公司 用于可执行代码的并行重放的方法、系统和存储设备

Also Published As

Publication number Publication date
WO2014142820A1 (en) 2014-09-18
EP2972841A1 (en) 2016-01-20
CN104969191B (zh) 2019-02-26
KR20150103262A (ko) 2015-09-09
JP2016514318A (ja) 2016-05-19
JP6132065B2 (ja) 2017-05-24
US20140366006A1 (en) 2014-12-11
KR101669783B1 (ko) 2016-11-09
EP2972841A4 (en) 2017-01-11
EP2972841B1 (en) 2020-02-12

Similar Documents

Publication Publication Date Title
CN104969191A (zh) 针对性能和正确性使多线程软件程序的已记录执行可视化
US11287967B2 (en) Graphical user interface list content density adjustment
US9875009B2 (en) Hierarchically-organized control galleries
KR101862180B1 (ko) 스푸프 클록의 사용 및 미세 수준 주파수 제어를 통한 역 호환성
CN109634828A (zh) 故障预测方法、装置、设备及存储介质
WO2019051492A1 (en) TOOLS AND ARCHITECTURE OF IMMERSIVE VIRTUAL ENVIRONMENT (IVE)
CN112947969B (zh) 一种页面离屏渲染方法、装置、设备和可读介质
CN102930580A (zh) 数据帧动画
CN104995622A (zh) 用于图形函数的合成器支持
US9268875B2 (en) Extensible content focus mode
US11813538B2 (en) Videogame telemetry data and game asset tracker for session recordings
US20020147576A1 (en) System for characterizing simulated circuit logic and behavior
ES2963529T3 (es) Exponer dinámicamente datos usados repetitivamente en una interfaz de usuario
CN102508822A (zh) 泰语显示方法、装置和系统
CN107133072A (zh) 一种操作执行方法和装置
Aversa et al. Unity Game Optimization: Enhance and extend the performance of all aspects of your Unity games
US10303230B1 (en) Method and system to mitigate large power load steps due to intermittent execution in a computation system
US20230289220A1 (en) Techniques for trial-and-error learning in complex application environments
US20230381660A1 (en) User interface for operating artificial intelligence experiments
Therén Optimization of graphical performance in a motion-based web game: Improving design and implementation of a game measured by frame rate
CN113888120A (zh) 考勤记录的输入方法、装置、存储介质及终端设备
US20120092375A1 (en) In-betweening interactive states
WO2011091867A1 (en) A page rendering method for a small form factor device

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant