Analysis, detection, and exploitation of phase behavior in java programs

Analysis, detection, and exploitation of phase behavior in java programs
复制标题

java 程序中相行为的分析、检测和利用

DOI:
--
复制
发表时间:
2007
期刊:
影响因子:
--
通讯作者:
L. Arendt
L. Arendt
中科院分区:
--
文献类型:
--
作者:
H. Sumikura;L. Arendt

文献摘要

被引文献

相似文献

Java编程语言为开发人员提供了许多提高生产力的特性,包括高级抽象、扩展库、独立于体系结构的执行和类型安全。这些特征由智能执行环境实现,该智能执行环境增量地和动态地编译和执行为虚拟机编码的Java程序的紧凑表示。虽然这必然会增加开销,但在运行时编译(和重新编译)代码的能力也使执行环境能够基于执行程序的运行时行为执行动态的性能增强优化。为这些系统开发有效的自适应优化有三个主要步骤:(1)对Java程序的性能进行全面的分析、理解和表征;(2)在运行时有效地从程序中提取准确的数据;(3)使用从提取的性能数据中获得的反馈指导优化。我们解决这些步骤中的每一个在我们的研究中,专注于捕捉和利用的重复模式在虚拟执行环境中的程序行为(阶段),特别是那些Java程序的技术。本论文主要分为两个部分:阶段分析与检测工具和技术,以及阶段感知技术,用于高效的程序分析与优化。我们首先研究了Java程序的时变行为,表明Java程序确实表现出阶段行为,并提出了提取和分析这种阶段行为的工具。然后,我们调查的问题,准确的在线相位检测的Java程序,在一个Java虚拟机,有效地影响这样做的参数,并评估众多的在线相位检测器。最后,我们通过设计和评估两种基于阶段的运行时技术来展示基于阶段的优化的潜力。第一种技术是针对资源受限设备的精确的、低开销的剖析方案,该方案使用阶段来驱动何时对程序的执行进行采样。第二种技术是软件指令预取机制,它使用方法级阶段行为来识别、预测和预取方法,这些方法会导致数据库和应用程序服务器等新兴Java工作负载出现大量指令缓存未命中。这两种技术跨越了Java应用程序使用的两种极端执行环境:低端的资源受限设备软件和高端的应用程序服务器。
The Java programming language offers developers many productivity enhancing features, including high-level abstractions, extensive libraries, architecture-independent execution, and type safety. These features are enabled by an intelligent execution environment that, incrementally and dynamically, compiles and executes compact representations of Java programs encoded for a virtual machine. While this necessarily adds overhead, the ability to compile (and recompile) code at runtime also enables the execution environment to perform dynamic, performance-enhancing optimizations based on the runtime behavior of the executing program. There are three primary steps in developing effective adaptive optimizations for these systems: (1) Development of a thorough analysis, understanding, and characterization of the performance of Java programs; (2) Extracting accurate data from programs efficiently at runtime; and (3) Guiding optimizations using feedback from the extracted performance data. We address each of these steps in our research by focusing on techniques that capture and exploit the repeating patterns in program behavior (phases) within virtual execution environments, and in particular, those for Java programs. This dissertation can be decomposed into two foci: phase analysis and detection tools and techniques and phase-aware techniques for efficient program analysis and optimization. We first study the time varying behavior of Java programs, show that Java programs do exhibit phase behavior, and present tools to extract and analyze this phase behavior. We then investigate the problem of accurate online phase detection for Java programs, within a Java virtual machine, the parameters that impact doing so effectively, and evaluate numerous online phase detectors. Finally we demonstrate the potential of phase-based optimizations by designing and evaluating two phase-based runtime techniques. The first technique is an accurate, low-overhead profiling scheme for resource-constrained devices that uses phases to drive when to sample the execution of a program. The second technique is a software instruction prefetching mechanism that uses method-level phase behavior to identify, predict, and prefetch methods that incur a large number of instruction cache misses for emerging Java workloads like database- and application servers. These two techniques span two extremes of execution environments used for Java applications: software for resource-constrained devices at the low end and application servers at the high-end.