"What can anyone give you greater than now" - William Stafford
Recent technology trends in high-speed/low-latency local area networks has lead to a convergence of hardware in massively parallel processors (MPPs) and Networks of Workstations (NOWs). Relative to traditional MPPs, a NOW offers the potential for better cost-effectiveness, increased scalability, and decreased hardware and software development time. The main differentiating point between NOWs and MPPs will soon be the operating system software.
Unfortunately, modern workstation operating systems do not provide the necessary support for efficient parallel program execution in an environment shared with sequential applications. The goal of our research is to pool resources in a NOW to provide better performance for both parallel and sequential applications. To realize this goal, the operating system must support gang-scheduling of parallel programs, identify idle resources in the network (CPU, disk capacity/bandwidth, memory capacity, network bandwidth), allow for process migration to support dynamic load balancing, and provide support for fast inter-process communication for both the operating system and user-level applications.
Our system, called GLUnix, is built as a layer on top of existing operating systems. This strategy makes the system quickly portable, tracks vendor software upgrades, and reduces development time. Our work is an example of "higher-order" systems research where new systems can be built quickly by mapping new services onto the functionality provided by the layer beneath.
GLUnix has been running on a 100 node UltraSparc cluster connected by a Myrinet network since approximately August of 1996. GLUnix has been running on smaller clusters since 1995. GLUnix has supported over 130 users running over 1 million jobs as of July 1997. GLUnix runs on Solaris 2.3-2.6.
GLUnix currently supports parallel and sequential jobs, both interactive and batch style execution. GLUnix jobs are tightly integrated with the user's shell, automatically piping input and output to and from the user's shell and supporting standard Unix job control. GLUnix monitors idle resources (currently just CPU cycles) and performs execution-time load balancing. GLUnix implements much of a single system image, providing a cluster-wide global pid for each GLUnix process, enabling the status of GLUnix jobs to be queried from any node and allowing users to signal jobs from any node in the cluster. Existing application binaries can be run unmodified under GLUnix. A naming and reservation system is also provided. Batch jobs can be submitted through a batch system which regulates the load batch jobs place on the system. GLUnix supports cluster sizes of 1 node to 330 nodes (theoretically).
GLUnix does not currently provide support for checkpointing or migration, since this cannot be transparently done for existing binaries at the user level. GLUnix also does not currently coschedule parallel applications or have special SMP support.
A first public release of the GLUnix source code should be made to this site during the week of October 20th.
There is little functional difference between GLUnix and LSF as they stand today, but the targeted goals of GLUnix and LSF differ significantly.
Both do some idle resource detection for load balancing. GLUnix has better support for parallel programs and has the basis for a single system image; process id's in GLUnix are globally valid -- you can kill a GLUnix process from any node.
However, the fundamental difference is that GLUnix is really the foundation for more advanced research studies into a wide range of areas. These include: