Distributed Multi-User Compilation System is a system that allows a group of users to share a compilation farm. Each compilation request from each user will be sent to the fastest available machine, every time.
Here are some key features of "Distributed Multi User Compilation System":
· Supports multiple users compiling simultaneously, and scales well to handle the new loads.
· Supports multiple operating systems in the compilation farm.
· Uses all processors of a multi-processor compilation host.
· Makes best use of compilation hosts with widely differing CPU speeds.
· Guarantees that a compilation host will not be overloaded by compilations.
· Takes into account the load on a host caused by non-compilation tasks.
· Supports the dynamic addition and removal of hosts to the compilation farm.
· Works with distcc, which need not be altered in any way.
DMUCS consists of these (main) programs:
· dmucs: the "host-server". This application reads a configuration file indicating the number of CPUs and the "power" of each potential host in the compilation farm. It then receives over the network:
· load average information from each compilation host.
· host requests from compile tasks that need remote hosts on which to run.
· information requests from monitoring applications.
· status requests from an administrator.
· dmucs maintains the database of hosts in the compilation farm, and assigns hosts to compilation tasks, giving out the best host/cpu available when the compilation task asks.
· gethost: a compilation task uses gethost get a host/cpu from the dmucs server. In general, a makefile will perform a compilation this way:
· gethost distcc gcc ...
· gethost contacts the server to get a host, which it puts into the environment variable DISTCC_HOSTS. gethost then calls the program given to it. After that program ends, gethost releases the assigned host back to the dmucs server.
· loadavg: the administrator of the compilation farm must start this application on each compilation host. loadavg sends the load average of the compilation host to the dmucs server periodically. The dmucs server will "downgrade" a compilation host if the host's load averages goes too high.
· monitor: the administrator (or anyone) may use this program to monitor the busy-ness of the compilation farm. It displays which hosts/cpus are available in the compilation farm, which hosts/cpus have compilation tasks assigned to them, which hosts have been made administratively unavailable, and which hosts are "silent" - i.e., the dmucs server has not received a load average message from the compilation host for a while.