IBM Support

Linux on Power Performance tuning, leveraging the IBM SDK for Linux on Power

Technical Blog Post


Abstract

Linux on Power Performance tuning, leveraging the IBM SDK for Linux on Power

Body

When I started this Zen and art of PowerLinux Performance series I had the best of intentions to contribute regularly. Then I got busy; with enabling Little Endian for Power 64-bit, which required a new ABI , plus coordinating the enablement of all the pieces of the toolchain for the new target and platform, and then supporting the bring up of multiple Linux Distributions.

 

Now we are mostly past the “when will we get Distro X on hardware Y?” and we are deep into the “How do I tune my application for POWER?” and “I am not happy with the performance of open source package Z on POWER!” stage. How I wish that I could be answering these questions 24x7, but that tends to interfere with my day job as Toolchain Architect.

 

Fortunately I have another job as the architect for the IBM Software Developer Kit for Linux on Power (SDK). This gives me a chance to influence development of additional tools that apply directly to the questions mentioned above. The idea is to provide powerful tools that embed the deep knowledge of performance tuning and POWER architecture into the tool itself. The idea is that a good set of tools will allow Linux developers to analyze and tune their own applications.

 

I do hear concerns that a fancy Integrated Development Environment (IDE) will be too complicated to use and may not work with existing open source projects or large projects. The good news is that Eclipse.org tools (on which the SDK is built) are extremely flexible and extensible while maintain a strong emphasis on usability. The SDK team has focused on selecting and integrating the plugin components that support C/C++ development for Linux and migration of existing applications to Linux on Power.

 

This support includes existing Eclipse plugins like the C/C++ development Tools (CDT), and the Linux Tools Project (LTP) which integrates with and leverages the existing Linux tools that we are all familiar with. For example, the SDK can import and build existing autotools and Makefile projects. Once a project is imported, the SDK supports the usual Edit, Compile, Debug cycles with additional tools that leverage existing Linux tools for code profiling (gprof, perf, and OProfile tools) and memory/heap analysis (Valgrind; memcheck and massif ).

 

The SDK team has also developed unique and powerful POWER specific plugins and extensions, for the Eclipse framework, to analyze and tune your application. This includes the Migration Advisor (MA), Source Code Advisor (SCA), Feedback Directed Program Restructuring (FDPR), and more. These combined with the profiling tools provide a complete application porting, analysis and tuning tool kit.

 

Of course it definitely helps if you have general Linux development skills. To run some of the SDK's special tool against the project you will need to understand how the project is structured. For example to run tests or benchmarks internal to the project (for example those normally run under “make check”) you will need to read up on the set-up need to run that test. For example does it need LD_LIBRARY_PATH set the project libraries you just built? Or where do I find and how do I run the command line interpreter for the project (like php or python), without installing that project (and potentially messing up my system).

 

So what about larger projects? Well I personally have imported open source projects like the GNU Compiler Collection (GCC) and GLIBC (as part of my day job). On occasion you will need to bump up the ulimits for the stack and Java heap sizes for the SDK (look for /opt/ibm/ibm-sdk-lop/sdk_launcher.ini) to successfully import a really large project. And the initial source code indexing might take a while to process (an hour or two), but this is a small price to pay to gain deeper insights into the structure and performance of your companies application or your favorite open source package.

 

For this performance series I will take you through the process of importing, analyzing, and tuning a popular open source dynamic language interpreter, PHP.

 

The first step of importing the PHP projects is described in Using the IBM SDK for Linux on Power to improve the performance of a large open source project. Additional installments will demonstrate using the Migration Advisor and Source Code Advisor to find performance bottle necks and suggest code changes that improve or eliminate these bottle necks.

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"HW1W1","label":"Power ->PowerLinux"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"","label":""}}]

UID

ibm16170529