Performance Tools for Parallel Java Environments



Similar documents
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment

Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.

End-user Tools for Application Performance Analysis Using Hardware Counters

Replication on Virtual Machines

Garbage Collection in the Java HotSpot Virtual Machine

Unified Performance Data Collection with Score-P

2015 ej-technologies GmbH. All rights reserved. JProfiler Manual

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Chapter 3 Operating-System Structures

Kernel Types System Calls. Operating Systems. Autumn 2013 CS4023

Multi-core Programming System Overview

Performance Tools. Tulin Kaman. Department of Applied Mathematics and Statistics

Chapter 2 System Structures

Introduction to the TAU Performance System

System Structures. Services Interface Structure

Profiling and Tracing in Linux

An Oracle White Paper September Advanced Java Diagnostics and Monitoring Without Performance Overhead

Example of Standard API

An Instrumentation Tool for Threaded Java Application Servers

Instrumentation Software Profiling

Restraining Execution Environments

WebSphere Architect (Performance and Monitoring) 2011 IBM Corporation

Trace-Based and Sample-Based Profiling in Rational Application Developer

Oracle JRockit Mission Control Overview

JVM Tool Interface. Michal Pokorný

CSCI E 98: Managed Environments for the Execution of Programs

Improving Time to Solution with Automated Performance Analysis

Online Performance Observation of Large-Scale Parallel Applications

Java Troubleshooting and Performance

Effective Java Programming. efficient software development

Zing Vision. Answering your toughest production Java performance questions

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM

Review of Performance Analysis Tools for MPI Parallel Programs

HeapStats: Your Dependable Helper for Java Applications, from Development to Operation

A Scalable Approach to MPI Application Performance Analysis

Performance Measurement of Dynamically Compiled Java Executions

Apache Jakarta Tomcat

NVIDIA Tools For Profiling And Monitoring. David Goodwin

Holly Cummins IBM Hursley Labs. Java performance not so scary after all

OPERATING SYSTEM SERVICES

Using jvmstat and visualgc to Solve Memory Management Problems

11.1 inspectit inspectit

Java Garbage Collection Basics

JRastro: A Trace Agent for Debugging Multithreaded and Distributed Java Programs

Jonathan Worthington Scarborough Linux User Group

General Introduction

Tool - 1: Health Center

Port of the Java Virtual Machine Kaffe to DROPS by using L4Env

Performance Technology for Parallel and Distributed Component Software

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

Application Performance Analysis Tools and Techniques

Mobile Application Languages XML, Java, J2ME and JavaCard Lesson 04 Java

PTC System Monitor Solution Training

B M C S O F T W A R E, I N C. BASIC BEST PRACTICES. Ross Cochran Principal SW Consultant

Object Instance Profiling

Study of Realized Mehtod on a Java Web Server Monitoring System

What s Cool in the SAP JVM (CON3243)

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

Cloud Computing. Up until now

A Thread Monitoring System for Multithreaded Java Programs

Mobile Devices - An Introduction to the Android Operating Environment. Design, Architecture, and Performance Implications

Mission-Critical Java. An Oracle White Paper Updated October 2008

Resource Utilization of Middleware Components in Embedded Systems

How To Use Java On An Ipa (Jspa) With A Microsoft Powerbook (Jempa) With An Ipad And A Microos 2.5 (Microos)

Performance technology for parallel and distributed component software

Performance Analysis Tools For Parallel Java Applications on Shared-memory Systems

PC Based Escape Analysis in the Java Virtual Machine

Chapter 6 Concurrent Programming

Universidad Simón Bolívar

Comprehensive Profiling Support in the Java Virtual Machine

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

2 Introduction to Java. Introduction to Programming 1 1

Chapter 3: Operating-System Structures. Common System Components

Agent Languages. Overview. Requirements. Java. Tcl/Tk. Telescript. Evaluation. Artificial Intelligence Intelligent Agents

Eclipse Visualization and Performance Monitoring

Effective Java Programming. measurement as the basis

Java VM monitoring and the Health Center API. William Smith

DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service

JBoss Cookbook: Secret Recipes. David Chia Senior TAM, JBoss May 5 th 2011

Practical Performance Understanding the Performance of Your Application

Graylog2 Lennart Koopmann, OSDC /

Java Virtual Machine: the key for accurated memory prefetching

ELEC 377. Operating Systems. Week 1 Class 3

GPU Profiling with AMD CodeXL

Online Recruitment System 1. INTRODUCTION

PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0

A Pattern-Based Approach to. Automated Application Performance Analysis

Performance Monitoring and Visualization of Large-Sized and Multi- Threaded Applications with the Pajé Framework

Data Structure Oriented Monitoring for OpenMP Programs

Techniques for Real-System Characterization of Java Virtual Machine Energy and Power Behavior

PAPI - PERFORMANCE API. ANDRÉ PEREIRA ampereira@di.uminho.pt

Experiences and Lessons Learned with a Portable Interface to Hardware Performance Counters

Debugging Java performance problems. Ryan Matteson

An Implementation of the POMP Performance Monitoring Interface for OpenMP Based on Dynamic Probes

Performance Improvement In Java Application

Operating Systems and Networks

Complete Instrumentation Requirements for Performance Analysis of Web Based Technologies

PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design

Application Performance Monitoring: Trade-Off between Overhead Reduction and Maintainability

Transcription:

Performance Tools for Parallel Java Environments Sameer Shende and Allen D. Malony Department of Computer and Information Science, University of Oregon {sameer,malony}@cs.uoregon.edu http://www.cs.uoregon.edu/research/paracomp/tau

Overview Parallel Java Environments TAU Performance Framework Performance Instrumentation Java Virtual Machine Profiler Interface MPI Profiling Interface Integration of multiple interfaces An Example Performance Measurement Overhead Conclusions Demonstration

Parallel Java Environments Java applications use MPI interface for IPC Implementation of mpijava [ http://www.npac.syr.edu/projects/pcrc/hpjava/mpijava.html] JNI C-Wrapper for MPI One-to-One mapping Java<->C MPI Interface Execution of Java bytecode Classic bytecode interpreter JIT Compiler HotSpot JVM Performance Analysis of Multi-Language Applications

TAU Performance Framework Tuning and Analysis Utilities (TAU) Execution Model: HPC++ Model of Computation Node Context Thread Multi-level instrumentation facility Modular measurement framework Multiple thread models Access to CPU Performance Counters (PAPI, PCL) Configurable performance profiling and tracing toolkit

Architecture of TAU

Performance Instrumentation Multi-language applications (Java, C++, C, Fortran) Hybrid execution models (Java threads, MPI) JNI/native Java implementations of MPI Java Interface Java Virtual Machine Profiler Interface (JVMPI) Java Native Interface (JNI) MPI Profiling Interlace

Java Virtual Machine Profiler Interface (JVMPI) Profiling Hooks into the Virtual Machine In-process profiling agent instruments Java application No changes to the Java source code, bytecode, or the executable code of the JVM Two-way call interface Profiler agent is a shared object (libtau.so) loaded at runtime Agent registers events to the JVMPI JVMPI notifies events to the agent at runtime Agent uses JNI to invoke JVMPI control routines (mutual exclusion, etc.)

JVMPI Events Method transition events triggered at method entry and exits Memory events triggered when an object is allocated, moved, or deleted Heap arena events triggered when an arena is created or destroyed Garbage collection start and finish events Loading and unloading in memory events for classes and compiled methods JNI global and weak global reference allocation and deallocation events Monitor events for contended Java and raw monitors triggered when a thread attempts to enter, actually enters, or exits a monitor that is accessed by more than one thread Monitor wait events triggered when a thread is about to wait or finishes waiting on an object Thread start and end events when a thread starts or stops executing in the virtual machine Events that request a dump or resetting of the profiling data gathered by the in-process profiling agent Virtual machine initialization and shutdown events

Agent JVMPI interaction create a daemon thread in the virtual machine enable or disable the notification of an event enable, disable or force a garbage collection in the virtual machine obtain information regarding the current method call stack trace for a given thread obtain the accumulated CPU time consumed by the current thread obtain information about the object where a method took place get or set a pointer-sized thread-local storage data structure that can be used to record per-thread profiling data create or destroy a raw monitor. Raw monitors are not associated with Java objects and can be used by the profiler agent to maintain consistency of multi-threaded profiling data enter, exit or wait on a raw monitor for mutual exclusion. It can also notify all threads that are waiting on a raw monitor or specify a time-out period while waiting resume or suspend a thread exit the virtual machine

Integration of Multi-Level Instrumentation APIs JVM Java Program TAU package mpijava package thread API JVMPI event notification JNI TAU MPI Profiling Interface TAU wrapper Native MPI library profile DB Common TAU database for multiple sources

Example: Game of Life Profiling % prunjava 4 Life % racy

Example Tracing: Visualization in Vampir [http://www.pallas.de] % prunjava 4 Life % tau_merge tautrace*.trc Life.trc % tau_convert -vampir Life.trc tau.edf Life.pv % vampir Life.pv

Dynamic Call-tree Visualization Vampir displays TAU traces

Performance Measurement Overhead TAU instrumentation overhead in microseconds Operation Mean Overhead (µsec) Standard Deviation Samples Range (µsec) Method Loading Method Entry Method Exit profiling 30.28 7.12 123 20.14-70.14 profiling & tracing 33.76 9.01 123 21.81-93.14 profiling 2.67 2.01 12860 1.14-50.14 profiling & tracing 4.71 2.82 12860 3.14-190.14 profiling 1.16 0.31 12860 0.14-15.14 profiling & tracing 2.85 1.29 12860 2.14-25.14

Conclusions Complex parallel and distributed computing environment Need for observing performance events Requirements for an integrated portable performance analysis environment Constraints imposed by the system Unified JVM vs. native execution performance measurement TAU manages a multi-level, multi-threaded performance instrumentation framework Integrates performance instrumentation TAU is available from: http://www.cs.uoregon.edu/research/paracomp/tau http://www.acl.lanl.gov/tau