IBM Cognos ReportNet and the Java Heap

Similar documents
Managing Report Server Database Connections

SDK/RTE for Debian Linux on Intel Itanium Processors Release Notes

Java Performance Tuning

Java Application Performance Tuning for AMD EPYC Processors

Version 6.x Deployment Note. Performance Tuning Guide

It s Good to Have (JVM) Options

Report Studio: Using Java Script to Select and Submit Values to a SAP Prompt.

Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide. Release 10

Enabling Java-based VoIP backend platforms through JVM performance tuning

Java Performance Tuning From A Garbage Collection Perspective. Nagendra Nagarajayya MDE

MEMORY MANAGEMENT HEAP, STACK AND GARBAGE COLLECTION

JBoss Performance Tuning. Bill Meyer JBoss Sr. Solutions Architect

Java Garbage Collection Best Practices For Tuning GC

Generational Garbage Collection Theory and Best Practices

JVM Memory Model and GC

Runtime Application Self-Protection (RASP) Performance Metrics

PARAMETERS Options may be in any order. For a discussion of parameters which apply to a specific option, see OPTIONS below.

JVM Performance Study Comparing Java HotSpot to Azul Zing Using Red Hat JBoss Data Grid

Oracle JRockit. Performance Tuning Guide Release R28 E

Java Performance Tuning and Optimization Student Guide

Part I Garbage Collection Modeling: Progress Report

Operating Systems 2 nd semester 2016/2017. Chapter 4: Threads

Fundamentals of GC Tuning. Charlie Hunt JVM & Performance Junkie

Garbage Collection. Hwansoo Han

Designing experiments Performing experiments in Java Intel s Manycore Testing Lab

Performance Tuning ScrumWorks Pro Server

Tuning Performance of Oracle WebLogic Server 12c (12.2.1)

TM1 Useful UNIX Commands

JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra

Java Performance: The Definitive Guide

Installing on WebLogic Server

JAVA PERFORMANCE. PR SW2 S18 Dr. Prähofer DI Leopoldseder

Using the AT and FOR Options with Relational Summary Functions

MODULE 1 JAVA PLATFORMS. Identifying Java Technology Product Groups

Application Servers Sun Java Systems Application Server (SJSAS) Installation

SAS 9.2 Web Applications: Tuning for Performance and Scalability

A Side-channel Attack on HotSpot Heap Management. Xiaofeng Wu, Kun Suo, Yong Zhao, Jia Rao The University of Texas at Arlington

OPERATING SYSTEM. Chapter 4: Threads

How to import a WSDL Data Source and Prepare it for Use in Framework Manager

Running class Timing on Java HotSpot VM, 1

Java On Steroids: Sun s High-Performance Java Implementation. History

SPECjAppServer2002 Statistics. Methodology. Agenda. Tuning Philosophy. More Hardware Tuning. Hardware Tuning.

Configuring Microsoft ADAM

SAP ENTERPRISE PORTAL. Scalability Study - Windows

JVM Performance Tuning with respect to Garbage Collection(GC) policies for WebSphere Application Server V6.1 - Part 1

HBase Practice At Xiaomi.

Interaction of JVM with x86, Sparc and MIPS

SAP Enterprise Portal 6.0 SP14, SAP NetWeaver 2004

Sista: Improving Cog s JIT performance. Clément Béra

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1

generate-jvm-report shows the threads, classes, memory, and loggers for a given target instance. Name Synopsis

High Performance Java Technology in a Multi-Core World

Java & Coherence Simon Cook - Sales Consultant, FMW for Financial Services

Webcenter Application Performance Tuning guide

Extreme Performance Platform for Real-Time Streaming Analytics

10/26/2017 Universal Java GC analysis tool - Java Garbage collection log analysis made easy

Compiler construction 2009

An Empirical Analysis of Java Performance Quality

Performance Profiling. Curtin University of Technology Department of Computing

MethodHandlesArrayElementGetterBench.testCreate Analysis. Copyright 2016, Oracle and/or its affiliates. All rights reserved.

Garbage collection. The Old Way. Manual labor. JVM and other platforms. By: Timo Jantunen

Chapter 4: Threads. Chapter 4: Threads

Perceptive Nolij Web. Technical Specifications. Version:

J2EE Performance Tuning. Jayesh Patel Northern Virginia Java/BEA User Group January 11 th, 2005.

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler

Optimising Multicore JVMs. Khaled Alnowaiser

JVM Troubleshooting MOOC: Troubleshooting Memory Issues in Java Applications

Java Platform, Standard Edition Java Flight Recorder Command Reference. Release 10

JDK 9/10/11 and Garbage Collection

Che-Wei Chang Department of Computer Science and Information Engineering, Chang Gung University

Concurrent Garbage Collection

Chapter 4: Threads. Operating System Concepts 9 th Edit9on

Real Time: Understanding the Trade-offs Between Determinism and Throughput

SABLEJIT: A Retargetable Just-In-Time Compiler for a Portable Virtual Machine p. 1

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues

Connecting TM1 to Various Third- Party Data Sources

Perceptive DataTransfer

High Performance Managed Languages. Martin Thompson

Performance Analysis of Java Communications with and without CORBA

Oracle Developer Studio Performance Analyzer

TIBCO BusinessEvents Extreme. System Sizing Guide. Software Release Published May 27, 2012

Exploiting the Behavior of Generational Garbage Collector

Debugging Your Production JVM TM Machine

TM1 Registration and Maintenance of Windows Services

Perceptive DataTransfer

Contents Configuring P6 and P6 Professional Cloud Connect... 5 Creating the WebLogic Environment for P6... 7

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1

Contents Configuring P Creating the WebLogic Environment for P6... 7

B.V. Patel Institute of BMC & IT, UTU 2014

Calculations that Span Dimensions

Chapter 4: Threads. Operating System Concepts. Silberschatz, Galvin and Gagne

Windows Java address space

Notes of the course - Advanced Programming. Barbara Russo

Run-time Program Management. Hwansoo Han

Do Your GC Logs Speak To You

StackVsHeap SPL/2010 SPL/20

IBM Developer Kit and Runtime Environment, Java Technology Edition Version 6. IBM SDK Java Technology Edition Version 6 Supplement

OS-caused Long JVM Pauses - Deep Dive and Solutions

Oracle JD Edwards EnterpriseOne Object Usage Tracking Performance Characterization Using JD Edwards EnterpriseOne Object Usage Tracking

Red Hat JBoss Data Grid 7.0

Transcription:

Proven Practice IBM Cognos ReportNet and the Java Heap Product(s): IBM Cognos ReportNet, IBM Cognos 8 Area of Interest: Performance

2 Copyright Copyright 2008 Cognos ULC (formerly Cognos Incorporated). Cognos ULC is an IBM Company. While every attempt has been made to ensure that the information in this document is accurate and complete, some typographical errors or technical inaccuracies may exist. Cognos does not accept responsibility for any kind of loss resulting from the use of information contained in this document. This document shows the publication date. The information contained in this document is subject to change without notice. Any improvements or changes to the information contained in this document will be documented in subsequent editions. This document contains proprietary information of Cognos. All rights are reserved. No part of this document may be copied, photocopied, reproduced, stored in a retrieval system, transmitted in any form or by any means, or translated into another language without the prior written consent of Cognos. Cognos and the Cognos logo are trademarks of Cognos ULC (formerly Cognos Incorporated) in the United States and/or other countries. IBM and the IBM logo are trademarks of International Business Machines Corporation in the United States, or other countries, or both. All other names are trademarks or registered trademarks of their respective companies. Information about Cognos products can be found at www.cognos.com This document is maintained by the Best Practices, Product and Technology team. You can send comments, suggestions, and additions to cscogpp@ca.ibm.com.

3 Contents 1 WHAT IS THE JAVA HEAP?... 4 2 WHAT IS THE JVM?... 4 3 WHERE DOES IBM COGNOS REPORTNET (CRN) USE THE JVM?... 4 4 DETERMINING THE CORRECT HEAP SETTINGS... 4 5 USING A LARGE HEAPS ON SOLARIS... 5 5.1 USEFUL WEBSITES...5 6 LIST OF JVM ARGUMENTS... 6 7 ADDITIONAL JAVA HOTSPOT ARGUMENTS... 6

4 1 What is the java heap? The heap is the area of memory in which the Java Virtual Machine (JVM) allocates new Java objects; the fast majority of the JVM's memory usage is its heap. 2 What is the JVM? Contains 2 VMs inside the binary that's executed to start up Java applications. o Client VM o Server VM Each VM is optimized according to the needs of the client and server applications. JVM's top priority is reducing startup time and minimizing the latency produced when the garbage collector reclaims memory. By default Java uses the client VM. The server VM can be selected by passing the - server command line option to the JVM on startup. o Do not assume the server VM will be faster! 3 Where does CRN use the JVM? CRN by default uses JVM that comes with JRE 1.3.1 On startup the "crn\bin\<<startup.bat>> or <<startup.sh>>" is called. The following is set o JAVA_HOME (Defaults to JRE 1.3.1 unless you have gone through the steps to configure JRE 1.4.1+ found on page 33 of the Installation and Configuration Guide) o CATALINA_OPTS (These are the heap arguements) o CATALINA_TMPDIR The "crn\tomcat4.1.27\bin\<<catalina.bat>> or <<catalina.bat>>" is called. o Starts JVM using the CATALINA_OPTS arguments o Starts Tomcat 4 Determining the correct heap settings. Basically the 32 bit Windows Max Heap (-Xms) is 1536b and the UNIX is 3g. Factors that determine best heap settings: o Operating System (32 bit or 64 bit) o Physical Memory (What is available after the OS is done) o JVM version (The older the version the fewer the options) Initial heap size (-Xms) specifies the amount of OS RAM to allocate to the java heap at the time the JVM starts up. Since CRN is a memory intensive application operating under heavy loads the initial heap is important. If JVM starts up with too little heap and is quickly pounded by users that require many object instantiations, the JVM must repeatedly increase its allocation until it reaches a sufficiently large size for the heap.

5 To avoid this from happening set the minimum heap (-Xms) and the maximum heap (-Xmx) to the same values. Make copy and open the "crn\bin\<<startup.bat>> or <<startup.sh>>" Option for machine with 1GB RAM looks like this o set CATALINA_OPTS=-Xms768m Xmx768m -XX:MaxHeapFreeRatio=70 - XX:NewSize=288m %DEBUG_OPTS% You can configure multiple CRN dispatchers on heavy weight windows machine to increase the utilization of the server. 5 Using a Large Heaps on Solaris Heaps larger than 2GB are available starting with J2SE 1.3.1. These are options that can be used to tune the use of memory by the JVM. Best values for CRN will vary and should be set by measurement. o -Xms3g -Xmx3g This example sets the minimum and maximum total heap size to 3GB. The default maximum size is 64MB, but for many server applications it makes sense to be much larger. The g suffix may be replaced by m to measure in megabytes. Ordinarily the JVM consumes as little memory as possible, starting with a heap of the minimum size specified by the -Xms flag, and adaptively growing as required up to the maximum specified by -Xmx. Setting these to the same value avoids being conservative, and will often improve startup time. o XX:+AggressiveHeap This option instructs the JVM to push memory use to the limit: the overall heap is more than 3850MB, the allocation area of each thread is 256K, the memory management policy defers collection as long as possible, and (beginning with J2SE 1.3.1_02) some GC activity is done in parallel. Because this option sets heap size, do not use the -Xms or -Xmx options in conjunction with -XX:+AggressiveHeap. Doing so will cause the options to override each other's settings for heap size. 5.1 Useful Websites http://java.sun.com/docs/hotspot/vmoptions.html http://jakarta.apache.org/tomcat/tomcat-3.2- doc/uguide/tomcat_ug.html http://publib.boulder.ibm.com/infocenter/wsphelp/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rprf_javamemory.html http://e-docs.bea.com/wls/docs61/perform/jvmtuning.html

6 6 List of JVM arguments _JVM_ARGS Environment HotSpot Option Description bound_threads -XX:+UseBoundThreads This option forces all threads to be created as bound threads. fixed_size_young_gen -XX:NewSize=<size> Disable young generation -XX:MaxNewSize=<size> for 1.3 -Xmn<size> for 1.4 resizing. To do this on HotSpot, simply set the size of the young generation to a constant. gc_stats -verbose:gc Turns on various forms of ims_concurrent inline_instrs none -XX:MaxInlineSize=<size> -XX:FreqInlineSize=<size> gc statistics gathering. Integer specifying maximum number of bytecode instructions in a method which gets inlined. Integer specifying maximum number of bytecode instructions in a frequently executed method which gets inlined. inline_print -XX:+PrintInlining Print message about inlined methods (debug only) no_parallel_gc none sync_final none yield_interval -XX:DontYieldALotInterval=<ms> (debug only) Interval in milliseconds between yields. monitor_order none 7 Additional Java HotSpot arguments Numbers can include 'm' or 'M' for megabytes, 'k' or 'K' for kilobytes, and 'g' or 'G' for gigabytes (for example, 32k is the same as 32768). Turn on a Boolean flag with -XX:+<option> and off with -XX:-<option>. Flag and Default -XX:-AllowUserSignalHandlers -XX:AltStackSize=16384 -XX:+MaxFDLimit -XX:MaxHeapFreeRatio=70 -XX:MinHeapFreeRatio=40 Description Do not complain if the application installs signal handlers (Solaris Only) Alternate signal stack size (in Kbytes, Solaris Only) Bump the number of file descriptors to max. (Solaris only) Maximum percentage of heap free after GC to avoid shrinking Minimum percentage of heap free after GC to avoid expansion

7 -XX:-UseBoundThreads -XX:-UseLWPSynchronization Bind user level threads to kernel threads (Solaris only) Use LWP-based instead of thread based synchronization. Default is on in J2SE 1.4.0 or higher. (Solaris only) -XX:+UseThreadPriorities -XX:MaxPermSize=64m -XX:-CITime -XX:-PrintTenuringDistribution -XX:TargetSurvivorRatio=50 -XX:+DisableExplicitGC Use native thread priorities Size of the Permanent Generation Time spent in JIT Compiler (1.4 only) Print tenuring age information Desired percentage of survivor space used after scavenge Disable calls to System.gc(), JVM still performs garbage collection when necessary Those flags differing per architecture/os/jvm Verison. "Flag and Default" has the default of Sparc/-server, JVM version 1.3 Flag and Default Description -XX:CompileThreshold=10000 number of method invocations/branches before (re-)compiling [10,000 -server, 1,500 -client] -XX:MaxNewSize=32m -XX:NewRatio=2 -XX:NewSize=2228224 Maximum size of new generation (in bytes) [32m sparc, 2.5m intel for 1.3, no limit for 1.4 as NewRatio is now used to determine MaxNewSize] Ratio of new/old generation sizes [sparc -server: 2, sparc -client: 4 (1.3) 8 (1.3.1+), intel: 12] Default size of new generation (in bytes) [sparc 2.125M, intel: 640k] -XX:PreBlockSpin=10 Spin count variable for use with - XX:+UseSpinning. Controls the maximum spin iterations allowed before entering operating system thread synchronization code. (as of J2SE 1.4.2, Linux only) -XX:ReservedCodeCacheSize=32m Reserved code cache size (in bytes) - maximum code cache size. [Solaris 64- bit: 1024m] -XX:SurvivorRatio=64 -XX:ThreadStackSize=512 Ratio of eden/survivor space size [Solaris: 64, Solaris: 32 (on 1.3.1 and later), Linux/Windows: 8] Thread Stack Size (in Kbytes) (0 means use default stack size) [Sparc: 512, Solaris Intel: 256, Sparc 64bit: 1024 all others 0]

8 -XX:+UseTLE (-XX:+UseTLAB in J2SE 1.4) Use thread-local object allocation [Sparc -server: true, all others: false] -XX:-UseMPSS -XX:-UseSpinning Use Multiple Page Size Support (Solaris 9 only) w/4mb pages for the heap. Do not use with ISM as this replaces the need for ISM. Enable naive spinning on Java monitor before entering operating system thread synchronizaton code. (as of J2SE 1.4.2, Linux only)