High performance client/server - Chris Loosley - Librairie Eyrolles
Tous nos rayons

Déjà client ? Identifiez-vous

Mot de passe oublié ?

Nouveau client ?

CRÉER VOTRE COMPTE
High performance client/server
Ajouter à une liste

Librairie Eyrolles - Paris 5e
Indisponible

High performance client/server

High performance client/server

Chris Loosley

784 pages, parution le 11/12/1997

Résumé

Software developers are shown how to build client/server applications that run fast without hogging computer resources in this book. The authors review the basic principles of software performance engineering and how these general principles can be applied to client/server software. The book describes specific techniques and tools for building fast client/server applications. These include use of database managers, parallel processors, data replication, data warehousing, and object-based techniques. The book includes case examples of successful implementations and straightforward checklists to ensure that developers can turn these ideas into practice

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

Livraison à partir de 0,01 en France métropolitaine
Paiement en ligne SÉCURISÉ
Livraison dans le monde
Retour sous 15 jours
+ d'un million et demi de livres disponibles
satisfait ou remboursé
Satisfait ou remboursé
Paiement sécurisé
modes de paiement
Paiement à l'expédition
partout dans le monde
Livraison partout dans le monde
Service clients sav@commande.eyrolles.com
librairie française
Librairie française depuis 1925
Recevez nos newsletters
Vous serez régulièrement informé(e) de toutes nos actualités.
Inscription