Runtime load-shifting of distributed controllers across networked devices
Danilo Pianini, Angelo Filaseta
@DAIS 2023, Lisboa
Summary
Controlling and monitoring large situated systems can be computationally expensive
Heterogeneity of devices impact both controllee and controller
Workloads should be able to run on very different runtimes and hardware
Heavy workloads impact negatively on performance and battery life
Scaling up is not always possible
And even when possible, it is often expensive
Instead of scaling, we want to shift the load at runtime, depending on the context, and across different runtimes!
Analogies
System
Similarity
Difference
Load balancing in cloud systems
shifts computational load to optimize performance
assumes homogeneous (cloud) devices
Mobile code / mobile agents
computational load is designed to be moved across devices
available technologies assume a shared runtime/middleware
Cloud gaming
capable to run the same heavy workload as a local application or as a bidirectional stream
does not loadshift at runtime (requires shutdown and restart)
Abstract architecture
Far Endpoint$\mathcal{F}$ – software component, usually non-local, that provides
means to perform the primary operations required on the target system
through a well-defined API;
Near Endpoint$\mathcal{N}$ – software component the user interacts directly with,
hence, running on a device the user has direct access to, whose goal is to
interact with the Far Endpoint;
Common Data Model$\mathcal{M}$ – a formal (and serialisable) description of
the data exchanged among all the components of the system;
Heavy-duty Executor$\mathcal{H}$ –
software module performing
resource-intensive computational tasks;
this is the component that can be executed and moved on either $\mathcal{F}$ or $\mathcal{N}$
Key idea
Isolate$\mathcal{H}$ from the rest of the system;
Encapsulate the data model in a serialisable shared format $\mathcal{M}$;
Mediate all $\mathcal{N} \rightleftarrows{} \mathcal{F}$ interactions through $\mathcal{H}$ leveraging $\mathcal{M}$