Software Performance and Scalability: A Quantitative ApproachISBN: 978-0-470-46253-9
Hardcover
375 pages
May 2009, Wiley-Blackwell
This is a Print-on-Demand title. It will be printed specifically to fill your order. Please allow an additional 10-15 days delivery time. The book is not returnable.
|
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 Tooldot 281
9.2 Graphics ToolILOG 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