Results 1 -
7 of
7
Catch me if you can: Performance bug detection in the wild
- In OOPSLA
, 2011
"... Profilers help developers to find and fix performance prob-lems. But do they find performance bugs – performance problems that real users actually notice? In this paper we argue that – especially in the case of interactive applications – traditional profilers find irrelevant problems but fail to fin ..."
Abstract
-
Cited by 26 (0 self)
- Add to MetaCart
(Show Context)
Profilers help developers to find and fix performance prob-lems. But do they find performance bugs – performance problems that real users actually notice? In this paper we argue that – especially in the case of interactive applications – traditional profilers find irrelevant problems but fail to find relevant bugs. We then introduce lag hunting, an approach that identi-fies perceptible performance bugs by monitoring the behav-ior of applications deployed in the wild. The approach trans-parently produces a list of performance issues, and for each issue provides the developer with information that helps in finding the cause of the problem. We evaluate our approach with an experiment where we monitor an application used by 24 users for 1958 hours over the course of 3-months. We characterize the resulting 881 is-sues, and we find and fix the causes of a set of representative examples.
Viprof: Vertically integrated full-system performance profiler
- in Workshop on NextGeneration Software (w/IPDPS
, 2007
"... In this paper, we present VIProf, a full-system, performance sampling system capable of extracting runtime behavior across an entire software stack. Our long-term goal is to employ VIProf profiles to guide online optimization of programs and their execution environments according to the dynamically ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
(Show Context)
In this paper, we present VIProf, a full-system, performance sampling system capable of extracting runtime behavior across an entire software stack. Our long-term goal is to employ VIProf profiles to guide online optimization of programs and their execution environments according to the dynamically changing execution behavior and resource availability. VIProf thus, must be transparent while producing accurate and useful performance profiles. We overview the design and implementation of VIProf and empirically evaluate the system using a popular software stack – one that includes a Linux operating system, a Java Virtual Machine, and a set of applications. This composition is commonly employed and important for highend systems such as application and web servers as well as Computational Grid services. We show that VIProf introduces little overhead and is able to capture accurate (function-level) full-system performance data that previously required multiple profiles and extensive, manual, and offline post-processing of profile data. 1 1.
VrtProf: Vertical Profiling for System Virtualization
- In Hawaii International Conference on System Science
, 2010
"... ..."
(Show Context)
Resource accounting and reservation in Java Virtual Machine
"... The Java platform The Java programming language was designed to developed small application for embedded devices, but it was a long time ago. Today, Java application are running in many platforms ranging from smartphones to enterprise servers. Modern pervasive middleware is typically implemented us ..."
Abstract
- Add to MetaCart
(Show Context)
The Java platform The Java programming language was designed to developed small application for embedded devices, but it was a long time ago. Today, Java application are running in many platforms ranging from smartphones to enterprise servers. Modern pervasive middleware is typically implemented using Java because of its safety, flexibility, and mature development environment. However, the Java virtual machine specification has not had a major revised since 1999 Several researches had addressed these important issues. As result of these efforts some Java specification requests (JSR) have emerged. We consider there are seven JSRs relate to monitoring and to resource accounting and reservation: three for the Java Management eXtension API (JSRs 3, 160, 255), two for Metric Instrumentation (JSRs 138, 174) and two for resource-consumption management (JSRs 121, 284). The Java Management extension API only addresses monitoring and management: it does not define specific resource accounting or reservation strategies. JSRs 138 and 174 define monitors for the Java Virtual Machine. They are coarse grained, monitoring the number of running threads, the memory used, the number of garbage collections and so on. They monitor the entire virtual machine, not specific component so, they are useless to most middleware. Based on the Multitasking Virtual Machine
Characterizing Phase Behavior for Dynamically Reconfigurable Architectures
"... Previous researches have shown most programs have phase behavior. We would like to take advantage of the phase behavior of applications to dynamically reconfigure an embedded platform in order to achieve more energy efficiency and performance. In this study, we first outline some aspects of the phas ..."
Abstract
- Add to MetaCart
(Show Context)
Previous researches have shown most programs have phase behavior. We would like to take advantage of the phase behavior of applications to dynamically reconfigure an embedded platform in order to achieve more energy efficiency and performance. In this study, we first outline some aspects of the phase behavior with emphasis also on the influence of the Operating System (OS). We developed a tool chain to characterize the phase behavior of workloads (benchmarks) for embedded reconfigurable systems. Eight typical workloads are analyzed by using our tool chain. The results show that i) phase behavior can be relevant in workloads for embedded reconfigurable systems; ii) phase behavior (including the number of phases and the time spent in each phase) is reflected in several types of system metrics; iii) there are more phases when OS activities are involved for the same program; iv) the time spent by each phase of a program varies in a wide range. We believe the outcomes of this work can be used to guide the dynamic reconfiguration of components in embedded reconfigurable systems.
Coherence Miss Classification for Performance Debugging in Multi-Core Processors
"... Multi-core processors offer large performance potential for parallel applications, but writing these applications is notoriously difficult. Tuning a parallel application to achieve scalability, referred to as performance debugging, is often more challenging for programmers than conventional debuggin ..."
Abstract
- Add to MetaCart
(Show Context)
Multi-core processors offer large performance potential for parallel applications, but writing these applications is notoriously difficult. Tuning a parallel application to achieve scalability, referred to as performance debugging, is often more challenging for programmers than conventional debugging for correctness. Parallel programs have several performance related issues that are not seen in sequential programs. In particular, increased cache misses triggered by data sharing (coherence misses) are a challenge for programmers. Data sharing misses can stem from true or false sharing and the solutions for the two types of misses are quite different. Therefore, to minimize coherence misses, it is not just sufficient for programmers to only identify the source of the extra misses. They should also have information about the type of coherence misses that are hurting performance. In this paper, we propose a programmer-centric definition of false sharing misses for use in performance debugging. We describe our algorithm to classify coherence misses based on this definition, and explore a practical and low cost solution that keeps no state at all. We find that the low cost solution can suffer from considerable inaccuracy that might mislead programmers in their performance debugging efforts. 1.
The Remote Compilation Framework: A Sweetspot Between Interpretation and Dynamic Compilation
"... In this paper, we present the Remote Compilation Frame-work (RCF), a feedback-directed, phase-aware compilation system “as-a-service ” for efficient execution of dynamic scripting language programs. Using RCF, at the client-side, users execute programs using a ubiquitous, memory-efficient interprete ..."
Abstract
- Add to MetaCart
(Show Context)
In this paper, we present the Remote Compilation Frame-work (RCF), a feedback-directed, phase-aware compilation system “as-a-service ” for efficient execution of dynamic scripting language programs. Using RCF, at the client-side, users execute programs using a ubiquitous, memory-efficient interpreter extended with our light-weight sampling support. The interpreters collect samples of annotated calling con-text trees and communicate them to a remote optimization service. This service combines samples into a phase-based aggregate profiles across users/inputs and uses them to trig-ger and guide guarded, selective and speculative type spe-cialization of programs via static translation. Users receive new versions of the program from the service as part of software update which they use for future executions of the program. We provide an empirical analysis of RCF and a sensitivity study of its phase-based recompilation strategy. We find that RCF can accurately detect phase shifts in com-plex applications for different numbers of users and achieves performance benefits similar to that of a popular dynamic compilation system (PyPy) using a significantly simpler and memory efficient client-side runtime system. 1.