Skip to:Content
|
Bottom
Cover image for Linux cluster architecture
Title:
Linux cluster architecture
Personal Author:
Publication Information:
Indianapolis, Ind. : Sams, 2002
ISBN:
9780672323683

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000010061311 QA76.58 V73 2002 Open Access Book Book
Searching...

On Order

Summary

Summary

Cluster computers provide a low-cost alternative to multiprocessor systems for many applications. Building a cluster computer is within the reach of any computer user with solid C programming skills and a knowledge of operating systems, hardware, and networking. This book leads you through the design and assembly of such a system, and shows you how to mearsure and tune its overall performance.

A cluster computer is a multicomputer, a network of node computers running distributed software that makes them work together as a team. Distributed software turns a collection of networked computers into a distributed system. It presents the user with a single-system image and gives the system its personality. Software can turn a network of computers into a transaction processor, a supercomputer, or even a novel design of your own.

Some of the techniques used in this book's distributed algorithms might be new to many readers, so several of the chapters are dedicated to such topics. You will learn about the hardware needed to network several PCs, the operating system files that need to be changed to support that network, and the multitasking and the interprocess communications skills needed to put the network to good use.

Finally, there is a simple distributed transaction processing application in the book. Readers can experiment with it, customize it, or use it as a basis for something completely different.


Author Notes

Alex Vrenios is the founder and principal analyst at the Distributed Systems Research Lab


Table of Contents

Introductionp. 1
1 Linux Cluster Computer Fundamentalsp. 3
Why a Cluster?p. 3
Architectural Design Featuresp. 5
Scalabilityp. 6
High Availabilityp. 6
Fault Tolerancep. 6
Feature Interdependencep. 7
Cluster Applicationsp. 7
Supercomputersp. 7
Transaction Processorsp. 8
The Sample System: The Master-Slave Interfacep. 8
Reader Skills and OS Informationp. 9
The Remainder of This Bookp. 9
Summaryp. 11
Further Readingp. 12
2 Multiprocessor Architecturep. 13
Alternative Computer Architecturesp. 14
Overlap with Multiple CPUsp. 15
A Taxonomy for Multiprocessorsp. 17
Tightly Versus Loosely Coupled Multiprocessorsp. 19
Distributed Shared Memory Systemsp. 21
Cluster Architecturesp. 21
Hardware Optionsp. 22
Node Computersp. 22
Interconnection Networksp. 23
Software Optionsp. 26
Performance Issuesp. 26
Our Cluster System's Architecturep. 27
Summaryp. 28
Further Readingp. 29
3 Inter-Process Communicationp. 31
Subtasking with fork and execlp. 31
Sending Signals and Handling Received Signalsp. 35
Using Shared Memory Areasp. 36
Using Semaphores with Shared Datap. 39
Messaging: UDP Versus TCPp. 45
IPC with UDPp. 45
IPC with TCP/IPp. 45
Internetworking Protocol Addressesp. 51
Messaging Across the Networkp. 52
Automatically Starting Remote Serversp. 60
Summaryp. 64
Further Readingp. 64
4 Assembling the Hardware for Your Clusterp. 65
Node Processors and Accessoriesp. 65
Hardware Accessoriesp. 66
Network Media and Interfacesp. 68
Switches or Hubs?p. 68
Network Cablingp. 69
Implementing an OSp. 70
Adding Network Support to the OS Installationp. 71
Our Cluster System's Network Topologyp. 71
Summaryp. 72
Further Readingp. 73
5 Configuring the Relevant Operating System Filesp. 75
A Brief Review of the Cluster Configurationp. 75
The Linux root Userp. 76
Logging in as root at the System Promptp. 76
Altering Linux System Files as rootp. 77
Changes to the /etc/hosts Filep. 77
Changes to the /etc/fstab and /etc/exports Filesp. 78
Using NFS with the /etc/fstab and /etc/exports Filesp. 79
Remote Access Securityp. 80
Optional Addition of a /home/chief/.rhosts Filep. 80
Optional Changes to the /etc/passwd Filep. 81
Remote Reference Commandsp. 82
Summaryp. 87
Further Readingp. 88
6 Configuring a User Environment for Software Developmentp. 89
An Overview of the Linux File Systemp. 89
Your /home/chief Home Directoryp. 91
Using the C Compilerp. 91
Using the make Utilityp. 96
Backup and Recoveryp. 98
Summaryp. 99
Further Readingp. 100
7 The Master-Slave Interface Software Architecturep. 101
The Client Processp. 101
The Serial Server Processp. 105
The Concurrent Server Processp. 108
The Distributed Server Processp. 114
How the Master-Slave Interface Worksp. 119
System Limitationsp. 121
Summaryp. 121
Further Readingp. 121
8 External Performance Measurement and Analysisp. 123
Query Generationp. 124
Inter-Arrival Time Distributionsp. 126
Checking for an Accurate Responsep. 130
Estimating and Displaying Network Utilizationp. 131
Displaying Response Time Statisticsp. 140
The External Performance of Your MSI Serverp. 147
Summaryp. 150
Further Readingp. 151
9 Internal Performance Measurement and Timingp. 153
Profiling Software Executionp. 154
Distributed System Execution Profilingp. 155
Event Timing Techniquesp. 157
Execution Phase Timing Plotsp. 159
System Performance Improvementsp. 162
Final MSI Performance Resultsp. 165
Summaryp. 168
Further Readingp. 169
10 Robust Softwarep. 171
Alarm Exitsp. 172
Timeoutsp. 173
Subtask Restartsp. 175
Main Task Restartsp. 177
Reattaching Shared Memoryp. 178
Reliable UDP Communicationp. 178
Summaryp. 179
Further Readingp. 179
11 Further Explorationsp. 181
Beowulf-like Supercomputersp. 182
Supercomputer Applicationsp. 183
Ad Hoc Peer-to-Peer Networksp. 186
Future Applicationsp. 187
Summaryp. 190
Further Readingp. 190
12 Conclusionsp. 193
Multiprocessor Architecturesp. 194
Cluster Configurationp. 194
Distributed Applicationsp. 195
Final Commentsp. 195
Appendix
A The Source Codep. 197
Query-Generating Clientp. 198
Master-Slave Interfacep. 205
Near Real-Time Performancep. 225
Makefilep. 233
Indexp. 235
Go to:Top of Page