You are previewing POWER7 and POWER7+ Optimization and Tuning Guide.
O'Reilly logo
POWER7 and POWER7+ Optimization and Tuning Guide

Book Description

This IBM® Redbooks® publication provides advice and technical information about optimizing and tuning application code to run on systems that are based on the IBM POWER7® and POWER7+™ processors. This advice is drawn from application optimization efforts across many different types of code that runs under the IBM AIX® and Linux operating systems, focusing on the more pervasive performance opportunities that are identified, and how to capitalize on them. The technical information was developed by a set of domain experts at IBM.

The focus of this book is to gather the right technical information, and lay out simple guidance for optimizing code performance on the IBM POWER7 and POWER7+ systems that run the AIX or Linux operating systems. This book contains a large amount of straightforward performance optimization that can be performed with minimal effort and without previous experience or in-depth knowledge. This optimization work can:

  • Improve the performance of the application that is being optimized for the POWER7 system

  • Carry over improvements to systems that are based on related processor chips

  • Improve performance on other platforms


The audience of this book is those personnel who are responsible for performing migration and implementation activities on IBM POWER7-based servers, which includes system administrators, system architects, network administrators, information architects, and database administrators (DBAs).

Table of Contents

  1. Front cover
  2. Notices
    1. Trademarks
  3. Preface
    1. The team who wrote this book
    2. Now you can become a published author, too!
    3. Comments welcome
    4. Stay connected to IBM Redbooks
  4. Chapter 1. Optimization and tuning on IBM POWER7 and IBM POWER7+
    1. 1.1 Introduction
    2. 1.2 Outline of this guide
    3. 1.3 Conventions that are used in this guide
    4. 1.4 Background
    5. 1.5 Optimizing performance on POWER7
      1. 1.5.1 Lightweight tuning and optimization guidelines
      2. 1.5.2 Deployment guidelines
      3. 1.5.3 Deep performance optimization guidelines
  5. Chapter 2. The POWER7 processor
    1. 2.1 Introduction to the POWER7 processor
      1. 2.1.1 The POWER7+ processor
    2. 2.2 Multi-core and multi-thread scalability
    3. 2.3 Using POWER7 features
      1. 2.3.1 Page sizes (4 KB, 64 KB, 16 MB, and 16 GB)
      2. 2.3.2 Cache sharing
      3. 2.3.3 SMT priorities
      4. 2.3.4 Storage synchronization (sync, lwsync, lwarx, stwcx, and eieio)
      5. 2.3.5 Vector Scalar eXtension (VSX)
      6. 2.3.6 Decimal floating point (DFP)
      7. 2.3.7 Data prefetching using d-cache instructions and the Data Streams Control Register (DSCR)
    4. 2.4 Related publications
  6. Chapter 3. The POWER Hypervisor
    1. 3.1 Introduction to the POWER7 Hypervisor
    2. 3.2 POWER7 virtualization
      1. 3.2.1 Virtual processors
      2. 3.2.2 Page table sizes for LPARs
      3. 3.2.3 Placing LPAR resources to attain higher memory affinity
      4. 3.2.4 Active memory expansion
      5. 3.2.5 Optimizing Resource Placement – Dynamic Platform Optimizer
    3. 3.3 Related publications
  7. Chapter 4. AIX
    1. 4.1 AIX and system libraries
      1. 4.1.1 AIX operating system-specific optimizations
      2. 4.1.2 Using POWER7+ features under AIX
    2. 4.2 AIX Active System Optimizer and Dynamic System Optimizer
      1. 4.2.1 Concepts
      2. 4.2.2 ASO and DSO optimizations
      3. 4.2.3 Workloads
      4. 4.2.4 The asoo command
      5. 4.2.5 Environment variables
      6. 4.2.6 Installing DSO
      7. 4.2.7 Log files
    3. 4.3 AIX preferred practices
      1. 4.3.1 AIX preferred practices that are applicable to all Power Systems generations
      2. 4.3.2 AIX preferred practices that are applicable to POWER7
      3. 4.3.3 POWER7 mid-range and high-end High Impact or Pervasive advisory
    4. 4.4 Related publications
  8. Chapter 5. Linux
    1. 5.1 Linux and system libraries
      1. 5.1.1 Introduction
      2. 5.1.2 Linux operating system-specific optimizations
    2. 5.2 Related publications
  9. Chapter 6. Compilers and optimization tools for C, C++, and Fortran
    1. 6.1 Compiler versions and optimization levels
    2. 6.2 Advanced compiler optimization techniques
      1. 6.2.1 Common prerequisites
      2. 6.2.2 XL compiler family
      3. 6.2.3 GCC compiler family
    3. 6.3 IBM Feedback Directed Program Restructuring
      1. 6.3.1 Introduction
      2. 6.3.2 FDPR supported environments
      3. 6.3.3 Acceptable input formats
      4. 6.3.4 General operation
      5. 6.3.5 Instrumentation and profiling
      6. 6.3.6 Optimization
    4. 6.4 Related publications
  10. Chapter 7. Java
    1. 7.1 Java levels
    2. 7.2 32-bit versus 64-bit Java
    3. 7.3 Memory and page size considerations
      1. 7.3.1 Medium and large pages for Java heap and code cache
      2. 7.3.2 Configuring large pages for Java heap and code cache
      3. 7.3.3 Prefetching
      4. 7.3.4 Compressed references
      5. 7.3.5 JIT code cache
      6. 7.3.6 Shared classes
    4. 7.4 Java garbage collection tuning
      1. 7.4.1 GC strategy: Optthruput
      2. 7.4.2 GC strategy: Optavgpause
      3. 7.4.3 GC strategy: Gencon
      4. 7.4.4 GC strategy: Balanced
      5. 7.4.5 Optimal heap size
    5. 7.5 Application scaling
      1. 7.5.1 Choosing the correct SMT mode
      2. 7.5.2 Using resource sets
      3. 7.5.3 Java lock reservation
      4. 7.5.4 Java GC threads
      5. 7.5.5 Java concurrent marking
    6. 7.6 Related publications
  11. Chapter 8. DB2
    1. 8.1 DB2 and the POWER7 processor
    2. 8.2 Taking advantage of the POWER7 processor
      1. 8.2.1 Affinitization
      2. 8.2.2 Page sizes
      3. 8.2.3 Decimal arithmetics
      4. 8.2.4 Using SMT priorities for internal lock implementation
    3. 8.3 Capitalizing on the compilers and optimization tools for POWER7
      1. 8.3.1 Whole-program analysis and profile-based optimizations
      2. 8.3.2 Feedback directed program restructuring (FDPR)
    4. 8.4 Capitalizing on POWER7 virtualization
      1. 8.4.1 DB2 virtualization
      2. 8.4.2 DB2 in an AIX workload partition
    5. 8.5 Capitalizing on the AIX system libraries
      1. 8.5.1 Using the thread_post_many API
      2. 8.5.2 File systems
    6. 8.6 Capitalizing on performance tooling
      1. 8.6.1 High-level investigation
      2. 8.6.2 Low-level investigation
    7. 8.7 Conclusion
    8. 8.8 Related publications
  12. Chapter 9. WebSphere Application Server
    1. 9.1 IBM WebSphere
      1. 9.1.1 Installation
      2. 9.1.2 Deployment
      3. 9.1.3 Performance
      4. 9.1.4 Performance analysis, problem determination, and diagnostic tests
  13. Appendix A. Analyzing malloc usage under AIX
    1. Introduction
    2. How to collect malloc usage information
  14. Appendix B. Performance tooling and empirical performance analysis
    1. Introduction
    2. Performance advisors
    3. AIX
    4. Linux
    5. Java (either AIX or Linux)
  15. Appendix C. POWER7 optimization and tuning with third-party applications
    1. Migrating Oracle to POWER7
    2. Migrating Sybase ASE to POWER7
    3. Implementing Sybase IQ to POWER7
    4. Migrating SAS to POWER7
    5. Migrating SAP BusinessObjects Business Intelligence platform with POWER7
  16. Back cover