Active Harmony

Complex software systems today can be characterized by distribution, heterogeneity, and changing resource requirements and capacities. These attributes make static systems unsuitable for a wide range of tasks that need high performance, or are long-lived. In order to achieve high performance in such environments for more than a short period of time, systems need to dynamically adapt to changing resource capacities and application requirements. We have designed and built Active Harmony, a framework that supports distributed execution of computational objects in such environments through the following innovations:

  • Dynamic execution environment: Dynamic adaptation to network and resource capacities, both when computational objects are created, and when application requirements or resource capacities change. Active Harmony will attempt to maximize data affinity and load balancing through intelligent resource allocation and object migration.
  • Automatic application adaptation: A framework that permits runtime adaptation of algorithms, data distribution, and load balancing. Active Harmony will export a detailed metric interface to applications, allowing them to access processor, network, and operating system parameters. Applications export tuning options to the system, which can then automatically optimize resource allocation. Measurement and tuning can therefore become first class objects in the programming model. Programmers can write applications that include ways to adapt computation to observed performance and changing conditions.
  • Shared-data interfaces: Active Harmony will support shared-memory semantics among computational objects regardless of location, allowing both peer-to-peer and client-server computations to exploit the simplified programming model and fine-grained sharing permitted by traditional shared-memory environments. Innovations include support for heterogeneity of both data and program code, a multi-level security scheme that adapts data and code interfaces to the degree of trust between computational objects, and support for the dynamic execution environment.

The unique aspect of the Active Harmony work is the emphasis on adapting to heterogeneous and changing environments. Other researchers have studied some of the constituent issues that we plan to address. Our emphasis is on the inter-relationships between objects in the system. The primary result of this research will be an infrastructure and a set of algorithms that permit global resource optimization under changing conditions.

The Active Harmony project has been funded by DOE and NSF. Keleher and Hollingsworth are supported by NSF CAREER Young Investigator awards.


We actively maintain a list of our publications and any related projects. We also maintain a page for our staff and project members, so you know who to blame.


Active Harmony 4.6.0 was released on March 3, 2016, and is made available through the GNU Lesser General Public license (LGPL) version 3.0. Additionally, an archive of past releases is also available for download. Of course, the best way to keep up with the latest features and patches is by visiting our code repository site:


Want to get more information about Active Harmony without downloading it? Check out the user manual, which is available in HTML or PDF formats. The latest versions of all Active Harmony documents can always been found here.