This section also describes performance benchmarking and summarizes the methodology in  a step-by-step instruction form. For more information, see 9.2.11, “Summary” on page 283. Before starting performance benchmarking, clarify the purpose of this activity. A clearly  defined purpose of benchmarking is helpful in creating a plan of benchmarking and defining  the success criteria. The purpose of performance benchmarking looks different from each of the following two  points of view: From the perspective of an application developer, the performance benchmarking is part of  the software development process. An application developer uses performance  benchmarking to pursue the following goals: A software developer performs a performance benchmarking of an application to understand  how to improve application performance by changing an algorithm. Performance  benchmarking viewed from an application developer perspective has complex methodologies.  These methodologies are not covered in this publication. From the perspective of an  application user  or a  system administrator,  performance  benchmarking is a necessary step before using an application for production runs on a  computing system that is available for them. Application users and system administrators  make the following assumptions: This statement implies that application users and system administrators are limited to the  following choices to tune the performance: Essentially, applications users and system administrators are interested in how to make an  application solve problems as fast as possible without changing the source code. 276  IBM High-Performance Computing Insights with IBM Power System AC922 Clustered Solution  – Different compilers – Compiler optimization options – SMT mode – Number of computing cores – Runtime system parameters and environment variables –O S  p a r m e t r s GLYPH<SM590000> An application will be used on a computing system many times in the future. GLYPH<SM590000> It makes sense to invest time into performance benchmarking because the time will be  made up by faster completion of production runs in the future. GLYPH<SM590000> Modification of an application source code is out of their scope. GLYPH<SM590000> Comparing the code’s performance with the performance model. GLYPH<SM590000> Identifying bottlenecks in the code that limit its performance (this process is typically done  by using profiling). GLYPH<SM590000> Identifying parts of the code that prevent scaling. GLYPH<SM590000> Comparing the code’s scalab ility with the scalability model. GLYPH<SM590000> Tuning the code to specific computer hardware. Benchmarking by application users and system administrators Benchmarking by application developers GLYPH<SM590000> Performance benchmarking that is carried out by an  application developer . GLYPH<SM590000> Performance benchmarking that is done by an  application user  or a  system administrator . 9.2.1 Defining the purpose of performance benchmarking