Main Menu


Distros
Computational
Load Balancing
High Availability
Software
Documentation
Books
Vendors
Useful Links
News & Print
Etc...
About Us


Back To Main Page

Sitemap
Title: Linux Cluster Architecture

Author: Alex Vrenios
Publisher: Sams Publishing
ISBN: 0672323680

Reviewer: Joe Greenseid

I have tried reading a couple other Linux clustering books so far, without much success at finding one that I both really liked and found useful, so I was not sure what I would think of this book. At this point, I am still not entirely sure what I think of this book, with my feelings split.

The main them of the book is to walk the reader through the construction of a simple cluster of Linux boxes, and then the creation of a master-slave interface software architecture. The structure of the book in working towards this goal is well organized.

The book is 12 chapters long, and has a feel of being divided into two main parts. The first three chapters introduce clustering and multiprocessor architectures and interprocess communication. The next two involve actually assembling the hardware you have purchased into systems, and then configuring Linux on them. The last chapter in the first half of the book is about configuring an environment in which you can do software development (it discusses, among other things, using a C compiler and make).

The majority of the second half of the book is devoted to the final development and tweaking of the master-slave interface, as well as how to do various types of performance measuring and testing, and some hints at how to make software more robust. The last couple of chapters are summary type chapters, wrapping up what the book has covered, and also glancing at what other people are doing with Linux clustering.

Throughout the book, the underlying thread is the construction of this master-slave interface. Almost every single chapter includes C code that helps the reader work towards this goal. The code samples start in chapter 3, and continue in almost every chapter until the end of the book. Each example is used to introduce the reader to a new idea or topic (subtasking using fork and exec, shared memory, semaphores, to mention a few examples). Throughout chapters three through six, there are a series of short examples which demonstrate many of the ideas that will be covered in the final master-slave interface, including some simpler examples of it. In chapter seven, the final construction of this master-slave interface takes place, with chapters eight through ten giving examples of how to do performance measuring and testing.

I thought that this idea of working towards the construction of a specific example of a cluster-like architecture was interesting, and it tied the book together well, so that the chapters didn't seem disjoint, or like a collection of unrelated material, it flowed well. I enjoyed reading through the code, since I had not really ever done this type of programming before. The code samples were for the most part well commented, and mostly bug free (one or two little things on the system I was working on needed to be fixed, but they were pretty straight-forward fixes, nothing too complicated).

However, I also had the feeling that this wasn't entirely about Linux clustering. While the author sets up a Linux cluster for the reader to develop their software on and for, I think that with a little general Unix programming knowledge, the master-client architecture could be ported to most any Unix with little trouble.

Therein lies the split feelings that I have towards this book -- I thought the material was interesting, but I never got the feeling that I was learning specifically about Linux clustering, other than the fact that Linux is a cheap, yet very viable, alternative to other Unix platforms. Perhaps that is the point the author is trying to make; that there is nothing particularly special about Linux as opposed to other Unixes, except that it is freely available and robust enough to be used in these situations.

In any event, if you are looking for a book that is going to teach you about using Linux to do high performance computing (parallel programming, information about some of the HPC software packages out there, or other related topics), this isn't really going to be the book for you. This book tries to discuss and explain the architecture living below that. If that low level concept explanation is something you'd find interesting, then I think that this book does a good job if helping the reader understand more about that through the tool of actually writing your own programs. In the end, I find the title very appropriate, the book is indeed about the architecture of a Linux cluster.





    This site maintained by Joe Greenseid
    Direct questions or comments to webmaster@lcic.org