SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
Chris Bailey – IBM Java Service Architect

4th October 2012




Practical Performance
Understand and improve the performance of your application




                                                                           1




                                                             © 2012 IBM Corporation
Important Disclaimers



THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.

WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED
IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED
ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE
DIFFERENCES.

ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.

IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT
PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.

IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE
OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.

NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:

- CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR
SUPPLIERS AND/OR LICENSORS




2                         Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Introduction to the speaker



■   12 years experience developing and deploying Java SDKs




■   Recent work focus:
     – Java applications in the cloud
     – Java usability and quality
     – Debugging tools and capabilities
     – Requirements gathering
     – Highly resilient and scalable deployments




■   My contact information:
     – baileyc@uk.ibm.com
     – http://www.linkedin.com/in/chrisbaileyibm
     – http://www.slideshare.net/cnbailey/



3                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Goals of the Talk



■   Introduce a simple general methodology for performance analysis


■   Discuss the common performance bottlenecks


■   Show how to analyse a simple application




4                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Agenda



■   Approaches to performance


■   Layers of the application


■   Identifying and resolving performance issues




5                               Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Approaches to performance



■   Outside in approach
     – Start from where performance can be measured
     – Work along the activity path
     – Ideal for identified performance problems

■   Layered approach
      – “Bottom up” or “Top down”
      – Analyze and eliminate layers of the application
      – Simplify the problem as you go
      – Ideal for application health check

■   A hybrid of both approaches can often be useful




6                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Performance baseline



■   Important to have a repeatable and representative performance test


■   Measure baseline performance
     – Internal measurements affect the performance of what your measuring
     – External measurements have less impact on system performance

■   Where possible, measure multiple times
     – Variation will occur between test runs

■   Where possible, ensure consistency
     – Not just the load test that's run
     – State of machine and network can have interesting effects




7                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Page response performance benchmark: baseline

                                                                                                   Page Performance
                                                                                                         PlantsbyWebSphere

                                 20000




                                 15000
    Avg Latency (microseconds)




                                                                                                                                                                                                         Baseline

                                 10000




                                  5000




                                     0
                                                 servlet_ShoppingServlet             Shopping{1}                    Shopping_1_1                    Shopping_2_3                  Shopping_2_5
                                     PlantsByWebSphere         servlet_ShoppingServlet{2}            Shopping{4}                    Shopping_2_2                   Shopping_2_4

                                                                                                         Page URL


8                                                                     Practical Performance: Understand and Improve the Performance of Your Application                                          © 2012 IBM Corporation
A Layered Approach



■   Three layers of a deployment:
     – Infrastructure:         Machine hardware and Operating System
     – Java Runtime:           Garbage collection
     – Java Application:       Java application code

■   Each can suffer from resource constraints, typically:
     – Memory
     – CPU
     – Synchronization
     – I/O




9                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Infrastructure



■    Typical resource constraints:
       – Memory:            insufficient physical memory results in paging/swapping
       – CPU:               insufficient CPU time limits throughput of the application
       – I/O:               insufficient I/O limits throughput of the application
       – Synchronization driven by Java runtime/Java application

■    Easy to diagnose
■    Easy to resolve (relatively)


■    Note that each can also be caused by deficiencies higher up the stack!




10                             Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Infrastructure: Memory usage



■    Infrastructure uses memory for:
       – Backing the process data: OS runtime, Java runtime, Java application
       – Caching of IO: filesystem and network buffers

■    Lack of physical memory causes:
       – Reduction and removal of IO caching
       – Paging/swapping of process memory to disk


■    Paging/swapping is costly for a Java process
      – Particularly affects Garbage Collection performance
          • Paging usually occurs on Least Recently Used basis
          • All of Java heap is traversed during mark and sweep phases
          • Least Recently Used does not work well for the Java heap




11                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Infrastructure: CPU usage



■    Insufficient CPU time availability will reduce performance


■    Can occur periodically:
      – Cron Jobs running batch applications
      – Database backups

■    Or during periods of high load:
      – System becomes CPU bound, limiting performance




12                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Detecting infrastructure issues



■    Detect using Operating System level tools


■    Memory on Windows:
      – Paging:     using “perfmon” with “Process” counter for “Page Faults/sec”
      – File Cache: using “perfmon” with “Memory” counter for “System Cache Resident Bytes”

■    CPU on Windows:
      – Per process: using “perfmon” with “Process” counter for “% Processor Time”
      – Per machine: using “perfmon” with “Processor” counter for “% Processor Time”

■    IO on Windows:
       – Network:   using “perfmon” with “Network Interface” counter for “Output Queue Length”
       – Disk:      using “perfmon” with “Physical Disk” counter for “Current Disk Queue Length”




13                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Paging in perfmon




14                  Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Resolving infrastructure issues



■    Add more physical resources to the process
      – Assign more to the: Machine, Guest OS, LPAR, Zone, etc



■    Reduce the physical resource requirements
      – Reduce the application footprint
      – Reduce the application CPU usage
      – Reduce the IO




15                          Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Page response performance benchmark: Baseline

                                                                                                Page Performance
                                                                                                      PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                      Baseline

                              10000




                               5000




                                  0
                                              servlet_ShoppingServlet             Shopping{1}                    Shopping_1_1                    Shopping_2_3                  Shopping_2_5
                                  PlantsByWebSphere         servlet_ShoppingServlet{2}            Shopping{4}                    Shopping_2_2                   Shopping_2_4

                                                                                                      Page URL


16                                                                 Practical Performance: Understand and Improve the Performance of Your Application                                          © 2012 IBM Corporation
Page response performance benchmark: Paging removed

                                                                                                 Page Performance
                                                                                                       PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                       Baseline
                                                                                                                                                                                                        Baseline
                                                                                                                                                                                                       No Paging
                              10000




                               5000




                                  0
                                              servlet_ShoppingServlet
                                              servlet_ShoppingServlet             Shopping{1}
                                                                                   Shopping{1}                   Shopping_1_1
                                                                                                                  Shopping_1_1                   Shopping_2_3
                                                                                                                                                  Shopping_2_3                   Shopping_2_5
                                                                                                                                                                                   Shopping_2_5
                                  PlantsByWebSphere         servlet_ShoppingServlet{2}
                                                            servlet_ShoppingServlet{2}            Shopping{4}
                                                                                                   Shopping{4}                   Shopping_2_2
                                                                                                                                  Shopping_2_2                   Shopping_2_4
                                                                                                                                                                  Shopping_2_4

                                                                                                      Page URL
                                                                                                       Page URL


17                                                                  Practical Performance: Understand and Improve the Performance of Your Application                                             © 2012 IBM Corporation
Effect on page performance



      – PlantsByWebSphere                            1.7%
      – servlet_ShoppingServlet{2}                   22.8%
      – servlet_ShoppingServlet                      0.3%
      – Shopping{1}                                  0.4%
      – Shopping{4}                                  21.4%
      – Shopping_1_1                                 17.9%
      – Shopping_2_2                                 2.8%
      – Shopping_2_3                                 16.7%
      – Shopping_2_4                                 24.1%
      – Shopping_2_5                                 13.8%


■    Improvement in page performance of 0.3% to 24.1%
       – Without outliers: 0.4% to 22.8%

■    Biggest gains are on most performant pages. Total gain is only ~4%
       – Relatively small effect on overall page performance




18                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Garbage Collection Pause Times




19               Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Garbage Collection Pause Times




20               Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Effect on Garbage Collection Pause Times



■    Reduction in:
      – Maximum pause time:                38%
      – Average pause time:                13%
      – Time spent in GC                   11%

■    Large effect on GC performance, particularly pause times




21                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Java runtime



■    Typical resource constraints:
       – Memory:            insufficient Java heap results in OutOfMemory or high GC overhead
       – CPU                garbage collection overhead, or driven by Java application
       – Synchronization driven by Java application
       – IO                 driven by Java application

■    Easy to diagnose
■    Easy to resolve (relatively)




22                             Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Java runtime memory


■    Java runtime uses memory for:
       – Java Heap(s), Java Virtual Machine (JVM), “Native” heap, OS and C-language runtime
           0 GB                                                         2 GB                                             4 GB
                                                                                                               -Xmx

                 OS and C-Runtime     JVM                                                               Java Heap(s)

                              0x40000000                                                                 0xC0000000
           0x0                                                     0x80000000                                          0xFFFFFFFF


■    Java heap(s) are managed using Garbage Collection
■    Other memory usage can be indirectly driven by application usage and garbage collection
       – eg. Java Threads




                                        Java Heap                                        Native Heap
23                              Practical Performance: Understand and Improve the Performance of Your Application               © 2012 IBM Corporation
Java runtime problems



■    Insufficient Java heap memory leads to:
       – OutOfMemoryError due to Java heap exhaustion
       – Garbage Collection running excessively, increasing CPU and affecting performance

■    Insufficient non-Java (“native”) heap leads to:
       – OutOfMemoryError due to process address space exhaustion
       – Driver for Java heap garbage collection (DirectByteBuffer cleaners)




24                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Detecting Java runtime problems



■    Log and trace analysis:
       – “Native” heap:      OS level logs (ps, svmon, perfmon)
       – Java heap:          verbose:gc output

      – Post processed using:
        IBM Monitoring and Diagnostic Tools for Java - Garbage Collection and Memory Visualizer
        (GCMV)

■    Live monitoring:
       – “Native” heap      IBM Monitoring and Diagnostic Tools for Java - Health Center
       – Java heap:         IBM Monitoring and Diagnostic Tools for Java - Health Center
                            Visual VM, Mission Control




25                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Too Frequent Garbage Collection




26                Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Garbage collection performance




                                                                                                                      Heap Size



                              Too Frequent Garbage Collection
     Memory




                                                                                                                Heap Occupancy




                               Long Garbage Collection Cycles



                                                             Time
27                JavaOne Session 23401 – The Hidden World of Your Java Application and What its Really Doing      © 2011 IBM Corporation
Resolving Java runtime problems



■    Add more resources to the Java runtime
      – Java heap:          Increase Java heap size
      – Native heap:        Move to 64bit or reduce Java heap size

■    Reduce the memory requirements
      – Reduce the Java application footprint




28                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Increased Java heap size




29                Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Effect on Garbage Collection Pause Times



■    Reduction in:
      – Time spent in GC                    59%

■    However this is only 4.84% of total time




30                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Page response performance benchmark: Baseline

                                                                                                Page Performance
                                                                                                      PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                      Baseline

                              10000




                               5000




                                  0
                                              servlet_ShoppingServlet             Shopping{1}                    Shopping_1_1                    Shopping_2_3                  Shopping_2_5
                                  PlantsByWebSphere         servlet_ShoppingServlet{2}            Shopping{4}                    Shopping_2_2                   Shopping_2_4

                                                                                                      Page URL


31                                                                 Practical Performance: Understand and Improve the Performance of Your Application                                          © 2012 IBM Corporation
Page response performance benchmark: Paging removed

                                                                                                 Page Performance
                                                                                                       PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                       Baseline
                                                                                                                                                                                                        Baseline
                                                                                                                                                                                                       No Paging
                              10000




                               5000




                                  0
                                              servlet_ShoppingServlet
                                              servlet_ShoppingServlet             Shopping{1}
                                                                                   Shopping{1}                   Shopping_1_1
                                                                                                                  Shopping_1_1                   Shopping_2_3
                                                                                                                                                  Shopping_2_3                   Shopping_2_5
                                                                                                                                                                                   Shopping_2_5
                                  PlantsByWebSphere         servlet_ShoppingServlet{2}
                                                            servlet_ShoppingServlet{2}            Shopping{4}
                                                                                                   Shopping{4}                   Shopping_2_2
                                                                                                                                  Shopping_2_2                   Shopping_2_4
                                                                                                                                                                  Shopping_2_4

                                                                                                      Page URL
                                                                                                       Page URL


32                                                                  Practical Performance: Understand and Improve the Performance of Your Application                                             © 2012 IBM Corporation
Page response performance benchmark: Java Heap size increased

                                                                                                 Page Performance
                                                                                                       PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                Baseline
                                                                                                                                                                                                No Paging
                              10000                                                                                                                                                             Bigger Heap




                               5000




                                  0
                                              servlet_ShoppingServlet            Shopping{1}                    Shopping_1_1                   Shopping_2_3                  Shopping_2_5
                                  PlantsByWebSphere        servlet_ShoppingServlet{2}            Shopping{4}                   Shopping_2_2                   Shopping_2_4

                                                                                                    Page URL


33                                                                  Practical Performance: Understand and Improve the Performance of Your Application                                       © 2012 IBM Corporation
Page performance improvements



      – PlantsByWebSphere                             0.4%
      – servlet_ShoppingServlet                       0.0%
      – servlet_ShoppingServlet{2}                    33.2%
      – Shopping{1}                                   +0.6%
      – Shopping{4}                                   4.5%
      – Shopping_1_1                                  2.9%
      – Shopping_2_2                                  0.1%
      – Shopping_2_3                                  2.1%
      – Shopping_2_4                                  14.2%
      – Shopping_2_5                                  8.2%


■    Improvement in page performance of -0.6% to 33.2%
       – Without outliers: 0.0% to 14.2%

■    Total gain is only ~4%
       – Relatively small effect on overall page performance




34                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Java application



■    Typical resource constraints:
       – Memory:            insufficient caching affects application throughput and responsiveness
       – CPU:               insufficient threading causes limits on scalability
       – Synchronsation: synchronized resources limits scalability and throughput of the application
       – I/O:               blocking on I/O limits throughput and responsiveness

■    Hard to diagnose
■    Can be expensive (or impossible!) to resolve




35                           Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Java application CPU usage



■    High CPU usage by Java methods highlight areas of potential optimization
       – Code is being invoked more than it needs to be
          • Easily done with event driven models
       – An algorithm is not the most efficient
          • Easily done if performance is not the focus at development time

■    Fixing CPU bound applications requires knowledge of what code is being run
       – Identify methods which are suitable for optimisation
           • Optimising methods which the application doesn’t spend time in is a waste of your time
       – Identify methods where more time is being spent that you expect
           • “Why is so much of time being spent in this trivial method?”




36                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Java application synchronization



■    Throughput does not increase linearly with load


■    At limit of throughput the CPU is still low
       – Inability to scale
       – Not all CPU can be utilized
       – Limit on throughput and responsiveness


■    Bottleneck where threads need to synchronize with each other for application correctness
      – Caused by large numbers of threads requiring synchronized resource at the same time
      – Caused by long hold time by thread that owns resource
      – Or a mixture of both




37                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Health Center: application method CPU usage




38                Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Health Center: application synchronization




39                 Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
ShoppingServlet.deliberateSlowMethod()



     private void deliberateSlowMethod() {

         //   ----------------------------------------------------------------
         //   User clicked on the Tulips, let's tip toe through a
         //   slow method
         //   ----------------------------------------------------------------

         System.out.println("==> STARTING SLOW METHOD");

         long timestamp = System.currentTimeMillis();
         long target = timestamp + SLOWTIME;

         System.out.println("timestamp="+timestamp);
         System.out.println("resume at="+target);
         while(timestamp < target) {

              timestamp = System.currentTimeMillis();

         }

         System.out.println("==> ENDING SLOW METHOD");
     }
40                     Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Page response performance benchmark: Baseline

                                                                                                Page Performance
                                                                                                      PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                      Baseline

                              10000




                               5000




                                  0
                                              servlet_ShoppingServlet             Shopping{1}                    Shopping_1_1                    Shopping_2_3                  Shopping_2_5
                                  PlantsByWebSphere         servlet_ShoppingServlet{2}            Shopping{4}                    Shopping_2_2                   Shopping_2_4

                                                                                                      Page URL


41                                                                 Practical Performance: Understand and Improve the Performance of Your Application                                          © 2012 IBM Corporation
Page response performance benchmark: Paging removed

                                                                                                 Page Performance
                                                                                                       PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                       Baseline
                                                                                                                                                                                                        Baseline
                                                                                                                                                                                                       No Paging
                              10000




                               5000




                                  0
                                              servlet_ShoppingServlet
                                              servlet_ShoppingServlet             Shopping{1}
                                                                                   Shopping{1}                   Shopping_1_1
                                                                                                                  Shopping_1_1                   Shopping_2_3
                                                                                                                                                  Shopping_2_3                   Shopping_2_5
                                                                                                                                                                                   Shopping_2_5
                                  PlantsByWebSphere         servlet_ShoppingServlet{2}
                                                            servlet_ShoppingServlet{2}            Shopping{4}
                                                                                                   Shopping{4}                   Shopping_2_2
                                                                                                                                  Shopping_2_2                   Shopping_2_4
                                                                                                                                                                  Shopping_2_4

                                                                                                      Page URL
                                                                                                       Page URL


42                                                                  Practical Performance: Understand and Improve the Performance of Your Application                                             © 2012 IBM Corporation
Page response performance benchmark: Java Heap size increased

                                                                                                 Page Performance
                                                                                                       PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                Baseline
                                                                                                                                                                                                No Paging
                              10000                                                                                                                                                             Bigger Heap




                               5000




                                  0
                                              servlet_ShoppingServlet            Shopping{1}                    Shopping_1_1                   Shopping_2_3                  Shopping_2_5
                                  PlantsByWebSphere        servlet_ShoppingServlet{2}            Shopping{4}                   Shopping_2_2                   Shopping_2_4

                                                                                                    Page URL


43                                                                  Practical Performance: Understand and Improve the Performance of Your Application                                       © 2012 IBM Corporation
Page response performance benchmark: deliberateSlowMethod() changed

                                                                                                 Page Performance
                                                                                                       PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                Baseline
                                                                                                                                                                                                No Paging
                              10000                                                                                                                                                             Bigger Heap
                                                                                                                                                                                                App Fix




                               5000




                                  0
                                              servlet_ShoppingServlet            Shopping{1}                    Shopping_1_1                   Shopping_2_3                  Shopping_2_5
                                  PlantsByWebSphere        servlet_ShoppingServlet{2}            Shopping{4}                   Shopping_2_2                   Shopping_2_4

                                                                                                    Page URL


44                                                                  Practical Performance: Understand and Improve the Performance of Your Application                                       © 2012 IBM Corporation
Page performance improvements



■    servlet_ShoppingServlet                 80.8%                        5x improvement
■    Shopping{1}                             94.3%                        20x improvement




■    Improvement in page performance of 80 and 95%
       – 5x and 20x improvement for affected pages

■    Total gain of 48%!




45                             Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Health Center: application method CPU usage




46                Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Health Center: application synchronization




47                 Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Summary



■    Importance of:
       – Repeatable benchmark
       – Incremental measurements as changes are made
       – Repeated testing and verification


■    Tools are available to help you see what's going on:
      – Garbage Collection and Memory Visualizer (all vendors)
      – HealthCenter                                  (IBM only)
      – Other profilers (eg. YourKit)                 (all vendors)
      – Memory Analyzer                               (all vendors)




48                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Page response performance benchmark: Summary

                                                                                                 Page Performance
                                                                                                      PlantsbyWebSphere

                              20000




                              15000
 Avg Latency (microseconds)




                                                                                                                                                                                                Baseline
                                                                                                                                                                                                No Paging
                              10000                                                                                                                                                             Bigger Heap
                                                                                                                                                                                                App Fix




                               5000




                                  0
                                              servlet_ShoppingServlet            Shopping{1}                   Shopping_1_1                    Shopping_2_3                  Shopping_2_5
                                  PlantsByWebSphere        servlet_ShoppingServlet{2}            Shopping{4}                   Shopping_2_2                   Shopping_2_4

                                                                                                    Page URL


49                                                                 Practical Performance: Understand and Improve the Performance of Your Application                                        © 2012 IBM Corporation
Summary



■    Infrastructure resources affect performance
       – Paging and Garbage Collection much less than you might expect
       – However, beware of CPU “starvation” from other processes!

■    Vast majority of performance gains are in the application!




50                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
References



■    Get Products and Technologies:
      – IBM Monitoring and Diagnostic Tools for Java:
          • https://www.ibm.com/developerworks/java/jdk/tools/

■    Learn:
      – Health Center InfoCenter:
          • http://publib.boulder.ibm.com/infocenter/hctool/v1r0/index.jsp
■    Discuss:
      – IBM on Troubleshooting Java Applications Blog:
          • https://www.ibm.com/developerworks/mydeveloperworks/blogs/troubleshootingjava/
      – Health Center Forum:
          • http://www.ibm.com/developerworks/forums/forum.jspa?forumID=1461
      – IBM Java Runtimes and SDKs Forum:
          • http://www.ibm.com/developerworks/forums/forum.jspa?forumID=367&start=0




51                            Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation
Copyright and Trademarks



© IBM Corporation 2012. All Rights Reserved.


IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business
Machines Corp., and registered in many jurisdictions worldwide.


Other product and service names might be trademarks of IBM or other companies.


A current list of IBM trademarks is available on the Web – see the IBM “Copyright and trademark
information” page at URL: www.ibm.com/legal/copytrade.shtml




52                        Practical Performance: Understand and Improve the Performance of Your Application   © 2012 IBM Corporation

Weitere ähnliche Inhalte

Was ist angesagt?

The Best Storage For V Mware Environments Customer Presentation Jul201
The Best Storage For V Mware Environments Customer Presentation Jul201The Best Storage For V Mware Environments Customer Presentation Jul201
The Best Storage For V Mware Environments Customer Presentation Jul201Michael Hudak
 
Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Dev_Events
 
The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6Jukka Zitting
 
Scale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for EhchacheScale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for EhchacheColdFusionConference
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Arun Gupta
 
Scaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem SessionScaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem SessionMichael Marth
 
Developing High Performance and Scalable ColdFusion Application Using Terraco...
Developing High Performance and Scalable ColdFusion Application Using Terraco...Developing High Performance and Scalable ColdFusion Application Using Terraco...
Developing High Performance and Scalable ColdFusion Application Using Terraco...ColdFusionConference
 
Master VMware Performance and Capacity Management
Master VMware Performance and Capacity ManagementMaster VMware Performance and Capacity Management
Master VMware Performance and Capacity ManagementIwan Rahabok
 
CIRCUIT 2015 - Monitoring AEM
CIRCUIT 2015 - Monitoring AEMCIRCUIT 2015 - Monitoring AEM
CIRCUIT 2015 - Monitoring AEMICF CIRCUIT
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Arun Gupta
 
CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013Andrew Khoury
 
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...Sharon James
 
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application ClusteringPiyush Katariya
 
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski buildacloud
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination ExtRohit Kelapure
 
OTM in the Cloud - OTM SIG 2012
OTM in the Cloud - OTM SIG 2012OTM in the Cloud - OTM SIG 2012
OTM in the Cloud - OTM SIG 2012MavenWire
 
Building vSphere Perf Monitoring Tools
Building vSphere Perf Monitoring ToolsBuilding vSphere Perf Monitoring Tools
Building vSphere Perf Monitoring ToolsPablo Roesch
 
Integrating Veeam Backup with NimbleStorage
Integrating Veeam Backup with NimbleStorageIntegrating Veeam Backup with NimbleStorage
Integrating Veeam Backup with NimbleStorageJorge de la Cruz
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedInYevgeniy Brikman
 

Was ist angesagt? (20)

The Best Storage For V Mware Environments Customer Presentation Jul201
The Best Storage For V Mware Environments Customer Presentation Jul201The Best Storage For V Mware Environments Customer Presentation Jul201
The Best Storage For V Mware Environments Customer Presentation Jul201
 
Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8
 
S903 palla
S903 pallaS903 palla
S903 palla
 
The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6
 
Scale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for EhchacheScale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for Ehchache
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010
 
Scaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem SessionScaling AEM (CQ5) Gem Session
Scaling AEM (CQ5) Gem Session
 
Developing High Performance and Scalable ColdFusion Application Using Terraco...
Developing High Performance and Scalable ColdFusion Application Using Terraco...Developing High Performance and Scalable ColdFusion Application Using Terraco...
Developing High Performance and Scalable ColdFusion Application Using Terraco...
 
Master VMware Performance and Capacity Management
Master VMware Performance and Capacity ManagementMaster VMware Performance and Capacity Management
Master VMware Performance and Capacity Management
 
CIRCUIT 2015 - Monitoring AEM
CIRCUIT 2015 - Monitoring AEMCIRCUIT 2015 - Monitoring AEM
CIRCUIT 2015 - Monitoring AEM
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
 
CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013CQ5.x Maintenance Webinar 2013
CQ5.x Maintenance Webinar 2013
 
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
 
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application Clustering
 
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination Ext
 
OTM in the Cloud - OTM SIG 2012
OTM in the Cloud - OTM SIG 2012OTM in the Cloud - OTM SIG 2012
OTM in the Cloud - OTM SIG 2012
 
Building vSphere Perf Monitoring Tools
Building vSphere Perf Monitoring ToolsBuilding vSphere Perf Monitoring Tools
Building vSphere Perf Monitoring Tools
 
Integrating Veeam Backup with NimbleStorage
Integrating Veeam Backup with NimbleStorageIntegrating Veeam Backup with NimbleStorage
Integrating Veeam Backup with NimbleStorage
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
 

Andere mochten auch

Software Archaeology
Software ArchaeologySoftware Archaeology
Software ArchaeologyChris Bailey
 
Once upon a time: Why operations mythology matters
Once upon a time: Why operations mythology mattersOnce upon a time: Why operations mythology matters
Once upon a time: Why operations mythology mattersJames Turnbull
 
Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016James Turnbull
 
Developing Good Operations Tools
Developing Good Operations ToolsDeveloping Good Operations Tools
Developing Good Operations ToolsJames Turnbull
 
Software archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureSoftware archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureJames Turnbull
 
O'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsO'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsChris Bailey
 
Playgrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFPlaygrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFChris Bailey
 
Software Archaeology by Globant
Software Archaeology by GlobantSoftware Archaeology by Globant
Software Archaeology by GlobantGlobant
 
Globant Bootcamps - Latam
Globant Bootcamps   - LatamGlobant Bootcamps   - Latam
Globant Bootcamps - LatamGlobant
 

Andere mochten auch (9)

Software Archaeology
Software ArchaeologySoftware Archaeology
Software Archaeology
 
Once upon a time: Why operations mythology matters
Once upon a time: Why operations mythology mattersOnce upon a time: Why operations mythology matters
Once upon a time: Why operations mythology matters
 
Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016
 
Developing Good Operations Tools
Developing Good Operations ToolsDeveloping Good Operations Tools
Developing Good Operations Tools
 
Software archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureSoftware archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and culture
 
O'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsO'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud Economics
 
Playgrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFPlaygrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFF
 
Software Archaeology by Globant
Software Archaeology by GlobantSoftware Archaeology by Globant
Software Archaeology by Globant
 
Globant Bootcamps - Latam
Globant Bootcamps   - LatamGlobant Bootcamps   - Latam
Globant Bootcamps - Latam
 

Ähnlich wie Practical Performance: Understand and improve the performance of your application

E g innovations overview
E g innovations overviewE g innovations overview
E g innovations overviewNuno Alves
 
Jee performance tuning existing applications
Jee performance tuning existing applicationsJee performance tuning existing applications
Jee performance tuning existing applicationsShivnarayan Varma
 
SolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds
 
WebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination FeaturesWebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination FeaturesChris Bailey
 
IBM Impact Session 2351 hybrid apps
IBM Impact Session 2351 hybrid appsIBM Impact Session 2351 hybrid apps
IBM Impact Session 2351 hybrid appsnick_garrod
 
Impact2014 session # 1523 performance optimization using ibm java on z and w...
Impact2014  session # 1523 performance optimization using ibm java on z and w...Impact2014  session # 1523 performance optimization using ibm java on z and w...
Impact2014 session # 1523 performance optimization using ibm java on z and w...Elena Nanos
 
AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...Codemotion
 
Connecticut CMG - Demystifying Oracle database capacity management with wor...
Connecticut CMG - Demystifying Oracle database  capacity management with  wor...Connecticut CMG - Demystifying Oracle database  capacity management with  wor...
Connecticut CMG - Demystifying Oracle database capacity management with wor...Renato Bonomini
 
XPages is Workflow's new best friend
XPages is Workflow's new best friendXPages is Workflow's new best friend
XPages is Workflow's new best friendStephan H. Wissel
 
Virtualization aware Java VM
Virtualization aware Java VMVirtualization aware Java VM
Virtualization aware Java VMTim Ellison
 
Automatic Undo for Cloud Management via AI Planning
Automatic Undo for Cloud Management via AI PlanningAutomatic Undo for Cloud Management via AI Planning
Automatic Undo for Cloud Management via AI PlanningHiroshi Wada
 
ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101Wes Morgan
 
设计开发实效 Web2.0 应用程序
设计开发实效 Web2.0 应用程序设计开发实效 Web2.0 应用程序
设计开发实效 Web2.0 应用程序Shawn Zhu
 
JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...
JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...
JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...0xdaryl
 
Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2
Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2
Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2Vladimir Bacvanski, PhD
 
A301 ctu madrid2016-monitoring
A301 ctu madrid2016-monitoringA301 ctu madrid2016-monitoring
A301 ctu madrid2016-monitoringMichael Dawson
 
Nonfunctional Testing: Examine the Other Side of the Coin
Nonfunctional Testing: Examine the Other Side of the CoinNonfunctional Testing: Examine the Other Side of the Coin
Nonfunctional Testing: Examine the Other Side of the CoinTechWell
 
JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)Graeme_IBM
 
Predicting When Your Applications Will Go Off the Rails! Managing DB2 Appli...
Predicting When Your Applications Will Go Off the Rails!  Managing DB2 Appli...Predicting When Your Applications Will Go Off the Rails!  Managing DB2 Appli...
Predicting When Your Applications Will Go Off the Rails! Managing DB2 Appli...CA Technologies
 

Ähnlich wie Practical Performance: Understand and improve the performance of your application (20)

E g innovations overview
E g innovations overviewE g innovations overview
E g innovations overview
 
Jee performance tuning existing applications
Jee performance tuning existing applicationsJee performance tuning existing applications
Jee performance tuning existing applications
 
SolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds Scalability for the Enterprise
SolarWinds Scalability for the Enterprise
 
WebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination FeaturesWebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination Features
 
IBM Impact Session 2351 hybrid apps
IBM Impact Session 2351 hybrid appsIBM Impact Session 2351 hybrid apps
IBM Impact Session 2351 hybrid apps
 
Impact2014 session # 1523 performance optimization using ibm java on z and w...
Impact2014  session # 1523 performance optimization using ibm java on z and w...Impact2014  session # 1523 performance optimization using ibm java on z and w...
Impact2014 session # 1523 performance optimization using ibm java on z and w...
 
AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...
 
Connecticut CMG - Demystifying Oracle database capacity management with wor...
Connecticut CMG - Demystifying Oracle database  capacity management with  wor...Connecticut CMG - Demystifying Oracle database  capacity management with  wor...
Connecticut CMG - Demystifying Oracle database capacity management with wor...
 
XPages is Workflow's new best friend
XPages is Workflow's new best friendXPages is Workflow's new best friend
XPages is Workflow's new best friend
 
Virtualization aware Java VM
Virtualization aware Java VMVirtualization aware Java VM
Virtualization aware Java VM
 
Web 2.0 Development with IBM DB2
Web 2.0 Development with IBM DB2Web 2.0 Development with IBM DB2
Web 2.0 Development with IBM DB2
 
Automatic Undo for Cloud Management via AI Planning
Automatic Undo for Cloud Management via AI PlanningAutomatic Undo for Cloud Management via AI Planning
Automatic Undo for Cloud Management via AI Planning
 
ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101
 
设计开发实效 Web2.0 应用程序
设计开发实效 Web2.0 应用程序设计开发实效 Web2.0 应用程序
设计开发实效 Web2.0 应用程序
 
JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...
JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...
JavaOne 2013 CON7370: Java Interprocess Communication Challenges in Low-Laten...
 
Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2
Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2
Revolutionizing the Data Abstraction Layer with IBM Optim pureQuery and DB2
 
A301 ctu madrid2016-monitoring
A301 ctu madrid2016-monitoringA301 ctu madrid2016-monitoring
A301 ctu madrid2016-monitoring
 
Nonfunctional Testing: Examine the Other Side of the Coin
Nonfunctional Testing: Examine the Other Side of the CoinNonfunctional Testing: Examine the Other Side of the Coin
Nonfunctional Testing: Examine the Other Side of the Coin
 
JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)
 
Predicting When Your Applications Will Go Off the Rails! Managing DB2 Appli...
Predicting When Your Applications Will Go Off the Rails!  Managing DB2 Appli...Predicting When Your Applications Will Go Off the Rails!  Managing DB2 Appli...
Predicting When Your Applications Will Go Off the Rails! Managing DB2 Appli...
 

Mehr von Chris Bailey

NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets FrameworksChris Bailey
 
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSVoxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSChris Bailey
 
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldSilicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldChris Bailey
 
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedFaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedChris Bailey
 
AltConf 2019: Server-Side Swift State of the Union
AltConf 2019:  Server-Side Swift State of the UnionAltConf 2019:  Server-Side Swift State of the Union
AltConf 2019: Server-Side Swift State of the UnionChris Bailey
 
Server-side Swift with Swagger
Server-side Swift with SwaggerServer-side Swift with Swagger
Server-side Swift with SwaggerChris Bailey
 
Node Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsNode Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsChris Bailey
 
Index - BFFs vs GraphQL
Index - BFFs vs GraphQLIndex - BFFs vs GraphQL
Index - BFFs vs GraphQLChris Bailey
 
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesSwift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesChris Bailey
 
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftSwift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftChris Bailey
 
Try!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftTry!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftChris Bailey
 
Swift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionSwift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionChris Bailey
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesChris Bailey
 
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftIBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftChris Bailey
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesChris Bailey
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftChris Bailey
 
AltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesAltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesChris Bailey
 
InterConnect: Server Side Swift for Java Developers
InterConnect:  Server Side Swift for Java DevelopersInterConnect:  Server Side Swift for Java Developers
InterConnect: Server Side Swift for Java DevelopersChris Bailey
 
InterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenInterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenChris Bailey
 
Swift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the ServerSwift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the ServerChris Bailey
 

Mehr von Chris Bailey (20)

NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets Frameworks
 
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSVoxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
 
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldSilicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
 
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedFaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
 
AltConf 2019: Server-Side Swift State of the Union
AltConf 2019:  Server-Side Swift State of the UnionAltConf 2019:  Server-Side Swift State of the Union
AltConf 2019: Server-Side Swift State of the Union
 
Server-side Swift with Swagger
Server-side Swift with SwaggerServer-side Swift with Swagger
Server-side Swift with Swagger
 
Node Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsNode Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.js
 
Index - BFFs vs GraphQL
Index - BFFs vs GraphQLIndex - BFFs vs GraphQL
Index - BFFs vs GraphQL
 
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesSwift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift Microservices
 
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftSwift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack Swift
 
Try!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftTry!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is Swift
 
Swift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionSwift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the Union
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
 
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftIBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and Swift
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) Swift
 
AltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesAltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 Minutes
 
InterConnect: Server Side Swift for Java Developers
InterConnect:  Server Side Swift for Java DevelopersInterConnect:  Server Side Swift for Java Developers
InterConnect: Server Side Swift for Java Developers
 
InterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenInterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and When
 
Swift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the ServerSwift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the Server
 

Kürzlich hochgeladen

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Kürzlich hochgeladen (20)

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Practical Performance: Understand and improve the performance of your application

  • 1. Chris Bailey – IBM Java Service Architect 4th October 2012 Practical Performance Understand and improve the performance of your application 1 © 2012 IBM Corporation
  • 2. Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES. ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE. IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS 2 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 3. Introduction to the speaker ■ 12 years experience developing and deploying Java SDKs ■ Recent work focus: – Java applications in the cloud – Java usability and quality – Debugging tools and capabilities – Requirements gathering – Highly resilient and scalable deployments ■ My contact information: – baileyc@uk.ibm.com – http://www.linkedin.com/in/chrisbaileyibm – http://www.slideshare.net/cnbailey/ 3 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 4. Goals of the Talk ■ Introduce a simple general methodology for performance analysis ■ Discuss the common performance bottlenecks ■ Show how to analyse a simple application 4 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 5. Agenda ■ Approaches to performance ■ Layers of the application ■ Identifying and resolving performance issues 5 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 6. Approaches to performance ■ Outside in approach – Start from where performance can be measured – Work along the activity path – Ideal for identified performance problems ■ Layered approach – “Bottom up” or “Top down” – Analyze and eliminate layers of the application – Simplify the problem as you go – Ideal for application health check ■ A hybrid of both approaches can often be useful 6 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 7. Performance baseline ■ Important to have a repeatable and representative performance test ■ Measure baseline performance – Internal measurements affect the performance of what your measuring – External measurements have less impact on system performance ■ Where possible, measure multiple times – Variation will occur between test runs ■ Where possible, ensure consistency – Not just the load test that's run – State of machine and network can have interesting effects 7 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 8. Page response performance benchmark: baseline Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline 10000 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 8 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 9. A Layered Approach ■ Three layers of a deployment: – Infrastructure: Machine hardware and Operating System – Java Runtime: Garbage collection – Java Application: Java application code ■ Each can suffer from resource constraints, typically: – Memory – CPU – Synchronization – I/O 9 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 10. Infrastructure ■ Typical resource constraints: – Memory: insufficient physical memory results in paging/swapping – CPU: insufficient CPU time limits throughput of the application – I/O: insufficient I/O limits throughput of the application – Synchronization driven by Java runtime/Java application ■ Easy to diagnose ■ Easy to resolve (relatively) ■ Note that each can also be caused by deficiencies higher up the stack! 10 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 11. Infrastructure: Memory usage ■ Infrastructure uses memory for: – Backing the process data: OS runtime, Java runtime, Java application – Caching of IO: filesystem and network buffers ■ Lack of physical memory causes: – Reduction and removal of IO caching – Paging/swapping of process memory to disk ■ Paging/swapping is costly for a Java process – Particularly affects Garbage Collection performance • Paging usually occurs on Least Recently Used basis • All of Java heap is traversed during mark and sweep phases • Least Recently Used does not work well for the Java heap 11 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 12. Infrastructure: CPU usage ■ Insufficient CPU time availability will reduce performance ■ Can occur periodically: – Cron Jobs running batch applications – Database backups ■ Or during periods of high load: – System becomes CPU bound, limiting performance 12 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 13. Detecting infrastructure issues ■ Detect using Operating System level tools ■ Memory on Windows: – Paging: using “perfmon” with “Process” counter for “Page Faults/sec” – File Cache: using “perfmon” with “Memory” counter for “System Cache Resident Bytes” ■ CPU on Windows: – Per process: using “perfmon” with “Process” counter for “% Processor Time” – Per machine: using “perfmon” with “Processor” counter for “% Processor Time” ■ IO on Windows: – Network: using “perfmon” with “Network Interface” counter for “Output Queue Length” – Disk: using “perfmon” with “Physical Disk” counter for “Current Disk Queue Length” 13 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 14. Paging in perfmon 14 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 15. Resolving infrastructure issues ■ Add more physical resources to the process – Assign more to the: Machine, Guest OS, LPAR, Zone, etc ■ Reduce the physical resource requirements – Reduce the application footprint – Reduce the application CPU usage – Reduce the IO 15 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 16. Page response performance benchmark: Baseline Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline 10000 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 16 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 17. Page response performance benchmark: Paging removed Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline Baseline No Paging 10000 5000 0 servlet_ShoppingServlet servlet_ShoppingServlet Shopping{1} Shopping{1} Shopping_1_1 Shopping_1_1 Shopping_2_3 Shopping_2_3 Shopping_2_5 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} servlet_ShoppingServlet{2} Shopping{4} Shopping{4} Shopping_2_2 Shopping_2_2 Shopping_2_4 Shopping_2_4 Page URL Page URL 17 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 18. Effect on page performance – PlantsByWebSphere 1.7% – servlet_ShoppingServlet{2} 22.8% – servlet_ShoppingServlet 0.3% – Shopping{1} 0.4% – Shopping{4} 21.4% – Shopping_1_1 17.9% – Shopping_2_2 2.8% – Shopping_2_3 16.7% – Shopping_2_4 24.1% – Shopping_2_5 13.8% ■ Improvement in page performance of 0.3% to 24.1% – Without outliers: 0.4% to 22.8% ■ Biggest gains are on most performant pages. Total gain is only ~4% – Relatively small effect on overall page performance 18 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 19. Garbage Collection Pause Times 19 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 20. Garbage Collection Pause Times 20 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 21. Effect on Garbage Collection Pause Times ■ Reduction in: – Maximum pause time: 38% – Average pause time: 13% – Time spent in GC 11% ■ Large effect on GC performance, particularly pause times 21 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 22. Java runtime ■ Typical resource constraints: – Memory: insufficient Java heap results in OutOfMemory or high GC overhead – CPU garbage collection overhead, or driven by Java application – Synchronization driven by Java application – IO driven by Java application ■ Easy to diagnose ■ Easy to resolve (relatively) 22 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 23. Java runtime memory ■ Java runtime uses memory for: – Java Heap(s), Java Virtual Machine (JVM), “Native” heap, OS and C-language runtime 0 GB 2 GB 4 GB -Xmx OS and C-Runtime JVM Java Heap(s) 0x40000000 0xC0000000 0x0 0x80000000 0xFFFFFFFF ■ Java heap(s) are managed using Garbage Collection ■ Other memory usage can be indirectly driven by application usage and garbage collection – eg. Java Threads Java Heap Native Heap 23 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 24. Java runtime problems ■ Insufficient Java heap memory leads to: – OutOfMemoryError due to Java heap exhaustion – Garbage Collection running excessively, increasing CPU and affecting performance ■ Insufficient non-Java (“native”) heap leads to: – OutOfMemoryError due to process address space exhaustion – Driver for Java heap garbage collection (DirectByteBuffer cleaners) 24 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 25. Detecting Java runtime problems ■ Log and trace analysis: – “Native” heap: OS level logs (ps, svmon, perfmon) – Java heap: verbose:gc output – Post processed using: IBM Monitoring and Diagnostic Tools for Java - Garbage Collection and Memory Visualizer (GCMV) ■ Live monitoring: – “Native” heap IBM Monitoring and Diagnostic Tools for Java - Health Center – Java heap: IBM Monitoring and Diagnostic Tools for Java - Health Center Visual VM, Mission Control 25 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 26. Too Frequent Garbage Collection 26 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 27. Garbage collection performance Heap Size Too Frequent Garbage Collection Memory Heap Occupancy Long Garbage Collection Cycles Time 27 JavaOne Session 23401 – The Hidden World of Your Java Application and What its Really Doing © 2011 IBM Corporation
  • 28. Resolving Java runtime problems ■ Add more resources to the Java runtime – Java heap: Increase Java heap size – Native heap: Move to 64bit or reduce Java heap size ■ Reduce the memory requirements – Reduce the Java application footprint 28 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 29. Increased Java heap size 29 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 30. Effect on Garbage Collection Pause Times ■ Reduction in: – Time spent in GC 59% ■ However this is only 4.84% of total time 30 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 31. Page response performance benchmark: Baseline Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline 10000 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 31 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 32. Page response performance benchmark: Paging removed Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline Baseline No Paging 10000 5000 0 servlet_ShoppingServlet servlet_ShoppingServlet Shopping{1} Shopping{1} Shopping_1_1 Shopping_1_1 Shopping_2_3 Shopping_2_3 Shopping_2_5 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} servlet_ShoppingServlet{2} Shopping{4} Shopping{4} Shopping_2_2 Shopping_2_2 Shopping_2_4 Shopping_2_4 Page URL Page URL 32 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 33. Page response performance benchmark: Java Heap size increased Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline No Paging 10000 Bigger Heap 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 33 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 34. Page performance improvements – PlantsByWebSphere 0.4% – servlet_ShoppingServlet 0.0% – servlet_ShoppingServlet{2} 33.2% – Shopping{1} +0.6% – Shopping{4} 4.5% – Shopping_1_1 2.9% – Shopping_2_2 0.1% – Shopping_2_3 2.1% – Shopping_2_4 14.2% – Shopping_2_5 8.2% ■ Improvement in page performance of -0.6% to 33.2% – Without outliers: 0.0% to 14.2% ■ Total gain is only ~4% – Relatively small effect on overall page performance 34 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 35. Java application ■ Typical resource constraints: – Memory: insufficient caching affects application throughput and responsiveness – CPU: insufficient threading causes limits on scalability – Synchronsation: synchronized resources limits scalability and throughput of the application – I/O: blocking on I/O limits throughput and responsiveness ■ Hard to diagnose ■ Can be expensive (or impossible!) to resolve 35 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 36. Java application CPU usage ■ High CPU usage by Java methods highlight areas of potential optimization – Code is being invoked more than it needs to be • Easily done with event driven models – An algorithm is not the most efficient • Easily done if performance is not the focus at development time ■ Fixing CPU bound applications requires knowledge of what code is being run – Identify methods which are suitable for optimisation • Optimising methods which the application doesn’t spend time in is a waste of your time – Identify methods where more time is being spent that you expect • “Why is so much of time being spent in this trivial method?” 36 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 37. Java application synchronization ■ Throughput does not increase linearly with load ■ At limit of throughput the CPU is still low – Inability to scale – Not all CPU can be utilized – Limit on throughput and responsiveness ■ Bottleneck where threads need to synchronize with each other for application correctness – Caused by large numbers of threads requiring synchronized resource at the same time – Caused by long hold time by thread that owns resource – Or a mixture of both 37 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 38. Health Center: application method CPU usage 38 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 39. Health Center: application synchronization 39 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 40. ShoppingServlet.deliberateSlowMethod() private void deliberateSlowMethod() { // ---------------------------------------------------------------- // User clicked on the Tulips, let's tip toe through a // slow method // ---------------------------------------------------------------- System.out.println("==> STARTING SLOW METHOD"); long timestamp = System.currentTimeMillis(); long target = timestamp + SLOWTIME; System.out.println("timestamp="+timestamp); System.out.println("resume at="+target); while(timestamp < target) { timestamp = System.currentTimeMillis(); } System.out.println("==> ENDING SLOW METHOD"); } 40 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 41. Page response performance benchmark: Baseline Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline 10000 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 41 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 42. Page response performance benchmark: Paging removed Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline Baseline No Paging 10000 5000 0 servlet_ShoppingServlet servlet_ShoppingServlet Shopping{1} Shopping{1} Shopping_1_1 Shopping_1_1 Shopping_2_3 Shopping_2_3 Shopping_2_5 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} servlet_ShoppingServlet{2} Shopping{4} Shopping{4} Shopping_2_2 Shopping_2_2 Shopping_2_4 Shopping_2_4 Page URL Page URL 42 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 43. Page response performance benchmark: Java Heap size increased Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline No Paging 10000 Bigger Heap 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 43 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 44. Page response performance benchmark: deliberateSlowMethod() changed Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline No Paging 10000 Bigger Heap App Fix 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 44 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 45. Page performance improvements ■ servlet_ShoppingServlet 80.8% 5x improvement ■ Shopping{1} 94.3% 20x improvement ■ Improvement in page performance of 80 and 95% – 5x and 20x improvement for affected pages ■ Total gain of 48%! 45 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 46. Health Center: application method CPU usage 46 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 47. Health Center: application synchronization 47 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 48. Summary ■ Importance of: – Repeatable benchmark – Incremental measurements as changes are made – Repeated testing and verification ■ Tools are available to help you see what's going on: – Garbage Collection and Memory Visualizer (all vendors) – HealthCenter (IBM only) – Other profilers (eg. YourKit) (all vendors) – Memory Analyzer (all vendors) 48 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 49. Page response performance benchmark: Summary Page Performance PlantsbyWebSphere 20000 15000 Avg Latency (microseconds) Baseline No Paging 10000 Bigger Heap App Fix 5000 0 servlet_ShoppingServlet Shopping{1} Shopping_1_1 Shopping_2_3 Shopping_2_5 PlantsByWebSphere servlet_ShoppingServlet{2} Shopping{4} Shopping_2_2 Shopping_2_4 Page URL 49 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 50. Summary ■ Infrastructure resources affect performance – Paging and Garbage Collection much less than you might expect – However, beware of CPU “starvation” from other processes! ■ Vast majority of performance gains are in the application! 50 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 51. References ■ Get Products and Technologies: – IBM Monitoring and Diagnostic Tools for Java: • https://www.ibm.com/developerworks/java/jdk/tools/ ■ Learn: – Health Center InfoCenter: • http://publib.boulder.ibm.com/infocenter/hctool/v1r0/index.jsp ■ Discuss: – IBM on Troubleshooting Java Applications Blog: • https://www.ibm.com/developerworks/mydeveloperworks/blogs/troubleshootingjava/ – Health Center Forum: • http://www.ibm.com/developerworks/forums/forum.jspa?forumID=1461 – IBM Java Runtimes and SDKs Forum: • http://www.ibm.com/developerworks/forums/forum.jspa?forumID=367&start=0 51 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation
  • 52. Copyright and Trademarks © IBM Corporation 2012. All Rights Reserved. IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., and registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web – see the IBM “Copyright and trademark information” page at URL: www.ibm.com/legal/copytrade.shtml 52 Practical Performance: Understand and Improve the Performance of Your Application © 2012 IBM Corporation