空闲转换采样制造技术

技术编号:8244112 阅读:197 留言:0更新日期:2013-01-25 03:04
过程基于事件产生样本。该过程使用调度监视器识别由当前处理器调度的下一个调度的被监视线程。该过程设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。在下一个调度的被监视线程的处理器亲合性已被设置到处理器后,该过程还使用在当前处理器上运行的被采样线程获取下一个调度的被监视线程调用栈。在获得下一个调度的被监视线程调用栈后,该过程恢复下一个调度的被监视线程的处理器亲合性。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术一般涉及计算环境。更具体地,本公开涉及采样技术。
技术介绍
在应用特征分析(prof iling)工具中典型地使用基于时间的或基于硬件事件的采样技术来确定资源的特定使用。当前的方法是周期性地产生中断以获取样本。当采取中断时,收集并记录样本数据。样本数据的例子是中断的进程/线程、正执行的指令或可选地在样本时间正被访问的数据地址。此后聚集收集的数据,并生成按照地址、符号、进程等显示样本分布的报告。多种工具是基于该技术的。样本的完整执行上下文典型地没有被记录,且不在报告中提供。已做出尝试,通过在样本时间获得调用栈而改进该技术。现有的工具集可试图直 接遍历(walk)调用栈或调用单独的(采样器)线程上的函数来获得被中断线程的调用栈。试图在中断级遍历调用栈不理想,因为一些应用可具有已被页调出(page out)的栈。此夕卜,栈遍历代码典型地执行存储器分配,这在中断级是不允许的。结果,当被请求时,可利用用户模式的采样线程来遍历调用栈。在多处理器系统上,请求单独的线程收集被中断线程的调用栈可允许被中断线程迁移到不同的处理器并向前进展,即,继续执行,同时收集调用栈。收集的调用栈不会反应线程在其被中断时的状态。
技术实现思路
在本专利技术的一个方面,提供了一种计算机程序产品。该计算机程序产品包括具有计算机可读程序的计算机可用介质。当在计算机上执行时,该计算机可读程序使得计算机基于事件生成样本。而且,当在计算机上执行时,该计算机可读程序使得计算机使用调度监视器识别在当前处理器上被调度的下一个调度的被监视线程。此外,当在计算机上执行时,该计算机可读程序使得计算机设置下一个调度的被监视线程的处理器亲合性(affinity),使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器上。当在计算机上运行时,该计算机可读程序也使得计算机在下一个调度的被监视线程的处理器亲合性已被设置到当前处理器上后,使用在当前处理器上运行的采样器线程获取下一个调度的被监视线程调用栈。此外,当在计算机上执行时,该计算机可读程序使得计算机在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性。当在计算机上执行时,计算机可读程序使得计算机记录用于下一个调度的被监视线程的调用栈。在本专利技术的另一方面,提供了一种过程。该过程基于事件产生样本。而且,该过程使用调度监视器识别被当前处理器调度的下一个调度的被监视线程。此外,该过程设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。该过程也在下一个调度的被监视线程的处理器亲合性已被设置到当前处理器上后,使用在当前处理器上运行的采样器线程获取下一个调度的被监视线程调用栈。此外,该过程在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性。该程也记录用于下一个调度的被监视线程的调用栈。在本专利技术的又一方面,提供了一种系统。该系统包括基于事件生成样本的当前处理器。而且,该系统包括操作系统,其(i )使用调度监视器,识别由当前处理器调度的下一个调度的被监视线程,以及( )设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。此外,该系统包括特征分析器,其(i )在下一个调度的被监视线程的处理器亲合性已被设置到当前处理器上后,使用被配置为仅在当前处理器上运行的采样器线程,获取下一个调度的被监视线程,(ii )在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性,以及(III)记录用于下一个调度的被监视线程的调用栈。在本专利技术的另一方面,提供了一种计算机程序产品。该计算机程序产品包括具有计算机可读程序的计算机可用介质。当在计算机上执行时,该计算机可读程序使得计算机基于事件生成样本。而且,当在计算机上执行时,该计算机可读程序使得计算机使用调度监视器识别由当前处理器调度的最后调度的被监视线程。此外,当在计算机上执行时,该计算 机可读程序使得计算机设置最后调度的被监视线程的处理器亲合性,使得最后调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。当在计算机上执行时,该计算机可读程序也使得计算机在最后调度的被监视线程的处理器亲合性已被设置到当前处理器后,使用在当前处理器上运行的采样器线程获取最后调度的被监视线程。此外,当在计算机上执行时,该计算机可读程序使得计算机在已获得最后调度的被监视线程调用栈后,恢复最后调度的被监视线程的处理器亲合性。当在计算机上执行时,计算机可读程序使得计算机记录用于最后调度的被监视线程的调用栈。附图说明现在将参考附图、仅通过举例的方式描述本专利技术的实施例,在附图中图I示出了根据本专利技术实施例采样空闲转换(idle transition)的采样系统。图2A示出了根据本专利技术实施例可被中断处理器利用以用于到空闲线程(to_idle_thread)的过程。图2B示出了根据本专利技术实施例的可被中断处理器利用以用于来自空闲线程(from_idle_thread)的过程。图3A示出了根据本专利技术实施例的可被调度器中的调度监视代码利用以用于到空闲线程的过程。图3B示出了根据本专利技术实施例的可被调度器中的调度监视代码利用以用于来自空闲线程的过程。图4示出了根据本专利技术实施例的用于通知特征分析器的过程。图5示出了根据本专利技术实施例的用于在过程块中排队的中断后端的过程。图6示出了根据本专利技术实施例的在作为过程块的结果而被唤醒后特征分析器执行的过程。图7示出了根据本专利技术实施例的用于特征分析器向操作系统通知样本已完成的过程。图8A示出了根据本专利技术实施例的可被空闲转换采样利用以用于来自空闲线程的过程。图SB示出了根据本专利技术实施例的可被空闲转换采样利用以用于到空闲线程的过程。图9示出了根据本专利技术实施例的采样空闲转换的系统的框图。具体实施例方式一种方法和系统使用采样技术来确定为什么一个或多个处理器没有被完全利用。确定为什么在一个或多个处理器上运行的应用没有伸缩(scale)可以是非常困难的。在某些环境中,特别是支持事务处理的那些环境中,重要的是确定最大事务率并驱使系统完全利用所有的处理资源。当达到最大事务率、但不是所有的处理器都被完全利用时,有某种类型的瓶颈阻止完全利用。通过确定用于在处理器变得空闲之前执行的最后线程(即,到空闲·线程)的上下文,以及/或用于在处理器具有工作可做之后而执行的第一个线程(即,来自空闲线程)的上下文,可获得信息以帮助确定瓶颈的原因。一种方法是收集用于可对瓶颈有贡献的那些线程的调用栈。即,例如,采样代码可简单地获得仅用于这些线程的调用栈,所述线程最近运行于在样本时间空闲的处理器上。这涉及保持跟踪哪个线程在哪个处理器上运行,以便收集用于正确线程的调用栈。但是,当正在收集调用栈时,这些线程可能迁移并在其他处理器上执行。保持除了将收集在其上的调用栈的处理器之外的所有的处理器繁忙可阻止线程迁移。这可通过使得采样器线程在这些处理器上自旋(spin)直到获得用于感兴趣的线程的调用栈而完成,但这会损害整体应用性能。反之,通过阻止感兴趣的线程迁移到不同的处理器(这可在一个实施例中通过设置其处理器亲合性以将其限本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:F·E·莱维恩K·库珀尔E·M·皮内达
申请(专利权)人:国际商业机器公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1