You are previewing Server Architectures.
O'Reilly logo
Server Architectures

Book Description

The goal of this book is to present and compare various options one for systems architecture from two separate points of view. One, that of the information technology decision-maker who must choose a solution matching company business requirements, and secondly that of the systems architect who finds himself between the rock of changes in hardware and software technologies and the hard place of changing business needs.
Different aspects of server architecture are presented, from databases designed for parallel architectures to high-availability systems, and touching en route on often- neglected performance aspects.

1. The book provides IT managers, decision makers and project leaders who want to acquire knowledge sufficient to understand the choices made in and capabilities of systems offered by various vendors:
2. Provides system design information to balance the characteristic applications against the capabilities and nature of various architectural choices
3. In addition, it offers an integrated view of the concepts in server architecture, accompanied by discussion of effects on the evolution of the data processing industry.

Table of Contents

  1. Copyright
    1. Dedication
  2. Acknowledgements
  3. About the Author
  4. Preface
    1. Objective of the Book
    2. A Changing Industry Based on Changing Technology
      1. At Whom is the Book Aimed?
    3. Structure of the book
    4. Origin of the Book
    5. Server FAQs
      1. Given that they are extremely complex to implement, will MPP architectures be confined to scientific and technical markets?
      2. Are RISC processors dead, killed by Intel?
      3. What should we think of manufacturers who claim 99.999% availability for their hardware?
      4. How much longer will system performance continue to increase?
      5. Compare and contrast the three major multiprocessor architectures: SMP, massively parallel and cluster
      6. Machine costs decrease every year; how long can this go on?
      7. Does high availability mean that a fault-tolerant machine is needed?
      8. When considering the whole system (hardware, software, network and applications) isn’t the cost of the hardware negligible?
      9. Why were parallel databases a limited success?
      10. Will UNIX-based clusters continue to offer a comfortable advantage over Windows 2003-based equivalents?
  5. Introduction
    1. Transaction Processing and Decision Support
      1. Atomicity
      2. Consistency
      3. Isolation
      4. Durability
    2. Web Servers
    3. Selection Criteria
    4. Endnotes
  6. 1. Architectural Options and Technology Evolution
    1. 1. Processors and Memory
      1. 1.1. Semiconductors and Microprocessors
      2. 1.2. Semiconductor Technology Projections
        1. 1.2.1. DRAM Memory
        2. 1.2.2. Microprocessors
      3. 1.3. Economic Aspects of Microprocessors
      4. 1.4. Embedded Systems
      5. 1.5. Memory Hierarchy
        1. 1.5.1. Characteristics of the Various Levels in a Memory System
        2. 1.5.2. Space-Time Locality Properties
        3. 1.5.3. Cache Design Parameters
      6. 1.6. The Problem of Memory Throughput
        1. 1.6.1. Memory Hierarchy Summary
      7. 1.7. Processor—Memory—I/O Interconnect
        1. 1.7.1. Bus and Crossbar Interconnect
        2. 1.7.2. Other Connections
      8. 1.8. Parallelism
        1. Parallel Systems
        2. Granularity of Parallelism
        3. Sources of Parallelism
        4. 1.8.1. Speedup and Scaleup
        5. 1.8.2. Problems Arising in Multiprocessor Architectures
        6. 1.8.3. Cache Coherence
        7. 1.8.4. Models of Memory Consistency
        8. 1.8.5. Synchronization Mechanisms
        9. 1.8.6. Examples of Implementing Traditional Synchronization Primitives with the Instruction Pair
      9. 1.9. Binary Compatibility Constraints—Java and Architecture Retargeting
        1. Data Representation and Data Exchange
      10. 1.10. Compilation and Interpretation
      11. 1.11. Java
      12. 1.12. Architecture Retargeting
        1. 1.12.1. Compiler Retargeting
        2. 1.12.2. Emulation
        3. 1.12.3. Example of Architecture Retargeting Through Emulation: Bull DPS7000
          1. Static Binary Translation
          2. Dynamic Translation of Object Code
        4. 1.12.4. Example of Dynamic Object Code Translation: Transmeta
      13. 1.13. Microprocessor Evolution
        1. 1.13.1. Traditional Performance Improvement Techniques
        2. 1.13.2. Processor Structures: Pipelines and Superscalarity
        3. 1.13.3. Basic Pipelined Processor
        4. 1.13.4. Superscalar Processors
        5. 1.13.5. Comparison of the Superscalar and Deeply-Pipelined Structures
        6. 1.13.6. VLIW Processor
        7. 1.13.7. Speculative Execution
        8. 1.13.8. Out-of-Order Execution and Register Renaming
        9. 1.13.9. Branch Prediction
        10. 1.13.10. Dynamic Translation of Code
        11. 1.13.11. Architecture Evolution
        12. 1.13.12. Implementation Evolution
          1. High-degree Superscalar
          2. EPIC
        13. 1.13.13. Trace cache
          1. SMT (Simultaneous MultiThreading)
          2. CMP (Chip MultiProcessing)
          3. Intelligent Memory
          4. Configurable processors
      14. 1.14. Economic Factors
      15. 1.15. Formal Verification
      16. 1.16. Memory
        1. 1.16.1. Intelligent Memory
      17. 1.17. Endnotes
    2. 2. I/O
      1. 2.1. PCI, SCSI, and Fibre Channel
      2. 2.2. SCSI and Fibre Channel
      3. 2.3. ATA
      4. 2.4. A New I/O Architecture: InfiniBand
      5. 2.5. Virtual Interface Architecture
      6. 2.6. Data Storage
        1. 2.6.1. Magnetic Disks
      7. 2.7. Networks and Communications Subsystems
        1. 2.7.1. Network Technologies
        2. 2.7.2. Server Support for Communications
        3. 2.7.3. Reducing the Number of Interrupts
          1. Reducing Copying
          2. Data Consistency
          3. New Generation of Switches
      8. 2.8. Input Output Evolution
        1. 2.8.1. I/O
        2. 2.8.2. Disk Evolution
        3. 2.8.3. Intelligent Disks
        4. 2.8.4. Networks and Network Connections
      9. 2.9. Endnotes
    3. 3. Evolution of Software Technology
      1. 3.1. Virtual Memory and 64-Bit Architecture
        1. 3.1.1. Virtual Memory
        2. 3.1.2. Virtual Address Spaces
        3. 3.1.3. Virtual Address Translation Mechanisms
        4. 3.1.4. 64-Bit Architecture
      2. 3.2. Operating Systems
        1. Operating System Market Share
        2. 3.2.1. Operating Systems Functionality
          1. Scalability
          2. Reliability, Availability, and Servicability (RAS)
          3. Distributed Services and Internet Support
          4. Systems Management
          5. Simultaneous Support of Various Isolated Workloads
        3. 3.2.2. Operating Systems: a Conclusion
      3. 3.3. Client/Server Applications and Middleware
        1. 3.3.1. Client/Server Architecture Models and Middleware Components
        2. 3.3.2. Components of Client/Server Middleware
        3. 3.3.3. Web Servers
        4. 3.3.4. Transactional Monitors
        5. 3.3.5. RPC and Message-Oriented Middleware
        6. 3.3.6. RPC
        7. 3.3.7. MOM: Message-Oriented Middleware
        8. 3.3.8. Distributed Object Model
        9. 3.3.9. Database Access Techniques
        10. 3.3.10. Enterprise Java Beans—A Component-Oriented Application Model
        11. 3.3.11. Intranet, Extranet, Internet
        12. 3.3.12. Basic Technologies Used in Web Servers
        13. 3.3.13. Script Languages
        14. 3.3.14. Mobile Code and Data Exchange
        15. 3.3.15. Agents
      4. 3.4. Security
        1. 3.4.1. Security Concepts
        2. 3.4.2. Some Security Technologies
        3. 3.4.3. Methodological Step-by-Step Implementation of Security
      5. 3.5. Systems Administration
      6. 3.6. Software Evolution
        1. 3.6.1. Economic Model
        2. 3.6.2. Software Development
        3. 3.6.3. Integration of Enterprise Applications
      7. 3.7. Endnotes
  7. 2. System Architecture Options
    1. 4. Symmetrical (Tightly-Coupled) Multiprocessors
      1. 4.1. SMPs: Hardware Limitations
        1. 4.1.1. NUMA
      2. 4.2. Adapting Software to an SMP
        1. 4.2.1. Application Software, SMP Programming Model, and Threads
        2. 4.2.2. Operating systems
          1. Kernel Characteristics
          2. Locking
      3. 4.3. SMP Architectures with a Moderate Number of Processors (<= 8)
        1. 4.3.1. Four to Eight Processor Servers based on AMD Opteron
        2. 4.3.2. INTEL IA-32 and IA-64 Based 4-Way Servers
          1. IA-32: Xeon-based Four-Way Servers
          2. IA-64: Itanium-2 based INTEL SR870NB4
          3. Extending the 4-Way Intel Systems
        3. 4.3.3. Crossbar-based Architectures
      4. 4.4. Multiprocessors with Many Processors (More than 16)
        1. 4.4.1. Fujitsu PrimePower
        2. 4.4.2. HP Superdome
        3. 4.4.3. IBM pSeries 690
        4. 4.4.4. IBM eServer z900
        5. 4.4.5. 16-way Intel Server—Itanium 2 plus E8870 Chipset
        6. 4.4.6. Sun 3800, 4800, and 6800
        7. 4.4.7. CC-NUMA and COMA Architectures
        8. 4.4.8. CC-NUMA Architecture
        9. 4.4.9. Locality
        10. 4.4.10. COMA (Cache-Only Memory Architecture)
      5. 4.5. SMP, CC-NUMA, COMA: a Summary
      6. 4.6. Performance Improvement Provided by SMP
      7. 4.7. Advantages and Disadvantages of SMP Architecture
        1. 4.7.1. Systems Partitioning
        2. 4.7.2. Techniques of Partitioning
        3. 4.7.3. Workload Managers
      8. 4.8. Endnotes
    2. 5. Clusters and Massively Parallel Machines
      1. 5.1. Clusters
        1. 5.1.1. Example of a UNIX cluster—IBM Cluster 1600
        2. 5.1.2. Microsoft Cluster Service (MSCS)
        3. 5.1.3. Shared-memory Clusters
        4. 5.1.4. IBM Sysplex
        5. 5.1.5. SGI Altix 3000
      2. 5.2. Advantages and Disadvantages of Cluster Architecture
      3. 5.3. Massively Parallel Machines (MPP)
        1. 5.3.1. MPP Interconnect Network Characteristics
        2. 5.3.2. IBM Cluster 1600 for High Computing Performance
        3. 5.3.3. NCR WorldMark 5250
      4. 5.4. Advantages and Disadvantages of MPP Architecture
        1. 5.4.1. Networks of workstations, Computing Grids, Global and Peer-to-Peer Computation
        2. 5.4.2. Networks of workstations
        3. 5.4.3. GRID Computing
        4. 5.4.4. Global Computing (GC) and Peer-to-Peer (P2P)
      5. 5.5. Networks Used to Build Supercomputers
      6. 5.6. SMPs, Clusters, and MPPs—a Summary
        1. 5.6.1. Scalability
        2. 5.6.2. Load Balancing
        3. 5.6.3. High Availability
        4. 5.6.4. Configurations with a Large Number of Processors
        5. 5.6.5. Single System Image
        6. 5.6.6. Programming Model
        7. 5.6.7. Integrating New Technologies
        8. 5.6.8. Ease of maintenance
      7. 5.7. Flexible SMP-Cluster Architecture
        1. 5.7.1. Note on Server Consolidation
          1. Vector Architecture Example: the NEC SX-6
      8. 5.8. Endnotes
    3. 6. Data Storage
      1. 6.1. Data Storage
      2. 6.2. Storage Issues
      3. 6.3. Functional Levels: File Systems
      4. 6.4. Optimized File Systems: Log Structured File System
      5. 6.5. Parallel File Systems
      6. 6.6. Remote File Access: NFS, CIFS and DAFS
        1. 6.6.1. NFS Network File System
        2. 6.6.2. Common Internet File System
        3. 6.6.3. DAFS: Direct Access File System
      7. 6.7. JBOD, SBOD, and RAID Disk Organization
        1. 6.7.1. JBOD and SBOD Disk Organization
        2. 6.7.2. RAID Organization
      8. 6.8. Storage Virtualization
      9. 6.9. Scatter Reads and Gather Writes
        1. 6.9.1. Data Update
      10. 6.10. Comparing the Various RAID Levels
      11. 6.11. Performance
      12. 6.12. MAID
        1. Intelligent Discs
      13. 6.13. Architectural Options for RAID Implementations
      14. 6.14. Architectural Options for Storage Virtualization
      15. 6.15. Storage Architectures
      16. 6.16. The Integration of Fibre Channel and the Internet
      17. 6.17. Integration of SAN and NAS within a Single Architecture
      18. 6.18. Storage Architecture Options: Summary
      19. 6.19. SNIA Architecture Model
      20. 6.20. Storage Management
      21. 6.21. Data Compression
        1. 6.21.1. Data Compression
        2. 6.21.2. Compression Techniques
        3. 6.21.3. Dictionary-based Compression
        4. 6.21.4. Fixed Bit Length Packing
        5. 6.21.5. Run Length Encoding (RLE)
        6. 6.21.6. Huffman Encoding
        7. 6.21.7. Static Huffman Encoding
        8. 6.21.8. Adaptive Huffman Encoding
        9. 6.21.9. LZ77 Encoding
        10. 6.21.10. Lempel-Ziv-Welch Encoding (LZW)
        11. 6.21.11. Arithmetic Coding
        12. 6.21.12. Closing Comments
        13. 6.21.13. Considerations in Implementing Compression
      22. 6.22. Commercial Storage Subsystems
        1. 6.22.1. Auspex Series 3000
        2. 6.22.2. BlueArc
        3. 6.22.3. EMC Symmetrix/Celerra
        4. 6.22.4. EMC Symmetrix DMX Series
        5. 6.22.5. IBM ESS
      23. 6.23. Data Backup and Restore
        1. 6.23.1. Incremental Backup
        2. 6.23.2. Differential backup
        3. 6.23.3. Incremental and Differential Backup
        4. 6.23.4. Progressive backup
        5. 6.23.5. Fast Complete Backup
        6. 6.23.6. Complete backup in a RAID 1 environment
        7. 6.23.7. Data Snapshot
        8. 6.23.8. Backup and Restore in a DBMS Context
        9. 6.23.9. Real-time Data Copy
      24. 6.24. Resource Optimization in Backup and Restore
        1. Data Life Cycle
      25. 6.25. Technologies Supporting Backed-up Data
        1. 6.25.1. Tape RAID (RAIT)
        2. 6.25.2. Tape Virtualization
      26. 6.26. Data Archiving
        1. 6.26.1. Traditional Archiving
        2. 6.26.2. Storage of Reference Information
      27. 6.27. Endnotes
    4. 7. Systems Performance and Estimation Techniques
      1. 7.1. Systems Performance and Estimation Techniques
      2. 7.2. Processor-level Performance
      3. 7.3. Embedded Systems
      4. 7.4. System-level performance
        1. 7.4.1. SPEC system benchmarks
        2. 7.4.2. SFS system level file server
        3. 7.4.3. SPECjbb2000
        4. 7.4.4. SPECjAppServer2002
        5. 7.4.5. SPECweb99
        6. 7.4.6. SPECjvm98
        7. 7.4.7. SPEC_HPC2002
        8. 7.4.8. SPEC OMP2001
        9. 7.4.9. SPECmail2001
      5. 7.5. The TPC
        1. 7.5.1. TPC-C Transactional Benchmark
        2. 7.5.2. The limitations of TPC-C
        3. 7.5.3. TPC-H and TPC-R: decision support benchmarks
        4. 7.5.4. TPC-W: commercial web applications
          1. TPC-E: an Interesting Attempt
      6. 7.6. Storage Subsystems Performance
        1. 7.6.1. Benchmarks: final words
      7. 7.7. Comparing the Performance of Architectural Approaches
        1. 7.7.1. Analyzing TPC-C results
      8. 7.8. Performance as a First-Class Citizen
        1. 7.8.1. Blank sheet of paper systems design and modeling
        2. 7.8.2. Modeling starting from an existing system
      9. 7.9. Modeling Strategy
      10. 7.10. Operational Analysis
        1. 7.10.1. Resolution of the problem
        2. 7.10.2. Taking measurements
      11. 7.11. Empirical Rules of Systems Sizing
      12. 7.12. Capacity Planning
      13. 7.13. Endnotes
    5. 8. DBMS and Server Architectures
      1. 8.1. Architecture Models
      2. 8.2. Problems of Parallel DBMS
      3. 8.3. Architecture of Parallel DBMS
        1. 8.3.1. Data partitioning
      4. 8.4. IBM DB2 UDB Enterprise
      5. 8.5. Oracle Real Application Cluster
      6. 8.6. Summary: DBMS Architecture Comparisons
        1. 8.6.1. Share Everything architecture (SMP)
        2. 8.6.2. Shared Disks architecture
        3. 8.6.3. Share Nothing architecture
      7. 8.7. Endnotes
    6. 9. The Terminology of High-Availability Systems
      1. The Terminology of High-Availability Systems
      2. 9.1. Basic Terminology and Concepts
      3. 9.2. Failure Modes
      4. 9.3. System Availability Characteristics
        1. Metrics related to the concept of failure
        2. Metrics related to the concept of maintainability
        3. Metrics related to system availability
        4. Metrics related to the concept of service
        5. 9.3.1. Summary diagram
        6. 9.3.2. Analysis of failure causes
      5. 9.4. The Principles of High-Availability Systems Design
        1. 9.4.1. The concept of system state
        2. 9.4.2. Principles of design
          1. Modularity
          2. Fail Fast
          3. Independence of failure modes
          4. Redundancy and repair
          5. Eliminating single points of failure
        3. 9.4.3. Implementation of the principles of design
      6. 9.5. Endnotes
    7. 10. Hardware and Software Solutions for High Availability
      1. 10.1. Hardware-based Solutions
        1. 10.1.1. Stratus
          1. Pair and Spare
        2. 10.1.2. Stratus ftServer Series
        3. 10.1.3. Sun Microsystems System NETRAft 1800
        4. 10.1.4. IBM zSeries
      2. 10.2. Software-based solutions
        1. 10.2.1. Tandem’s Himalaya S7000 NonStop System
        2. 10.2.2. UNIX and Windows Cluster Solutions
        3. 10.2.3. UNIX Cluster Example: IBM’s HACMP
        4. 10.2.4. Hot standby, or simple failover
        5. 10.2.5. Mutual takeover or partitioned workload
        6. 10.2.6. Cluster multiprocessing
        7. 10.2.7. Microsoft Cluster Server (MSCS)
        8. 10.2.8. Functional overview of Cluster Services
        9. 10.2.9. SafeKit
      3. 10.3. Disaster Recovery
        1. Business Continuity
      4. 10.4. Estimating the Availability of Systems
        1. 10.4.1. Predicting faults: Failure Modes and Effects Analysis (FMEA) and Failure Tree Analysis (FTA)
        2. 10.4.2. Failure Modes and Effects Analysis (FMEA)
        3. 10.4.3. Failure Tree Analysis (FTA)
        4. 10.4.4. Quantitative estimate of availability
        5. 10.4.5. Markov Chains
        6. 10.4.6. Models of growth of the reliability of software
      5. 10.5. High-Availability Systems: Conclusions
        1. The basic system
        2. Hardware-based solutions
        3. Standby systems
        4. Participative redundancy/load-sharing
      6. 10.6. High-Availability Systems: Future Trends
      7. 10.7. Endnotes
    8. 11. Selection Criteria and Total Cost of Ownership
      1. 11.1. Selection Criteria
      2. 11.2. The Traditional Technology Life Cycle
      3. 11.3. Perception of the Potential of a Technology
      4. 11.4. Total Cost of Possession
      5. 11.5. Endnotes
    9. 12. Conclusions and Prospects
      1. 12.1. Part 1: Architectures
      2. 12.2. Application Architecture
      3. 12.3. Microprocessor Architecture
      4. 12.4. SMP Server Architecture
        1. 12.4.1. Extensible base SMP
        2. 12.4.2. Single-chip multiprocessor
        3. 12.4.3. Cluster and MPP architectures
      5. 12.5. High-Availability Systems Architecture
      6. 12.6. A General System Architecture
      7. 12.7. Data Storage
      8. 12.8. Virtualization
      9. 12.9. Part 2: Final Word
      10. 12.10. Endnotes
  8. Bibliography