我在一篇关于动态仪器的论文中找到了这个概念。但我找不到这个概念的解释。如果可能的话请解释一下..。
编辑:或者有关于如何实现轻量级动态工具(在用户空间、syscalls和普通函数调用)的教程吗?
编辑(增加纸张细节):
一种优化高性能分布式数据流处理的代码生成方法
摘要
我们提出了一种基于代码生成的优化方法,以提高分布式流处理应用程序的性能和可扩展性。我们使用一种基于运算符的、以流为中心的语言(称为SPADE )来表示流处理应用程序,它支持从类型泛型运算符的工具包中合成分布式数据流图。构建此类应用程序的一个主要挑战是找到一种有效和灵活的方法,将运算符的逻辑图映射为可部署在一组分布式节点上的物理图。这涉及到如何找到最佳运算符如何映射到进程,以及如何将最佳流程映射到计算节点。在本文中,我们采用两阶段优化方法,首先由SPADE编译器生成应用程序的仪器化版本,以分析和收集有关应用程序中运算符的处理和通信特性的统计信息。在第二阶段,分析信息被提供给优化器,以得到一个物理数据流图,该图可以部署在计算集群中的节点上。这种方法不仅创建了高度优化的应用程序,这些应用程序是为底层计算和网络基础设施量身定做的,而且通过简单地重复优化步骤并重新编译应用程序以匹配优化器生成的物理流图,可以将应用程序重新定位到不同的硬件设置中。利用现实世界的应用,从金融和射电天文学等不同领域,我们证明了我们的方法在系统S --一个大规模的分布式流处理平台上的有效性。
发布于 2011-05-06 19:28:40
插装意味着将代码插入到指令流中,这些指令流的目的是测量执行时间、函数调用、数据访问,以及与分析相关的各种事情。这是进行分析的两种方法之一,也是比较准确但速度较慢的方法之一。另一种是采样,在那里,您周期性地中断程序并查看它的当前状态。这对性能的影响较小,但不那么准确,特别是在短跑时。
发布于 2011-05-06 19:28:03
如果不知道您所引用的是哪篇文章,就很难确定,但通常情况下,这将是代码中有“钩子”的地方。
也就是说,它是被编码的,所以它可以被动态地检测,所以可以记录一些关于代码运行方式的度量。
这是否会花在一种方法上的时间,耗电量或其他什么取决于它是什么和如何被仪器。
发布于 2011-05-06 19:29:39
如果能看到与该文件有关的链接,将是有益的。在一个工具,如systemtap/gdb中,一个插装点将是代码中的任何位置,其执行会产生一个事件。对于“动态”检测,通常不需要将钩子编译到代码中;该工具只需要确定可以插入断点的PC地址。
https://stackoverflow.com/questions/5916094
复制相似问题