Résumé
Table of contents :
Foreword ..... xiv
Acknowledgments ..... xvi
Introduction ..... xxi
Part I Foundations ..... 1
- 1 Connections ..... 3
- Performance ..... 4
- Software Performance Engineering ..... 4
- Is Performance Really Important? ..... 5
- The Risks of Ignoring Client/Server Performance ..... 7
- Why Do Performance Disasters Happen? ..... 8
- Technology: A Vision of Unlimited Capacity ..... 9
- Client/Server: A Vision of Unlimited Scalability .....
11
- Enterprise Client/Server ..... 12
- Connections: Performance Variables ..... 13
- Client/Server Performance: The Earlier the Better ..... 16
2 Enterprise Client/Server ..... 18- The Evolution of Distributed Systems ..... 19
- Traditional Mainframe Systems ..... 20
- Distributed Systems and Layering ..... 21
- Challenging the Gartner Model ..... 24
- Distributed Processing Is Not Distributed Data ..... 25
- Some Designs Are More Equal than Others ..... 25
- Enterprise and Workgroup Systems are Different ..... 27
- Client/Server Technology ..... 29
- An Introduction to Middleware ..... 31
- Enterprise Client/Server: A Complex Environment ..... 33
- Client/Server Performance Management Challenges .....
33
- More Difficult to Design ..... 34
- More Difficult to Project Performance ..... 35
- More Difficult to Build ..... 35
- More Difficult to Monitor and Tune ..... 36
- Achieving Performance: The Design Problem ..... 37
- Partitioning and Performance ..... 37
- Conclusions ..... 40
- Client/Server Computing Bibliography ..... 40
3 Performance Fundamentals ..... 41- The Elements of Performance ..... 42
- Performance Perspectives ..... 43
- Individual/User/Application Perspective ..... 45
- Community/Systems/Environment Perspective ..... 46
- Organizational Perspective ..... 46
- Response Time ..... 47
- A Response Time Example ..... 48
- Individual Response Time Measures ..... 51
- The Psychology of User Response Time ..... 53
- Perceived Response Time ..... 53
- Tuning Response Times ..... 54
- Throughput, Workload, and Related Measures ..... 55
- User Population Supported ..... 57
- Tuning for Response Time or Throughput ..... 57
- The Performance of Batch Processing ..... 58
- Throughput Benchmarks ..... 59
- The Fundamental System Resources ..... 62
- Resource Utilization ..... 63
- Estimating Waiting Times for Resources ..... 63
- Resource Bottlenecks ..... 64
- The Processor or CPU ..... 65
- The Memory Subsystem ..... 67
- The 1/0 Subsystem ..... 68
- The Hierarchy of Computing Resources ..... 74
- The Application-Resource Usage Matrix ..... 75
- Using the Matrix ..... 76
- Extending the Matrix ..... 76
- Why a System Runs Slowly ..... 78
- Tackling Performance Problems ..... 79
Part II Process ..... 83
- 4 Software Performance Engineering ..... 85
- What Is Software Engineering? ..... 85
- Software Performance Engineering ..... 86
- The Software Development Process ..... 88
- The Generic Development Process ..... 91
- The Development Process Is Cumulative ..... 92
- SPE Activities versus Development Phases ..... 94
- Proactive Performance Management ..... 95
- The Performance Life Cycle ..... 96
- Performance and the Organization ..... 101
- Service-Level Management ..... 103
- Performance Management Tools ..... 110
- The Centering Principle ..... 112
- SPE Conclusions 114
5 Software Performance Engineering Activities ..... 116- Identifying Key Business Factors ..... 118
- Basic Concepts and Terminology ..... 119
- Locating the Key Business Factors ..... 120
- Identifying Business Priorities and Performance
Objectives ..... 122
- Relevance to Client/Server Computing ..... 122
- Trade Off Individual, Community, and Enterprise Goals ..... 124
- What Are Performance Objectives? ..... 125
- Service-Level Management ..... 128
- Evaluating Application, Database, and System Design Alternatives ..... 128
- Summarizing Application Performance Profiles ..... 130
- Workload Characterization ..... 131
- Predicting Performance on the Target Platform ..... 132
- The Information Systems Life Cycle ..... 134
- Monitoring Ongoing Software Performance ..... 136
- Systematic Monitoring ..... 136
- Impact of Monitoring ..... 138
- Multiple Data Sources ..... 139
- Uncorrelated Information ..... 140
- Missing Information ..... 142
- Monitor Standard Applications ..... 144
- Analyzing Observed Performance Data ..... 146
- Normal versus Abnormal Statistics ..... 146
- Responsive Performance Management ..... 149
- Confirming Performance Expectations ..... 150
- Performance Management for User-Driven Workloads ..... 151
- Tuning Application or System Performance ..... 154
- The Centering Principle and Tuning ..... 156
- Managing Ongoing System Capacity ..... 157
- Conclusions ..... 159
6 Predicting Future Performance ..... 161- Performance Prediction Techniques ..... 162
- Published Vendor Measurements ..... 163
- Rules of Thumb ..... 163
- Projecting from Measurements ..... 163
- Analytic Modeling ..... 163
- Simulation Modeling ..... 164
- Benchmarking ..... 164
- Introduction to Performance Models ..... 165
- What Is a Performance Model? ..... 165
- Queuing Network Models ..... 167
- Accuracy, Precision, and Detail ..... 168
- Building the Performance Model ..... 172
- Gathering the Input ..... 174
- Describing the Workload ..... 174
- Solving the Model ..... 180
- Comparing Analysis and Simulation ..... 181
- What If. . . ..... 182
- Recommendations ..... 183
- Benchmarks and Benchmarking ..... 185
- Deciding What to Measure ..... 186
- Standard Benchmarks ..... 187
- Getting Help from Vendors ..... 190
- Benchmarking Complications ..... 192
- The Benchmark Workload ..... 192
- The Benchmarked Environment ..... 194
- The Benchmarking Process ..... 194
- The Results ..... 195
- Using a Performance Model ..... 195
- Conclusion ..... 198
Part III Principles ..... 201
- 7 SPE Design Principles and Techniques ..... 203
- Software Engineering Principles ..... 206
- Keep It Clean and Simple ..... 207
- Why Is Software so Complex? ..... 208
- Be Simple, Not Simple-Minded ..... 210
- Software Design Principles ..... 212
- Abstraction and Decomposition ..... 212
- The Pros and Cons of Hiding ..... 213
- Software Design Techniques ..... 214
- Localization: The Path from Logical Design to
Construction ..... 219
- Adding Performance to Software Engineering ..... 222
- Trade-offs Among Software Engineering Goals ..... 223
- Who Does Design, Anyway? ..... 224
- The SPE Design Principles ..... 225
8 The Workload Principle ..... 229- Minimizing Unit Costs ..... 230
- Weeding Out Unnecessary Features ..... 231
- Tuning for Simplicity and Efficiency ..... 233
- Eliminating Clutter ..... 239
- Optimizing Loops ..... 243
- Optimizing Memory Reference Patterns ..... 244
- Trading Off Unit Cost and Execution Frequency ..... 246
- Execution Frequencies Tend to Dominate Total Costs ..... 248
- Applying the Workload Principle ..... 252
- Minimizing LAN Activity ..... 252
- Using Stored Procedures ..... 253
- Minimizing WAN Activity ..... 255
- Conclusion: Make the Machine a Partner ..... 256
9 The Efficiency Principle ..... 258- The Efficiency Principle: Some Examples ..... 259
- Fixing Point: Early versus Late Grouping ..... 262
- Grouping: A Classification Scheme ..... 263
- Aggregating Similar Components ..... 264
- User Interfaces ..... 264
- Database Design and Denormalization ..... 265
- Data Warehouses ..... 267
- Collecting Similar Components ..... 268
- Buffering and Caching ..... 268
- Blocking and Data Transmission ..... 269
- Binding Dissimilar Components ..... 273
- Compilation Techniques ..... 273
- Stored Database Procedures ..... 276
- Object DBMSs ..... 276
- Associating Dissimilar Components ..... 277
- SQL Gateways and Access Path Selection ..... 278
- Dynamic Inheritance ..... 280
- Other Techniques for Improving Efficiency ..... 284
- Replicated Reference Tables ..... 284
- Indexing ..... 284
- Batch versus Online Transactions ..... 285
- Data Replication ..... 286
- Checkpointing ..... 286
- Activity Tracing and Logging ..... 287
- Conclusion ..... 286
10 The Locality Principle ..... 290- Locality: Matching Components to Usage ..... 291
- Know the User ..... 292
- The Four Types of Locality ..... 292
- Spatial Locality ..... 294
- Applying the Spatial Locality Principle ..... 295
- Data Partitioning and Distribution ..... 299
- Data Distribution Guidelines Based on Spatial Locality ..... 300
- Temporal Locality ..... 301
- Applying the Temporal Locality Principle ..... 302
- Degree Locality ..... 305
- Applying the Degree Locality Principle ..... 306
- Degree Locality and Peaks in Demand ..... 307
- Effectual Locality ..... 307
- Effectual Locality and the Two-Tier Architecture ..... 311
- Effectual Locality and the Three-Tier Architecture ..... 313
- Holistic Design and Software Tuning ..... 316
- Software Tuning Knobs ..... 316
- Tuning and Side Effects ..... 317
- Case Study: The Consolidated Software Corporate Shared
Calendar System ..... 320
- A Problem for doe Tuna ..... 320
- Debugging Questions ..... 326
- Back to Joe Tuna's Office ..... 326
- Conclusion ..... 330
11 The Sharing Principle ..... 331- Use Shared Resources Carefully ..... 332
- The Two Dimensions of Response Time: An Example ..... 333
- Summary: A Framework for Removing Bottlenecks ..... 336
- Grouping and Sharing ..... 337
- Randomness and Queuing ..... 337
- Shared Resources ..... 340
- Estimating the Response Time of a Shared Resource ..... 340
- Open and Closed Systems ..... 343
- Shared Servers ..... 345
- Shared Databases ..... 347
- Shared Networks ..... 347
- Application Bottlenecks and the Throughput Chain ..... 349
- Sufficient Information? ..... 350
- Network Delays ..... 351
- Data Compression ..... 356
- Design for the Normal Daily Environment ..... 359
- Conclusions ..... 360
12 Database Locking ..... 361- DBMS Locking Strategies ..... 362
- Lock Modes ..... 362
- Lock Size or Granularity ..... 364
- Deadlocks ..... 366
- Lock Escalation ..... 368
- Program Isolation Levels ..... 371
- Lock Duration ..... 373
- Hot Spots in Shared Data ..... 373
- Timestamped Data ..... 374
- Allocating Sequence Numbers ..... 375
- Summary Statistics ..... 377
- Small Tables and Indexes ..... 378
- DBMS Catalog ..... 380
- Locking Summary ..... 380
13 The Parallelism Principle ..... 382- Workload Growth and Parallelism ..... 383
- Scalability and Speedup ..... 384
- Overheads and Load Balancing ..... 385
- Speedup: Amdahl's Law ..... 387
- Applying Amdahl's Law ..... 388
- Parallel Processing Possibilities ..... 389
- Level-1: Workload Parallelism ..... 390
- Level-2: Workflow Parallelism ..... 395
- Level-3: Program Parallelism ..... 396
- The Role of Middleware ..... 398
- Levels-4/5: Process and Data Manipulation Parallelism ..... 399
- Level-6: Intraquery Parallelism ..... 402
- Level-7: I/O Device Parallelism ..... 402
- Level-8: CPU Parallelism ..... 403
- Who Needs a Parallel Processor? ..... 404
- Technological Motivations ..... 404
- Parallelism, Price, and Performance ..... 405
- Multiprocessor Architectures ..... 406
- Multiprocessor Scalability and Speedup ..... 410
- SMP: Shared Memory ..... 411
- MPP: Shared Nothing ..... 412
- Shared Disk ..... 415
- Clusters, Hybrids, and MPPC ..... 416
- Multiprocessor Conclusions ..... 417
- Parallel Database Processing ..... 418
- DBMS Support for Parallelism ..... 418
- Partitioning, Fragmentation, De-clustering ..... 420
- Database Design Is More Complex ..... 423
- Other Data Partitioning Issues ..... 423
- Conclusions about the Parallelism Hierarchy ..... 425
14 The Trade-off Principle ..... 427- Management Trade-offs Revisited ..... 428
- Simplicity Comes First ..... 428
- Trade-offs Among Software Engineering Goals ..... 428
- Trade-offIndividual, Community, and enterprise Goals ..... 429
- Technical Trade-offs for Optimal Performance ..... 430
- Making Trade-offs Among Computing Resources ..... 430
- Types of Resource Trade-offs ..... 431
- Prioritize and Trade Off Among Workloads that Share Resources ..... 434
- Grouping and Performance ..... 436
- Grouping and the SPE Design Principles ..... 436
- Significance of Group Size ..... 437
- Group Size Trade-off: A Summary ..... 438
- Caching and Buffering ..... 439
- Levels of Caching ..... 442
- Caching and Efficiency ..... 446
- Caching and Locality ..... 447
- Caching and Real Memory ..... 449
- Caching and Remote I/O ..... 450
- Updated Data and Write-Back Caches ..... 451
- Indexing Trade-offs ..... 452
- Data Compression ..... 452
- Applying the SPE Design Principles ..... 453
Part IV Applications ..... 455
- 15 Middleware and Performance ..... 457
- Communicating Processes ..... 458
- Network Communications ..... 459
- Application-Level Protocols ..... 461
- Communication Styles and Performance ..... 466
- Middleware Manages Communication ..... 470
- Three Classes of Middleware ..... 470
- Application Middleware ..... 472
- Point-to-Point Messaging (P2P) ..... 474
- Remote Procedure Calls (RPC) ..... 476
- Extending RPC ..... 478
- Message-Oriented Middleware (MOM) ..... 481
- Message Queuing ..... 481
- Other Messaging Facilities ..... 483
- Processing Transactions ..... 484
- Transactions: The ACID Test ..... 485
- The Challenge of Distributed Transactions ..... 485
- Misplaced Optimism ..... 486
- Relational Database Transaction Processing: TP-Lite ..... 487
- Transactional Message Queuing ..... 492
- The Performance Implications of Using MQ Middleware ..... 494
- The Design Implications of Using MQ Middleware ..... 495
- Distributed Object Technology ..... 495
- Distributed Object Definitions ..... 496
- Some Performance Concerns ..... 496
- Recommended Reading ..... 498
- Distributed Transaction Monitors: TP-Heavy ..... 498
- Transaction Monitor Performance ..... 499
- DTM Limitations ..... 501
- The RPC versus Messaging Debate ..... 501
16 Architecture for High Performance ..... 503- A Reference Model for Client/Server Architecture ..... 504
- The Real Problem with Distributed Transactions ..... 505
- Abandoning the Single Synchronous Transaction Paradigm
..... 506
- The Limited Safety Net of Systems Software ..... 508
- The Conflict Between Independent Systems and Controlled Transactions ..... 508
- The Analogy of Parallel Processors ..... 509
- The Experience of Designing Manual Systems ..... 509
- Software Design Principles ..... 510
- Building Systems from Separately Developed Components ..... 511
- Architectural Patterns ..... 512
- Logical and Physical Architectures ..... 514
- Distributed Application Patterns ..... 518
- Application Design Patterns ..... 520
- Core Design Guidelines ..... 520
- The Final View ..... 526
17 Design for High Performance ..... 528- Real-Time Systems Design ..... 529
- Designing a Distributed Application ..... 530
- Understanding What the Business Process Needs ..... 531
- Guidelines for Data Distribution ..... 533
- The Basic Guidelines ..... 533
- Resolving Conflicts among the Guidelines ..... 534
- Multiphase Updating of Replicated Data ..... 535
- Data Integrity Issues ..... 536
- How to Group Process and Data ..... 538
- Designing the Application Flow ..... 538
- Task Atomicity ..... 539
- Designing Multiphase Applications ..... 540
- Performance Attributes ..... 541
- Compensating Transactions ..... 541
- Control, Transactions, and Rules ..... 542
- Spheres of Control ..... 542
- How Is Control Enforced? ..... 545
- Case Studies: How Is MQ Being Used? ..... 546
- The Synchronous Approach ..... 547
- The Asynchronous Approach ..... 549
- Core Banking System: MQIApplications ..... 549
- The Response Time Reference Model ..... 551
- About the Model ..... 552
- Major Components of the Model ..... 554
- Detailed Components of the Model ..... 555
- Rules of Thumb for Estimating Response Times ..... 562
- Conclusions and Management Guidelines ..... 566
Part V Technologies ..... 567
- 18 Performance Tools ..... 569
- Design Tools ..... 569
- Design Tool Examples ..... 570
- Application Development Tools ..... 572
- Open Solutions ..... 573
- Proprietary Solutions ..... 575
- Performance Management Tools ..... 576
- Simulation Tools ..... 577
- Controlled Measurement or Benchmarking ..... 579
- Load Testing Tools ..... 580
- Monitoring Distributed Systems ..... 582
- DBMS Monitoring ..... 583
- Monitoring Applications ..... 587
- Monitoring, Tuning, Intelligent Agents ..... 588
- Conclusions ..... 588
19 Using DBMS Technology ..... 590- Designing Database Systems ..... 591
- Who Does Database Design? ..... 592
- Tuning Choices and Priorities ..... 594
- Focusing on DBMS Issues ..... 595
- Business Factors and Database Design Goals ..... 599
- Design to Meet User Performance Objectives ..... 600
- Database Applications ..... 601
- Design for the Existing Application Environment ..... 602
- Don't Overlook Database Maintenance Utilities ..... 605
- The Influence of Relational Database Optimizers .....
606
- Benefits of the Relational Database Optimizer ..... 606
- Limitations of the Relational Database Optimizer ..... 606
- Cybernetics or Clairvoyance? ..... 609
- The Database Design Process ..... 614
- Data-Driven versus Process-Driven Design ..... 615
- Database Design Checklists ..... 618
- Core Relational Design ..... 619
- Relational Design Details ..... 622
- Core Physical Design ..... 623
- Physical Design Details ..... 626
- DBMS-Specific Handbooks ..... 627
20 Using Data Replication ..... 629- What Is Data Replication? ..... 630
- Synchronous versus Asynchronous Replication ..... 632
- Characteristics of Copied Data ..... 634
- Why Replicate? ..... 640
- Performance Enhancement ..... 641
- Data Warehousing ..... 642
- Mobile Computing ..... 643
- Recoverability and Availability ..... 643
- Public Information Distribution and Auditing ..... 643
- Migration and Coexistence ..... 644
- Replication Phases ..... 645
- The Capture Phase ..... 646
- The Transformation Phase ..... 647
- The Transport Phase ..... 648
- The Apply Phase ..... 650
- Replication Products ..... 652
- Conclusion ..... 652
21 Using Data Warehousing ..... 655- The Evolution of the Data Warehouse ..... 657
- Warehousing Concepts and Terminology ..... 659
- The Enterprise Data Warehouse ..... 659
- Operational Data Store ..... 662
- Data Marts ..... 663
- OLAP, ROLAP, and MDA ..... 664
- Data Mining ..... 665
- Data Warehouse Services ..... 665
- Acquiring Data ..... 666
- Mapping, Cleaning: Data QA ..... 666
- Transforming Data ..... 669
- Populate the Data Warehouse: Storing the Data ..... 669
- Providing Access to Data ..... 669
- Analyzing and Reporting Data ..... 671
- Other Data Warehouse Components ..... 673
- Analyzing Data in the Warehouse ..... 675
- The Operational Data Store ..... 677
- Online Analytical Processing (OLAP) ..... 679
- Data Mining ..... 682
- Conclusion ..... 684
22 Transaction Managers and Transaction Monitors ..... 685- Transactions: An Overview ..... 686
- What Is a Transaction? ..... 686
- The Transaction Monitor ..... 688
- How the Transaction Monitor Works ..... 689
- Transaction Performance and the Transaction Monitor ..... 691
- Transactional Performance Considerations ..... 692
- Distributed Database Design ..... 694
- The Logical Unit of Work ..... 696
- Grouping Transactions ..... 698
- Specialized Performance Enhancing Techniques ..... 699
- Segregating Informational and Transactional Processing ..... 703
- Conclusion ..... 704
Part VI Resources ..... 707
- A Performance-Oriented Glossary ..... 709
- Index of Guidelines by Subject Area ..... 729
- Index ..... 737
Caractéristiques techniques
PAPIER | |
Éditeur(s) | Wiley |
Auteur(s) | Chris Loosley |
Parution | 11/12/1997 |
Nb. de pages | 784 |
Format | 229 x 152 |
EAN13 | 9780471162698 |
Avantages Eyrolles.com
Consultez aussi
- Les meilleures ventes en Graphisme & Photo
- Les meilleures ventes en Informatique
- Les meilleures ventes en Construction
- Les meilleures ventes en Entreprise & Droit
- Les meilleures ventes en Sciences
- Les meilleures ventes en Littérature
- Les meilleures ventes en Arts & Loisirs
- Les meilleures ventes en Vie pratique
- Les meilleures ventes en Voyage et Tourisme
- Les meilleures ventes en BD et Jeunesse