Tuning mechanism for the Lifeline GLB

In the lifeline-based global load balancer library, workers on a host perform a certain amount of work before checking the runtime and performing load-balance operations if needed. The granularity is the amount of work performed is defined by an integer. If this value is too small, overhead will appear. On the contrary if it is too large, starvation will occur. Both are detrimental to the performance of the system, it is therefore critical to find a good compromise.

Given that the adequate value to use will depend on the computation being run with the lifeline-based GLB, it is not possible to know “a priori” what a good value will be. The tuning mechanism we developped monitors the most recent situation (last ~500ms) to make a determination on whether the grain currently in use is either too large or too small [1], [2]. It then adjusts the value dynamically throughout the computation.

See the tuning mechanism in action:

References

  1. Self-adjusting task granularity for Global load balancer library on clusters of many-core processors
    Patrick Finnerty, Tomio Kamada, and Chikara Ohta
    In Proceedings of the Eleventh International Workshop on Programming Models and Applications for Multicores and Manycores, San Diego, California, Feb 2020
  2. A self-adjusting task granularity mechanism for the Java lifeline-based global load balancer library on many-core clusters
    Patrick Finnerty, Tomio Kamada, and Chikara Ohta
    Concurrency and Computation: Practice and Experience, Feb 2021



Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • Reinforcement Learning with Open Spiel (Part 2)
  • gnuplot
  • Reinforcement Learning with Open Spiel (Part 1)
  • HanDist
  • MPI-JUnit