This new guide covers everything a newcomer to clustering will need to plan, build, and deploy a high-performance Linux cluster. The book focuses on clustering for high-performance computation, although much of its information also applies to clustering for high-availability (failover and disaster recovery). The book discusses the key tools you'll need to get started, including good practices to use while exploring the tools and growing a system. You'll learn about planning, hardware choices, bulk installation of Linux on multiple systems, and other basic considerations. Then, you'll learn about software options that can save you hours--or even weeks--of deployment time.
Since a wide variety of options exist in each area of clustering software, the author discusses the pros and cons of the major free software projects and chooses those that are most likely to be helpful to new cluster administrators and programmers. A few of the projects introduced in the book include:
MPI, the most popular programming library for clusters. This book offers simple but realistic introductory examples along with some pointers for advanced use.
OSCAR and Rocks, two comprehensiveinstallation and administrative systems
openMosix (a convenient tool for distributing jobs), Linux kernel extensions that migrate processes transparently for load balancing
PVFS, one of the parallel filesystems that make clustering I/O easier
C3, a set of commands for administering multiple systems
Ganglia, OpenPBS, and cloning tools (Kickstart, SIS and G4U) are also covered. The book looks at cluster installation packages (OSCAR & Rocks) and then considers the core packages individually for greater depth or for folks wishing to do a custom installation. Guidelines for debugging, profiling, performance tuning, and managing jobs from multiple users round out this immensely useful book.
Preface Part I. An Introduction to Clusters 1. Cluster Architecture Modern Computing and the Role of Clusters Types of Clusters Distributed Computing and Clusters Limitations; My Biases 2. Cluster Planning Design Steps Determining Your Cluster's Mission Architecture and Cluster Software Cluster Kits CD-ROM-Based Clusters Benchmarks 3. Cluster Hardware; Design Decisions Environment 4. Linux for Clusters Installing Linux Configuring Services Cluster Security Part II. Getting Started Quickly 5. openMosix What is openMosix? How openMosix Works Selecting an Installation Approach Installing a Precompiled Kernel Using openMosix Recompiling the Kernel; Is openMosix Right for You? 6. OSCAR Why OSCAR? What's in OSCAR Installing OSCAR Security and OSCAR Using switcher; Using LAM/MPI with OSCAR 7. Rocks Installing Rocks Managing Rocks Using MPICH with Rocks Part III. Building Custom Clusters; 8. Cloning Systems Configuring Systems Automating Installations; Notes for OSCAR and Rocks Users 9. Programming Software Programming Languages Selecting a Library LAM/MPI MPICH Other Programming Software Notes for OSCAR Users Notes for Rocks Users 10. Management Software C3 Ganglia Notes for OSCAR and Rocks Users 11. Scheduling Software OpenPBS Notes for OSCAR and Rocks Users 12. Parallel Filesystems PVFS; Using PVFS Notes for OSCAR and Rocks Users Part IV. Cluster Programming 13. Getting Started with MPI MPI A Simple Problem; An MPI Solution I/O with MPI Broadcast Communications; 14. Additional MPI Features More on Point-to-Point Communication; More on Collective Communication Managing Communicators; Packaging Data 15. Designing Parallel Programs Overview; Problem Decomposition Mapping Tasks to Processors Other Considerations 16. Debugging Parallel Programs Debugging and Parallel Programs Avoiding Problems Programming Tools; Rereading Code Tracing with printf Symbolic Debuggers; Using gdb and ddd with MPI Notes for OSCAR and Rocks Users; 17. Profiling Parallel Programs Why Profile? Writing and Optimizing Code Timing Complete Programs Timing C Code Segments; Profilers MPE Customized MPE Logging Notes for OSCAR and Rocks Users Part V. Appendix References Books URLs; Index
Joseph D. Sloan has been working with computers since the mid-1970s. He began using Unix as a graduate student in 1981, first as an applications programmer and later as a system programmer and system administrator. Since 1988 he has taught mathematics and computer science at Lander University. He also manages the networking computer laboratory at Lander, where he can usually be found testing and using the software tools described in this book.