In this work we presented a novel approach to the design of load sharing algorithms for a class of multiprocessor systems. This approach was used in the definition of an adaptive load balancing algorithm, which we call AJBQ, which is successfully implemented on the AT&T 3B4000 UNIX® multiprocessor. The algorithm led to a significant improvement in system performance with a very small overhead, and has been designed to take advantage of software and hardware mechanisms available on the system. The adaptive (i.e., learning) properties of the proposed procedure offer advantages in terms of ability to react to sudden changes in the system configuration and workload, reduced hand-tuning requirements, and robustness with respect to workload/configuration combinations.
A brief performance study of the AJBQ algorithm, including simulation results on a simulation model, and laboratory measurements on a prototype, has been presented. The algorithm performance justified the adoption of a process assignment procedure which requires the collection of information on the state of the system. In fact, we show that the performance improvement with respect to a simple static procedure, such as the Round Robin algorithm, as well as with respect to dynamic procedures, such as JSAQ, is significant. We expect that the adaptive load sharing approach described here will be applicable to a wide range of distributed systems with a centralized resource manager.