Mobile, resource-constrained, battery-powered devices have emerged as key access points to the world's digital infrastructure. To enable our understanding of the performance of these devices, we must be able to efficiently collect accurate profile data from these devices after they are deployed in the field. Moreover, understanding the full-system power and energy behavior of these systems for real programs is vital if users are to accurately characterize, model, and develop effective techniques for extending battery life. Unfortunately, extant approaches to measuring and characterizing power and energy consumption focus on high-end processors, do not consider the complete device, employ inaccurate (program-only) simulation, rely on inaccurate, course-grained battery level data from the device, or employ expensive power measurement tools that are difficult to share across research groups and students.
To address these issues, we developed remote performance monitor (RPM). The first component of RPM is an efficient technique for collecting accurate sample-based program profiles. The key to the efficacy of this technique is that we identify when to sample using the repeating patterns in program execution, phases. To enable fine-grained, full-system characterization of embedded computers, we couple and unify phase-aware profiling, hardware performance monitoring, and power and energy measurement within RPM. RPM consists of a tightly coupled set of components which (1) control lab equipment for power measurements and analysis, (2) configure target system characteristics at run-time (such as CPU and memory bus speed), (3) collect target system data using on-board hardware performance monitors (HPMs) and (4) provide a remote access interface. Users of RPM can submit and configure experiments that execute programs on the RPM target device (currently a Stargate sensor platform that is very similar to an HP iPAQ) to collect very accurate power, energy, and CPU performance data with high resolution.