Rights Contact Login For More Details
- Wiley
More About This Title Software Performance and Scalability: A Quantitative Approach
- English
English
"The practicality of the subject in a real-world situation distinguishes this book from others available on the market."
—Professor Behrouz Far, University of Calgary
"This book could replace the computer organization texts now in use that every CS and CpE student must take. . . . It is much needed, well written, and thoughtful."
—Professor Larry Bernstein, Stevens Institute of Technology
A distinctive, educational text onsoftware performance and scalability
This is the first book to take a quantitative approach to the subject of software performance and scalability. It brings together three unique perspectives to demonstrate how your products can be optimized and tuned for the best possible performance and scalability:
- The Basics—introduces the computer hardware and software architectures that predetermine the performance and scalability of a software product as well as the principles of measuring the performance and scalability of a software product
- Queuing Theory—helps you learn the performance laws and queuing models for interpreting the underlying physics behind software performance and scalability, supplemented with ready-to-apply techniques for improving the performance and scalability of a software system
- API Profiling—shows you how to design more efficient algorithms and achieve optimized performance and scalability, aided by adopting an API profiling framework (perfBasic) built on the concept of a performance map for drilling down performance root causes at the API level
Software Performance and Scalability gives you a specialized skill set that will enable you to design and build performance into your products with immediate, measurable improvements. Complemented with real-world case studies, it is an indispensable resource for software developers, quality and performance assurance engineers, architects, and managers. It is anideal text for university courses related to computer and software performance evaluation and can also be used to supplement a course in computer organization or in queuing theory for upper-division and graduate computer science students.
- English
English
- English
English
ACKNOWLEDGMENTS xxi
Introduction 1
Performance versus Scalability 1
PART 1 THE BASICS 3
1. Hardware Platform 5
1.1 Turing Machine 6
1.2 von Neumann Machine 7
1.3 Zuse Machine 8
1.4 Intel Machine 9
1.5 Sun Machine 17
1.6 System Under Test 18
1.7 Odds Against Turing 30
1.8 Sizing Hardware 35
1.9 Summary 37
2. Software Platform 41
2.1 Software Stack 42
2.2 APIs 44
2.3 Multithreading 47
2.4 Categorizing Software 535
2.5 Enterprise Computing 55
2.6 Summary 63
3. Testing Software Performance and Scalability 65
3.1 Scope of Software Performance and Scalability Testing 67
3.2 Software Development Process 83
3.3 Defining Software Performance 86
3.4 Stochastic Nature of Software Performance Measurements 95
3.5 Amdahl’s Law 97
3.6 Software Performance and Scalability Factors 99
3.7 System Performance Counters 111
3.8 Software Performance Data Principles 129
3.9 Summary 131
PART 2 APPLYING QUEUING THEORY 135
4. Introduction to Queuing Theory 137
4.1 Queuing Concepts and Metrics 139
4.2 Introduction to Probability Theory 143
4.3 Applying Probability Theory to Queuing Systems 145
4.4 Queuing Models for Networked Queuing Systems 153
4.5 Summary 172
5. Case Study I: Queuing Theory Applied to SOA 177
5.1 Introduction to SOA 178
5.2 XML Web Services 179
5.3 The Analytical Model 181
5.4 Service Demand 183
5.5 MedRec Application 188
5.6 MedRec Deployment and Test Scenario 189
5.7 Test Results 191
5.8 Comparing the Model with the Measurements 198
5.9 Validity of the SOA Performance Model 200
5.10 Summary 200
6. Case Study II: Queuing Theory Applied to Optimizing and Tuning Software Performance and Scalability 205
6.1 Analyzing Software Performance and Scalability 207
6.2 Effective Optimization and Tuning Techniques 220
6.3 Balanced Queuing System 240
6.4 Summary 244
PART 3 APPLYING API PROFILING 249
7. Defining API Profiling Framework 251
7.1 Defense Lines Against Software Performance and Scalability Defects 252
7.2 Software Program Execution Stack 253
7.3 The PerfBasic API Profiling Framework 254
7.4 Summary 260
8. Enabling API Profiling Framework 263
8.1 Overall Structure 264
8.2 Global Parameters 265
8.3 Main Logic 266
8.4 Processing Files 266
8.5 Enabling Profiling 267
8.6 Processing Inner Classes 270
8.7 Processing Comments 271
8.8 Processing Method Begin 272
8.9 Processing Return Statements 274
8.10 Processing Method End 275
8.11 Processing Main Method 276
8.12 Test Program 277
8.13 Summary 279
9. Implementing API Profiling Framework 281
9.1 Graphics Tool—dot 281
9.2 Graphics Tool—ILOG 284
9.3 Graphics Resolution 286
9.4 Implementation 287
9.5 Summary 300
10. Case Study: Applying API Profiling to Solving Software Performance and Scalability Challenges 303
10.1 Enabling API Profiling 304
10.2 API Profiling with Standard Logs 313
10.3 API Profiling with Custom Logs 320
10.4 API Profiling with Combo Logs 325
10.5 Applying API Profiling to Solving Performance and Scalability Problems 333
10.6 Summary 337
APPENDIX A STOCHASTIC EQUILIBRIUM AND ERGODICITY 339
A.1 Basic Concepts 339
A.2 Classification of Random Processes 343
A.3 Discrete-Time Markov Chains 345
A.4 Continuous-Time Markov Chains 349
A.5 Stochastic Equilibrium and Ergodicity 351
A.6 Birth–Death Chains 357
APPENDIX B MEMORYLESS PROPERTY OF THE EXPONENTIAL DISTRIBUTION 361
APPENDIX C M/M/1 QUEUES AT STEADY STATE 363
C.1 Review of Birth–Death Chains 363
C.2 Utilization and Throughput 364
C.3 Average Queue Length in the System 365
C.4 Average System Time 365
C.5 Average Wait Time 366
INDEX 367