This thesis begins with an overview of emerging swarm and the architecture design trends for swarm applications. The swarm faces challenges from the scarce and variable WAN bandwidth and the heterogeneous compute environment (from low-power microcontrollers to powerful compute units). When network resources or compute resources are insufficient, non-adaptive applications will suffer from increased latency or degraded accuracy. Existing approaches that support adaptation either require extensive developer effort to write manual policies or are limited to application-specific solutions.
This thesis proposes a systematic and quantitative approach to build adaptive swarm applications. The solution has three stages: (1) a set of programming abstractions that allow developers to express adaptation options; (2) an automatic profiling tool that learns an accurate profile to characterize resource demands and application performance; (3) a runtime system responsive to environment changes, maximizing application performance guided by the learned profile. We evaluate our methodology with adaptations to network resources and compute resources.
For network resources, we present a complete design and implementation of the framework AWStream and several swarm applications: pedestrian detection, augmented reality, and monitoring log analysis. Our experiments show that all applications can achieve sub-second latency with nominal accuracy drops. For compute resources, we focus on improving the profiling efficiency—using Bayesian Optimization to address the large parameter space and profile transfer to address device heterogeneity.